Take a look at MediaWikitestCase::insertPage https://phabricator.wikimedia.org/source/mediawiki/browse/master/tests/phpunit/MediaWikiTestCase.php;8eaee6fd06d9089ef90032530af9a9d25a52a1fc$997
On 26 December 2017 at 09:58, Tony Thomas <[email protected]> wrote: > Great. This would really help. I just posted the same in our tasks (which > are GCI tasks now) so that people would use it. One more thing, in a unit > test - is it the only way to create a Wikipage and save it to the db ? > > $title = Title::newFromText( 'TestPage' ); > $wikiPage = WikiPage::factory( $title ); > $content = new WikitextContent( $text='this is a test' ); > $wikiPage->doEditContent( $content, $summary='Test commit' ); > > or are there some other simpler ways ? > > > -- > Tony Thomas > https://mediawiki.org/wiki/User:01tonythomas > -- > > On Tue, Dec 26, 2017 at 1:27 AM, Gergo Tisza <[email protected]> wrote: > > > On Mon, Dec 25, 2017 at 12:00 PM, Tony Thomas <[email protected]> > > wrote: > > > > > Came across a situation similar to [1] where I had to call submit() > > > function of a FormSpecialPage during a unit test. We have something > going > > > on in the background, and $this->getUser() needs to return a valid > user. > > > > > > Is there a way to mimic this context inside the unit test, so that I > can > > > manually set a $user in the unit test, and this would be used while > > > performing inner operations ? > > > > > > > No need to mimic, you can just inject it (as long as the special page > > correctly uses $this->getUser() & co instead of using globals, which is > > usually not a problem with special pages) : > > > > $specialPage = $this->newSpecialPage(); > > $context = new DerivativeContext( RequestContext::getMain() ); > > $context->setUser( $user ); > > $context->setRequest( ... ); > > $specialPage->setContext( $context ); > > $res = $specialPage->onSubmit( $input ); > > _______________________________________________ > > Wikitech-l mailing list > > [email protected] > > https://lists.wikimedia.org/mailman/listinfo/wikitech-l > > > _______________________________________________ > Wikitech-l mailing list > [email protected] > https://lists.wikimedia.org/mailman/listinfo/wikitech-l > _______________________________________________ Wikitech-l mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikitech-l
