public function testUserWasLastToEdit() { $user1 = User::newFromName("WikiPageEntityStoreTestUserWasLastToEdit1"); $user2 = User::newFromName("WikiPageEntityStoreTestUserWasLastToEdit2"); // initial revision $item = new Item(new ItemId('Q42')); $item->setLabel('en', 'one'); $rev1 = $this->repo->saveEntity($item, 'testing 1', $user1, EDIT_NEW); $itemId = $item->getId(); $this->assertTrue($this->repo->userWasLastToEdit($user1, $itemId, $rev1->getRevisionId()), 'user was first and last to edit'); $this->assertFalse($this->repo->userWasLastToEdit($user2, $itemId, $rev1->getRevisionId()), 'user has not edited yet'); // second edit by another user $item = new Item(new ItemId('Q42')); $item->setLabel('en', 'two'); $rev2 = $this->repo->saveEntity($item, 'testing 2', $user2, EDIT_UPDATE); $this->assertFalse($this->repo->userWasLastToEdit($user1, $itemId, $rev1->getRevisionId()), 'original user was no longer last to edit'); $this->assertTrue($this->repo->userWasLastToEdit($user2, $itemId, $rev2->getRevisionId()), 'second user has just edited'); // subsequent edit by the original user $item = new Item(new ItemId('Q42')); $item->setLabel('en', 'three'); $rev3 = $this->repo->saveEntity($item, 'testing 3', $user1, EDIT_UPDATE); $this->assertFalse($this->repo->userWasLastToEdit($user1, $itemId, $rev1->getRevisionId()), 'another user had edited at some point'); $this->assertTrue($this->repo->userWasLastToEdit($user1, $itemId, $rev3->getRevisionId()), 'original user was last to edit'); $this->assertFalse($this->repo->userWasLastToEdit($user2, $itemId, $rev2->getRevisionId()), 'other user was no longer last to edit'); }
/** * @dataProvider runProvider * * @param bool $expected * @param bool $titleExists * @param string $oldTitle */ public function testRun($expected, $titleExists, $oldTitle) { $item = new Item(); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Delete me', array(new ItemId('Q42'))); $mockRepository = new MockRepository(); $user = User::newFromName('UpdateRepo'); // Needed as UpdateRepoOnDeleteJob instantiates a User object $user->addToDatabase(); $mockRepository->saveEntity($item, 'UpdateRepoOnDeleteJobTest', $user, EDIT_NEW); $params = array('siteId' => 'enwiki', 'entityId' => $item->getId()->getSerialization(), 'title' => $oldTitle, 'user' => $user->getName()); $job = new UpdateRepoOnDeleteJob(Title::newMainPage(), $params); $job->initServices($mockRepository, $mockRepository, $this->getSummaryFormatter(), $this->getSiteStore($titleExists), new EditEntityFactory($this->getEntityTitleLookup($item->getId()), $mockRepository, $mockRepository, $this->getEntityPermissionChecker(), $this->getMockEditFitlerHookRunner())); $job->run(); $item = $mockRepository->getEntity($item->getId()); $this->assertSame(!$expected, $item->getSiteLinkList()->hasLinkWithSiteId('enwiki'), 'Sitelink has been removed.'); }
/** * @dataProvider runProvider * @param string $expected * @param string $normalizedPageName * @param string $oldTitle */ public function testRun($expected, $normalizedPageName, $oldTitle) { $user = User::newFromName('UpdateRepo'); // Needed as UpdateRepoOnMoveJob instantiates a User object $user->addToDatabase(); $item = new Item(); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Old page name', array(new ItemId('Q42'))); $mockRepository = new MockRepository(); $mockRepository->saveEntity($item, 'UpdateRepoOnDeleteJobTest', $user, EDIT_NEW); $params = array('siteId' => 'enwiki', 'entityId' => $item->getId()->getSerialization(), 'oldTitle' => $oldTitle, 'newTitle' => 'New page name', 'user' => $user->getName()); $job = new UpdateRepoOnMoveJob(Title::newMainPage(), $params); $job->initServices($mockRepository, $mockRepository, $this->getSummaryFormatter(), $this->getSiteStore($normalizedPageName), new EditEntityFactory($this->getEntityTitleLookup($item->getId()), $mockRepository, $mockRepository, $this->getEntityPermissionChecker(), $this->getMockEditFitlerHookRunner())); $job->run(); /** @var Item $item */ $item = $mockRepository->getEntity($item->getId()); $this->assertSame($expected, $item->getSiteLinkList()->getBySiteId('enwiki')->getPageName(), 'Title linked on enwiki after the job ran'); $this->assertEquals($item->getSiteLinkList()->getBySiteId('enwiki')->getBadges(), array(new ItemId('Q42'))); }