diff options
Diffstat (limited to 'bin/wiki/vendor/addwiki/mediawiki-datamodel/tests')
13 files changed, 601 insertions, 0 deletions
diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/ContentTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/ContentTest.php new file mode 100644 index 00000000..e412749a --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/ContentTest.php @@ -0,0 +1,30 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\Content; +use PHPUnit_Framework_TestCase; + +class ContentTest extends PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $data, $model ) { + $content = new Content( $data, $model ); + $this->assertEquals( $data, $content->getData() ); + $this->assertEquals( $model, $content->getModel() ); + $this->assertTrue( is_string( $content->getHash() ) ); + $this->assertFalse( $content->hasChanged() ); + } + + public function provideValidConstruction() { + return array( + array( '', null ), + array( 'foo', null ), + array( new \stdClass(), null ), + ); + } + +} +
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/EditInfoTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/EditInfoTest.php new file mode 100644 index 00000000..c3128bca --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/EditInfoTest.php @@ -0,0 +1,51 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\EditInfo; +use PHPUnit_Framework_TestCase; + +/** + * @covers \Mediawiki\DataModel\EditInfo + * @author Addshore + */ +class EditInfoTest extends PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $sum, $minor, $bot ) { + $flags = new EditInfo( $sum, $minor, $bot ); + $this->assertEquals( $sum, $flags->getSummary() ); + $this->assertEquals( $minor, $flags->getMinor() ); + $this->assertEquals( $bot, $flags->getBot() ); + } + + public function provideValidConstruction() { + return array( + array( '', EditInfo::MINOR, EditInfo::BOT ), + array( '', EditInfo::MINOR, EditInfo::NOTBOT ), + array( '', EditInfo::NOTMINOR, EditInfo::BOT ), + array( '', EditInfo::NOTMINOR, EditInfo::NOTBOT ), + array( 'FOO', EditInfo::NOTMINOR, EditInfo::NOTBOT ), + ); + } + + /** + * @dataProvider provideInvalidConstruction + */ + public function testInvalidConstruction( $sum, $minor, $bot ) { + $this->setExpectedException( 'InvalidArgumentException' ); + new EditInfo( $sum, $minor, $bot ); + } + + public function provideInvalidConstruction() { + return array( + array( 1, 2, 3 ), + array( "foo", false, 3 ), + array( "foo", 3, false ), + array( array(), true, false ), + ); + } + +}
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/FileTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/FileTest.php new file mode 100644 index 00000000..0da77bd1 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/FileTest.php @@ -0,0 +1,44 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\File; +use Mediawiki\DataModel\PageIdentifier; + +/** + * @covers \Mediawiki\DataModel\File + * @author Addshore + */ +class FileTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $url ) { + $file = new File( + $url, + new PageIdentifier( $this->newMockTitle(), 1 ), + $this->newMockRevisions() + ); + $this->assertEquals( $url, $file->getUrl() ); + } + + public function provideValidConstruction() { + return array( + array( 'http://upload.wikimedia.org/wikipedia/en/3/39/Journal_of_Geek_Studies_-_logo.jpg' ), + ); + } + + private function newMockTitle() { + return $this->getMockBuilder( '\Mediawiki\DataModel\Title' ) + ->disableOriginalConstructor() + ->getMock(); + } + + private function newMockRevisions() { + return $this->getMockBuilder( '\Mediawiki\DataModel\Revisions' ) + ->disableOriginalConstructor() + ->getMock(); + } + +}
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/LogListTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/LogListTest.php new file mode 100644 index 00000000..1098a8a6 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/LogListTest.php @@ -0,0 +1,25 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\Log; +use Mediawiki\DataModel\LogList; +use Mediawiki\DataModel\PageIdentifier; + +/** + * @covers \Mediawiki\DataModel\LogList + * @author Addshore + */ +class LogListTest extends \PHPUnit_Framework_TestCase { + + public function testJsonRoundTrip() { + $logList = new LogList( array( + new Log( 1, 'ty', 'ac', '2014', 'Addshore', new PageIdentifier( null, 22 ), 'comment', array() ), + new Log( 2, 'ty2', 'ac2', '2015', 'Addbot', new PageIdentifier( null, 33 ), 'comment2', array() ), + ) ); + $json = $logList->jsonSerialize(); + $json = json_decode( json_encode( $json ), true ); + $this->assertEquals( $logList, LogList::jsonDeserialize( $json ) ); + } + +} diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/NamespaceInfoTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/NamespaceInfoTest.php new file mode 100644 index 00000000..4587a8a0 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/NamespaceInfoTest.php @@ -0,0 +1,72 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\NamespaceInfo; + +/** + * @covers \Mediawiki\DataModel\NamespaceInfo + * @author gbirke + */ +class NamespaceInfoTest extends \PHPUnit_Framework_TestCase +{ + /** + * @dataProvider provideValidConstruction + * @param int $id + * @param string $canonicalName + * @param string $localName + * @param string $caseHandling + * @param null $defaultContentModel + * @param array $aliases + */ + public function testValidConstruction($id, $canonicalName, $localName, $caseHandling, $defaultContentModel = null, + $aliases = [] ) { + $namespace = new NamespaceInfo( $id, $canonicalName, $localName, $caseHandling, $defaultContentModel, $aliases ); + $this->assertSame( $id, $namespace->getId() ); + $this->assertSame( $canonicalName, $namespace->getCanonicalName() ); + $this->assertSame( $localName, $namespace->getLocalName() ); + $this->assertSame( $caseHandling, $namespace->getCaseHandling() ); + $this->assertSame( $defaultContentModel, $namespace->getDefaultContentModel() ); + $this->assertSame( $aliases, $namespace->getAliases() ); + } + + public function provideValidConstruction() { + return array( + array( -2, 'Media', 'Media', 'first-letter' ), + array( 0, '', '', 'first-letter' ), + array( 4, 'Project', 'Wikipedia', 'first-letter' ), + array( 2302, 'Gadget definition', 'Gadget definition', 'case-sensitive', 'GadgetDefinition' ), + array( 2302, 'Gadget definition', 'Gadget definition', 'case-sensitive', 'GadgetDefinition', [ 'GD' ] ), + ); + } + + /** + * @param $id + * @param $canonicalName + * @param $localName + * @param $caseHandling + * @param null $defaultContentModel + * @param array $aliases + * + * @dataProvider provideInvalidConstruction + */ + public function testInvalidConstruction($id, $canonicalName, $localName, $caseHandling, $defaultContentModel = null, + $aliases = [] ) { + $this->setExpectedException( 'InvalidArgumentException' ); + new NamespaceInfo( $id, $canonicalName, $localName, $caseHandling, $defaultContentModel, $aliases ); + } + + public function provideInvalidConstruction() { + return array( + array( .5, 'Media', 'Media', 'first-letter' ), + array( '0', '', '', 'first-letter' ), + array( -2, null, 'Media', 'first-letter' ), + array( -2, 'Media', null, 'first-letter' ), + array( 4, 'Project', 'Wikipedia', 'first-letter', 5 ), + array( 2302, null, 'Gadget definition', 'case-sensitive', 'GadgetDefinition' ), + array( 4, 'Project', 'Wikipedia', 'first-letter', 5 ), + array( 4, 'Project', 'Wikipedia', 'first-letter', 'GadgetDefinition', 'notanalias' ), + ); + } + +} diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PageIdentifierTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PageIdentifierTest.php new file mode 100644 index 00000000..42aa8412 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PageIdentifierTest.php @@ -0,0 +1,54 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\PageIdentifier; +use Mediawiki\DataModel\Title; + +/** + * @covers Mediawiki\DataModel\PageIdentifier + */ +class PageIdentifierTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $title, $pageid, $identifiesPage ) { + $pageIdentifier = new PageIdentifier( $title, $pageid ); + if( is_string( $title ) ) { + $this->assertEquals( new Title( $title ), $pageIdentifier->getTitle() ); + } else { + $this->assertEquals( $title, $pageIdentifier->getTitle() ); + } + $this->assertEquals( $pageid, $pageIdentifier->getId() ); + $this->assertEquals( $identifiesPage, $pageIdentifier->identifiesPage() ); + } + + public function provideValidConstruction() { + return array( + array( null, null, false ), + array( new Title( 'Foo' ), null, true ), + array( new Title( 'Foo', 2 ), null, true ), + array( null, 3, true ), + ); + } + + public function provideRoundTripObjects() { + return array( + array( new PageIdentifier( null, null ) ), + array( new PageIdentifier( null, 44 ) ), + array( new PageIdentifier( new Title( 'someTitle', 12 ), null ) ), + array( new PageIdentifier( new Title( 'someTitle', 55 ), 99 ) ), + ); + } + + /** + * @dataProvider provideRoundTripObjects + */ + public function testJsonRoundTrip( PageIdentifier $identifierObject ) { + $json = $identifierObject->jsonSerialize(); + $this->assertEquals( $identifierObject, PageIdentifier::jsonDeserialize( $json ) ); + } + +} +
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PageTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PageTest.php new file mode 100644 index 00000000..cbc31c8c --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PageTest.php @@ -0,0 +1,48 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\Page; +use Mediawiki\DataModel\PageIdentifier; + +/** + * @covers \Mediawiki\DataModel\Page + * @author Addshore + */ +class PageTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $pageIdentifier, $revisions ) { + $page = new Page( $pageIdentifier, $revisions ); + $this->assertEquals( $pageIdentifier, $page->getPageIdentifier() ); + if( is_null( $revisions ) ) { + $this->assertInstanceOf( 'Mediawiki\DataModel\Revisions', $page->getRevisions() ); + } else { + $this->assertEquals( $revisions, $page->getRevisions() ); + } + } + + public function provideValidConstruction() { + return array( + array( null, null ), + array( null, $this->newMockRevisions() ), + array( new PageIdentifier( $this->newMockTitle(), 1 ), $this->newMockRevisions() ), + array( new PageIdentifier( $this->newMockTitle(), 123 ), null ), + ); + } + + private function newMockTitle() { + return $this->getMockBuilder( '\Mediawiki\DataModel\Title' ) + ->disableOriginalConstructor() + ->getMock(); + } + + private function newMockRevisions() { + return $this->getMockBuilder( '\Mediawiki\DataModel\Revisions' ) + ->disableOriginalConstructor() + ->getMock(); + } + +}
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PagesTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PagesTest.php new file mode 100644 index 00000000..0055ecc7 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/PagesTest.php @@ -0,0 +1,44 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\Page; +use Mediawiki\DataModel\PageIdentifier; +use Mediawiki\DataModel\Pages; + +/** + * @covers \Mediawiki\DataModel\Pages + * @author Addshore + */ +class PagesTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $input, $expected ) { + $pages = new Pages( $input ); + $this->assertEquals( $expected, $pages->toArray() ); + } + + public function provideValidConstruction() { + $mockTitle = $this->getMockBuilder( 'Mediawiki\DataModel\Title' ) + ->disableOriginalConstructor() + ->getMock(); + $mockRevisions = $this->getMockBuilder( 'Mediawiki\DataModel\Revisions' ) + ->disableOriginalConstructor() + ->getMock(); + + //todo mock these + $page1 = new Page( new PageIdentifier( $mockTitle, 1 ), $mockRevisions ); + $page2 = new Page( new PageIdentifier( $mockTitle, 2 ), $mockRevisions ); + $page4 = new Page( new PageIdentifier( $mockTitle, 4 ), $mockRevisions ); + + return array( + array( array( $page1 ), array( 1 => $page1 ) ), + array( array( $page2, $page1 ), array( 1 => $page1, 2 => $page2 ) ), + array( array( $page4, $page1 ), array( 1 => $page1, 4 => $page4 ) ), + array( new Pages( array( $page4, $page1 ) ), array( 1 => $page1, 4 => $page4 ) ), + ); + } + +} diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RedirectTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RedirectTest.php new file mode 100644 index 00000000..0f561e92 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RedirectTest.php @@ -0,0 +1,20 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\Redirect; +use Mediawiki\DataModel\Title; + +/** + * @covers \Mediawiki\DataModel\Redirect + * @author Addshore + */ +class RedirectTest extends \PHPUnit_Framework_TestCase { + + public function testJsonRoundTrip() { + $title = new Redirect( new Title( 'Foo', 12 ), new Title( 'bar', 13 ) ); + $json = $title->jsonSerialize(); + $this->assertEquals( $title, Redirect::jsonDeserialize( $json ) ); + } + +} diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RevisionTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RevisionTest.php new file mode 100644 index 00000000..e6260acb --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RevisionTest.php @@ -0,0 +1,57 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\PageIdentifier; +use Mediawiki\DataModel\Revision; + +/** + * @covers \Mediawiki\DataModel\Revision + * @author Addshore + */ +class RevisionTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $content, $pageIdentifier, $id, $editInfo, $user, $timestamp ) { + $rev = new Revision( $content, $pageIdentifier, $id, $editInfo, $user, $timestamp ); + $this->assertEquals( $content, $rev->getContent() ); + if( !is_null( $pageIdentifier ) ) { + $this->assertEquals( $pageIdentifier, $rev->getPageIdentifier() ); + } else { + $this->assertInstanceOf( '\Mediawiki\DataModel\PageIdentifier', $rev->getPageIdentifier() ); + } + + $this->assertEquals( $id, $rev->getId() ); + if( !is_null( $editInfo ) ) { + $this->assertEquals( $editInfo, $rev->getEditInfo() ); + } else { + $this->assertInstanceOf( '\Mediawiki\DataModel\EditInfo', $rev->getEditInfo() ); + } + $this->assertEquals( $user, $rev->getUser() ); + $this->assertEquals( $timestamp, $rev->getTimestamp() ); + } + + public function provideValidConstruction() { + $mockContent = $this->getMockBuilder( 'Mediawiki\DataModel\Content' ) + ->disableOriginalConstructor() + ->getMock(); + $mockEditInfo = $this->getMockBuilder( '\Mediawiki\DataModel\EditInfo' ) + ->disableOriginalConstructor() + ->getMock(); + $mockTitle = $this->getMockBuilder( 'Mediawiki\DataModel\Title' ) + ->disableOriginalConstructor() + ->getMock(); + + return array( + array( $mockContent, null, null, null, null, null ), + array( $mockContent, new PageIdentifier( null, 1 ), null , null, null,null ), + array( $mockContent, new PageIdentifier( null, 1 ), 1 , null, null, null ), + array( $mockContent, new PageIdentifier( null, 2 ), 1 , $mockEditInfo, null, null ), + array( $mockContent, new PageIdentifier( $mockTitle ), 1 , $mockEditInfo, 'foo', null ), + array( $mockContent, new PageIdentifier( $mockTitle, 3 ), 1 , $mockEditInfo, 'foo', '20141212121212' ), + ); + } + +}
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RevisionsTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RevisionsTest.php new file mode 100644 index 00000000..6b7afbed --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/RevisionsTest.php @@ -0,0 +1,41 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\PageIdentifier; +use Mediawiki\DataModel\Revision; +use Mediawiki\DataModel\Revisions; + +/** + * @covers \Mediawiki\DataModel\Revisions + * @author Addshore + */ +class RevisionsTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $input, $expected ) { + $revisions = new Revisions( $input ); + $this->assertEquals( $expected, $revisions->toArray() ); + } + + public function provideValidConstruction() { + $mockContent = $this->getMockBuilder( 'Mediawiki\DataModel\Content' ) + ->disableOriginalConstructor() + ->getMock(); + + //todo mock these + $rev1 = new Revision( $mockContent, new PageIdentifier( null, 1 ), 1 ); + $rev2 = new Revision( $mockContent, new PageIdentifier( null, 1 ), 2 ); + $rev4 = new Revision( $mockContent, new PageIdentifier( null, 1 ), 4 ); + + return array( + array( array( $rev1 ), array( 1 => $rev1 ) ), + array( array( $rev2, $rev1 ), array( 1 => $rev1, 2 => $rev2 ) ), + array( array( $rev4, $rev1 ), array( 1 => $rev1, 4 => $rev4 ) ), + array( new Revisions( array( $rev4, $rev1 ) ), array( 1 => $rev1, 4 => $rev4 ) ), + ); + } + +}
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/TitleTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/TitleTest.php new file mode 100644 index 00000000..2c4d73da --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/TitleTest.php @@ -0,0 +1,56 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\Title; + +/** + * @covers \Mediawiki\DataModel\Title + * @author Addshore + */ +class TitleTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $title, $ns ) { + $titleObj = new Title( $title, $ns ); + $this->assertEquals( $title, $titleObj->getText() ); + $this->assertEquals( $title, $titleObj->getTitle() ); + $this->assertEquals( $ns, $titleObj->getNs() ); + } + + public function provideValidConstruction() { + return array( + array( 'fooo', 0 ), + array( 'Foo:Bar', 15 ), + array( 'FooBar:Bar', 9999 ), + ); + } + + /** + * @dataProvider provideInvalidConstruction + */ + public function testInvalidConstruction( $title, $ns ) { + $this->setExpectedException( 'InvalidArgumentException' ); + new Title( $title, $ns ); + } + + public function provideInvalidConstruction() { + return array( + array( array(), array() ), + array( 'foo', array() ), + array( array(), 1 ), + array( null, 1 ), + array( null, null ), + array( 'foo', null ), + ); + } + + public function testJsonRoundTrip() { + $title = new Title( 'Foo', 19 ); + $json = $title->jsonSerialize(); + $this->assertEquals( $title, Title::jsonDeserialize( $json ) ); + } + +}
\ No newline at end of file diff --git a/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/UserTest.php b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/UserTest.php new file mode 100644 index 00000000..fcf89994 --- /dev/null +++ b/bin/wiki/vendor/addwiki/mediawiki-datamodel/tests/UserTest.php @@ -0,0 +1,59 @@ +<?php + +namespace Mediawiki\DataModel\Test; + +use Mediawiki\DataModel\User; + +/** + * @covers \Mediawiki\DataModel\User + * @author Addshore + */ +class UserTest extends \PHPUnit_Framework_TestCase { + + /** + * @dataProvider provideValidConstruction + */ + public function testValidConstruction( $name, $id, $editcount, $registration, $groups, $rights, $gender ) { + $user = new User( $name, $id, $editcount, $registration, $groups, $rights, $gender ); + $this->assertEquals( $name, $user->getName() ); + $this->assertEquals( $id, $user->getId() ); + $this->assertEquals( $editcount, $user->getEditcount() ); + $this->assertEquals( $registration, $user->getRegistration() ); + $this->assertEquals( $groups['groups'], $user->getGroups() ); + $this->assertEquals( $groups['implicitgroups'], $user->getGroups( 'implicitgroups' ) ); + $this->assertEquals( $rights, $user->getRights() ); + $this->assertEquals( $gender, $user->getGender() ); + } + + public function provideValidConstruction() { + return array( + array( 'Username', 1, 1, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'male' ), + array( 'Username', 1, 1, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'female' ), + array( 'Username', 99999999, 99999997, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'male' ), + array( 'Username', 1, 1, null, array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'female' ), + ); + } + + /** + * @dataProvider provideInvalidConstruction + */ + public function testInvalidConstruction( $name, $id, $editcount, $registration, $groups, $rights, $gender ) { + $this->setExpectedException( 'InvalidArgumentException' ); + new User( $name, $id, $editcount, $registration, $groups, $rights, $gender ); + } + + public function provideInvalidConstruction() { + return array( + array( 'Username', 1, 1, 'TIMESTAMP', 'bad', array(), 'male' ), + array( 'Username', 1, 1, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), 'bad', 'male' ), + array( 'Username', 1, 1, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 1 ), + array( 'Username', 1, 'bad', 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'male' ), + array( 'Username', 'bad', 1, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'male' ), + array( 14287941, 1, 1, 'TIMESTAMP', array( 'groups' => array(), 'implicitgroups' => array() ), array(), 'male' ), + array( 'Username', 1, 1, 'TIMESTAMP', array( 'groups' => array(), 'foo' => array() ), array(), 'male' ), + array( 'Username', 1, 1, 'TIMESTAMP', array( 'groups' => array() ), array(), 'male' ), + array( 'Username', 1, 1, 'TIMESTAMP', array(), array(), 'male' ), + ); + } + +} |