xref: /dokuwiki/_test/tests/inc/parserutils_set_metadata.test.php (revision bf6f54b8162c7d19d7d64a1311042e7eba31d0d9)
11987d368SPhy<?php
2*bf6f54b8SAndreas Gohr
31987d368SPhy/**
4*bf6f54b8SAndreas Gohr * Class parserutils_set_metadata_test
51987d368SPhy */
61987d368SPhyclass parserutils_set_metadata_test extends DokuWikiTest {
71987d368SPhy    // the id used for this test case
81987d368SPhy    private $id;
91987d368SPhy
10*bf6f54b8SAndreas Gohr    /**
11*bf6f54b8SAndreas Gohr     * Set up fake user environment with for the gieven user
12*bf6f54b8SAndreas Gohr     *
13*bf6f54b8SAndreas Gohr     * @param string $user
14*bf6f54b8SAndreas Gohr     */
15*bf6f54b8SAndreas Gohr    function helper_prepare_user($user = '1') {
161987d368SPhy        global $INFO, $USERINFO;
17*bf6f54b8SAndreas Gohr
18*bf6f54b8SAndreas Gohr        // prepare fake users
19*bf6f54b8SAndreas Gohr        static $users = [
20*bf6f54b8SAndreas Gohr            '1' => [
211987d368SPhy                'pass' => '179ad45c6ce2cb97cf1029e212046e81',
221987d368SPhy                'name' => 'Tester1',
231987d368SPhy                'mail' => 'tester1@example.com',
241987d368SPhy                'grps' => array('admin', 'user'),
25*bf6f54b8SAndreas Gohr            ]
26*bf6f54b8SAndreas Gohr            ,
27*bf6f54b8SAndreas Gohr            'tester2' => [
28*bf6f54b8SAndreas Gohr                'pass' => '179ad45c6ce2cb97cf1029e212046e81',
29*bf6f54b8SAndreas Gohr                'name' => 'Tester2',
30*bf6f54b8SAndreas Gohr                'mail' => 'tester2@example.com',
31*bf6f54b8SAndreas Gohr                'grps' => array('user'),
32*bf6f54b8SAndreas Gohr            ]
33*bf6f54b8SAndreas Gohr        ];
34*bf6f54b8SAndreas Gohr        if(!isset($users[$user])) throw new RuntimeException('requested non-existing user');
35*bf6f54b8SAndreas Gohr
36*bf6f54b8SAndreas Gohr        // set up globals
37*bf6f54b8SAndreas Gohr        $_SERVER['REMOTE_ADDR'] = '1.2.3.4';
38*bf6f54b8SAndreas Gohr        $USERINFO = $users[$user];
391987d368SPhy        $INFO['userinfo'] = $USERINFO;
40*bf6f54b8SAndreas Gohr        $_SERVER['REMOTE_USER'] = $user;
411987d368SPhy    }
42*bf6f54b8SAndreas Gohr
431987d368SPhy    /**
441987d368SPhy     *  test array merge, including contributors with numeric keys and array data overwritting
451987d368SPhy     */
461987d368SPhy    function test_array_replace(){
471987d368SPhy        // prepare user
48*bf6f54b8SAndreas Gohr        $this->helper_prepare_user('1');
491987d368SPhy
501987d368SPhy        // prepare page
511987d368SPhy        $this->id = 'test:set_metadata_array_replace';
521987d368SPhy        saveWikiText($this->id, 'Test', 'Test data setup');
531987d368SPhy        $meta = p_get_metadata($this->id);
541987d368SPhy
551987d368SPhy        $this->assertEquals('1', $meta['user'], 'Initial page has wrong user ID');
561987d368SPhy        // $this->assertEquals(empty($meta['contributor']), true, 'Initial page should have no contributors');
571987d368SPhy
581987d368SPhy        // first revision with numeric user
59*bf6f54b8SAndreas Gohr        $this->waitForTick();
601987d368SPhy        saveWikiText($this->id, 'Test1', 'Test first edit');
611987d368SPhy        $meta = p_get_metadata($this->id);
621987d368SPhy
631987d368SPhy        $last_edit_date = $meta['date']['modified'];
641987d368SPhy        $this->assertEquals(array('1'=>'Tester1'), $meta['contributor'], 'First edit contributors error');
651987d368SPhy
661987d368SPhy        // second revision with alphabetic user
67*bf6f54b8SAndreas Gohr        $this->waitForTick();
68*bf6f54b8SAndreas Gohr        $this->helper_prepare_user('tester2');
691987d368SPhy        saveWikiText($this->id, 'Test2', 'Test second edit');
701987d368SPhy        $meta = p_get_metadata($this->id);
711987d368SPhy
721987d368SPhy        $this->assertNotEquals($last_edit_date, $meta['date']['modified'], 'First edit date merge error');
731987d368SPhy        $this->assertEquals(array('tester2'=>'Tester2', '1'=>'Tester1'), $meta['contributor'], 'Second edit contributors error');
741987d368SPhy
751987d368SPhy        // third revision with the first user
76*bf6f54b8SAndreas Gohr        $this->waitForTick();
77*bf6f54b8SAndreas Gohr        $this->helper_prepare_user('1');
781987d368SPhy        saveWikiText($this->id, 'Test3', 'Test third edit');
791987d368SPhy        $meta = p_get_metadata($this->id);
801987d368SPhy
811987d368SPhy        $this->assertEquals(array('tester2'=>'Tester2', '1'=>'Tester1'), $meta['contributor'], 'Third edit contributors error');
821987d368SPhy    }
831987d368SPhy}
84