xref: /dokuwiki/_test/tests/inc/pageutils_sectionid.test.php (revision 4f58273652838cfc963b6bc02439e80fb969c594)
1*4f582736SGuillaume Turri<?php
2*4f582736SGuillaume Turri
3*4f582736SGuillaume Turriclass sectionid_test extends Dokuwikitest
4*4f582736SGuillaume Turri{
5*4f582736SGuillaume Turri    /**
6*4f582736SGuillaume Turri     * DataProvider
7*4f582736SGuillaume Turri     *
8*4f582736SGuillaume Turri     * @return Generator|array
9*4f582736SGuillaume Turri     * @see testSectionidsAreUnique
10*4f582736SGuillaume Turri     */
11*4f582736SGuillaume Turri    public function provideTestData(){
12*4f582736SGuillaume Turri        // Each test case represents a sequence of sections title
13*4f582736SGuillaume Turri        return [
14*4f582736SGuillaume Turri            [['A', 'A', 'A1']],
15*4f582736SGuillaume Turri            [['A', 'A1', 'A']]
16*4f582736SGuillaume Turri        ];
17*4f582736SGuillaume Turri    }
18*4f582736SGuillaume Turri
19*4f582736SGuillaume Turri    /**
20*4f582736SGuillaume Turri     * @dataProvider provideTestData
21*4f582736SGuillaume Turri     * @param array $titles
22*4f582736SGuillaume Turri     */
23*4f582736SGuillaume Turri    function testSectionidsAreUnique($titles)
24*4f582736SGuillaume Turri    {
25*4f582736SGuillaume Turri        $check = array();
26*4f582736SGuillaume Turri        $alreadyGeneratedIds = array();
27*4f582736SGuillaume Turri        foreach($titles as $title){
28*4f582736SGuillaume Turri            $newId = sectionID($title, $check);
29*4f582736SGuillaume Turri            $this->assertNotContains($newId, $alreadyGeneratedIds, "id $newId has been generated twice. The 2nd time it was for the title $title");
30*4f582736SGuillaume Turri            $alreadyGeneratedIds []= $newId;
31*4f582736SGuillaume Turri        }
32*4f582736SGuillaume Turri    }
33*4f582736SGuillaume Turri
34*4f582736SGuillaume Turri    /**
35*4f582736SGuillaume Turri     * The convention in the code is to pass $check=false when we're not interested in having
36*4f582736SGuillaume Turri     * unique sectionID. This test ensures that this type of call is correctly handled
37*4f582736SGuillaume Turri     */
38*4f582736SGuillaume Turri    function testSectionIDCanBeCalledWithNonArrayCheck(){
39*4f582736SGuillaume Turri        $check = false;
40*4f582736SGuillaume Turri        $this->assertEquals("abc", sectionID("abc", $check), "Passing \$check=false shouldn't lead to an error");
41*4f582736SGuillaume Turri        $this->assertEquals("abc", sectionID("abc", $check), "Passing \$check=false shouldn't try to deduplicate id");
42*4f582736SGuillaume Turri    }
43*4f582736SGuillaume Turri}
44