1*b21a57bfSMichael Hamann<?php 2*b21a57bfSMichael Hamann/** 3*b21a57bfSMichael Hamann * Test cases for the Doku_Indexer::renamePage and Doku_Indexer::renameMetaValue methods 4*b21a57bfSMichael Hamann */ 5*b21a57bfSMichael Hamannclass indexer_rename_test extends DokuWikiTest { 6*b21a57bfSMichael Hamann /** @var Doku_Indexer $indexer */ 7*b21a57bfSMichael Hamann private $indexer; 8*b21a57bfSMichael Hamann 9*b21a57bfSMichael Hamann private $old_id = 'old_testid'; 10*b21a57bfSMichael Hamann 11*b21a57bfSMichael Hamann function setUp() { 12*b21a57bfSMichael Hamann parent::setUp(); 13*b21a57bfSMichael Hamann $this->indexer = idx_get_indexer(); 14*b21a57bfSMichael Hamann $this->indexer->clear(); 15*b21a57bfSMichael Hamann 16*b21a57bfSMichael Hamann saveWikiText($this->old_id, 'Old test content', 'Created old test page for indexer rename test'); 17*b21a57bfSMichael Hamann idx_addPage($this->old_id); 18*b21a57bfSMichael Hamann } 19*b21a57bfSMichael Hamann 20*b21a57bfSMichael Hamann function test_rename_to_new_page() { 21*b21a57bfSMichael Hamann $newid = 'new_id_1'; 22*b21a57bfSMichael Hamann 23*b21a57bfSMichael Hamann $oldpid = $this->indexer->getPID($this->old_id); 24*b21a57bfSMichael Hamann 25*b21a57bfSMichael Hamann $this->indexer->renamePage($this->old_id, $newid); 26*b21a57bfSMichael Hamann io_rename(wikiFN($this->old_id), wikiFN($newid)); 27*b21a57bfSMichael Hamann 28*b21a57bfSMichael Hamann $this->assertNotEquals($this->indexer->getPID($this->old_id), $oldpid, 'PID for the old page unchanged after rename.'); 29*b21a57bfSMichael Hamann $this->assertEquals($this->indexer->getPID($newid), $oldpid, 'New page has not the old pid.'); 30*b21a57bfSMichael Hamann $query = array('old'); 31*b21a57bfSMichael Hamann $this->assertEquals(array('old' => array($newid => 1)), $this->indexer->lookup($query), '"Old" doesn\'t find the new page'); 32*b21a57bfSMichael Hamann } 33*b21a57bfSMichael Hamann 34*b21a57bfSMichael Hamann function test_rename_to_existing_page() { 35*b21a57bfSMichael Hamann $newid = 'existing_page'; 36*b21a57bfSMichael Hamann saveWikiText($newid, 'Existing content', 'Created page for move_to_existing_page'); 37*b21a57bfSMichael Hamann idx_addPage($newid); 38*b21a57bfSMichael Hamann 39*b21a57bfSMichael Hamann $oldpid = $this->indexer->getPID($this->old_id); 40*b21a57bfSMichael Hamann $existingpid = $this->indexer->getPID($newid); 41*b21a57bfSMichael Hamann 42*b21a57bfSMichael Hamann $this->indexer->renamePage($this->old_id, $newid); 43*b21a57bfSMichael Hamann 44*b21a57bfSMichael Hamann $this->assertNotEquals($this->indexer->getPID($this->old_id), $oldpid, 'PID for old page unchanged after rename.'); 45*b21a57bfSMichael Hamann $this->assertNotEquals($this->indexer->getPID($this->old_id), $existingpid, 'PID for old page is now PID of the existing page.'); 46*b21a57bfSMichael Hamann $this->assertEquals($this->indexer->getPID($newid), $oldpid, 'New page has not the old pid.'); 47*b21a57bfSMichael Hamann $query = array('existing'); 48*b21a57bfSMichael Hamann $this->assertEquals(array('existing' => array()), $this->indexer->lookup($query), 'Existing page hasn\'t been deleted from the index.'); 49*b21a57bfSMichael Hamann $query = array('old'); 50*b21a57bfSMichael Hamann $this->assertEquals(array('old' => array($newid => 1)), $this->indexer->lookup($query), '"Old" doesn\'t find the new page'); 51*b21a57bfSMichael Hamann } 52*b21a57bfSMichael Hamann 53*b21a57bfSMichael Hamann function test_meta_rename_to_new_value() { 54*b21a57bfSMichael Hamann $this->indexer->addMetaKeys($this->old_id, array('mkey' => 'old_value')); 55*b21a57bfSMichael Hamann 56*b21a57bfSMichael Hamann $this->indexer->renameMetaValue('mkey', 'old_value', 'new_value'); 57*b21a57bfSMichael Hamann $query = 'old_value'; 58*b21a57bfSMichael Hamann $this->assertEquals(array(), $this->indexer->lookupKey('mkey', $query), 'Page can still be found under old value.'); 59*b21a57bfSMichael Hamann $query = 'new_value'; 60*b21a57bfSMichael Hamann $this->assertEquals(array($this->old_id), $this->indexer->lookupKey('mkey', $query), 'Page can\'t be found under new value.'); 61*b21a57bfSMichael Hamann } 62*b21a57bfSMichael Hamann 63*b21a57bfSMichael Hamann function test_meta_rename_to_existing_value() { 64*b21a57bfSMichael Hamann $this->indexer->addMetaKeys($this->old_id, array('mkey' => array('old_value', 'new_value'))); 65*b21a57bfSMichael Hamann 66*b21a57bfSMichael Hamann saveWikiText('newvalue', 'Test page', ''); 67*b21a57bfSMichael Hamann idx_addPage('newvalue'); 68*b21a57bfSMichael Hamann $this->indexer->addMetaKeys('newvalue', array('mkey' => array('new_value'))); 69*b21a57bfSMichael Hamann 70*b21a57bfSMichael Hamann saveWikiText('oldvalue', 'Test page', ''); 71*b21a57bfSMichael Hamann idx_addPage('oldvalue'); 72*b21a57bfSMichael Hamann $this->indexer->addMetaKeys('oldvalue', array('mkey' => array('old_value'))); 73*b21a57bfSMichael Hamann 74*b21a57bfSMichael Hamann $this->indexer->renameMetaValue('mkey', 'old_value', 'new_value'); 75*b21a57bfSMichael Hamann $query = 'old_value'; 76*b21a57bfSMichael Hamann $this->assertEquals(array(), $this->indexer->lookupKey('mkey', $query), 'Page can still be found under old value.'); 77*b21a57bfSMichael Hamann $query = 'new_value'; 78*b21a57bfSMichael Hamann $result = $this->indexer->lookupKey('mkey', $query); 79*b21a57bfSMichael Hamann $this->assertContains($this->old_id, $result, 'Page with both values can\'t be found anymore'); 80*b21a57bfSMichael Hamann $this->assertContains('newvalue', $result, 'Page with new value can\'t be found anymore'); 81*b21a57bfSMichael Hamann $this->assertContains('oldvalue', $result, 'Page with only the old value can\'t be found anymore'); 82*b21a57bfSMichael Hamann } 83*b21a57bfSMichael Hamann} 84