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 <gti...@wikimedia.org> wrote:

> On Mon, Dec 25, 2017 at 12:00 PM, Tony Thomas <01tonytho...@gmail.com>
> 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
> Wikitech-l@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to