xref: /plugin/struct/_test/AccessTableDataDBMultiTest.php (revision 8fed17f342cc190557a6ce94d1787f9e2f63cb6c)
1*8fed17f3SAndreas Gohr<?php
2*8fed17f3SAndreas Gohr
3*8fed17f3SAndreas Gohrnamespace dokuwiki\plugin\struct\test;
4*8fed17f3SAndreas Gohr
5*8fed17f3SAndreas Gohruse dokuwiki\plugin\struct\meta\Search;
6*8fed17f3SAndreas Gohr
7*8fed17f3SAndreas Gohr/**
8*8fed17f3SAndreas Gohr * Tests to the DB for the struct plugin
9*8fed17f3SAndreas Gohr *
10*8fed17f3SAndreas Gohr * @group plugin_struct
11*8fed17f3SAndreas Gohr * @group plugins
12*8fed17f3SAndreas Gohr *
13*8fed17f3SAndreas Gohr */
14*8fed17f3SAndreas Gohrclass AccessTableDataDBMultiTest extends StructTest
15*8fed17f3SAndreas Gohr{
16*8fed17f3SAndreas Gohr
17*8fed17f3SAndreas Gohr    /** @var \helper_plugin_sqlite $sqlite */
18*8fed17f3SAndreas Gohr    protected $sqlite;
19*8fed17f3SAndreas Gohr
20*8fed17f3SAndreas Gohr    public function setUp(): void
21*8fed17f3SAndreas Gohr    {
22*8fed17f3SAndreas Gohr        parent::setUp();
23*8fed17f3SAndreas Gohr
24*8fed17f3SAndreas Gohr        /** @var \helper_plugin_struct_db $sqlite */
25*8fed17f3SAndreas Gohr        $sqlite = plugin_load('helper', 'struct_db');
26*8fed17f3SAndreas Gohr        $this->sqlite = $sqlite->getDB();
27*8fed17f3SAndreas Gohr
28*8fed17f3SAndreas Gohr        $this->loadSchemaJSON('testtable', 'testtable2', 100);
29*8fed17f3SAndreas Gohr
30*8fed17f3SAndreas Gohr        // revision 1
31*8fed17f3SAndreas Gohr        $this->saveData(
32*8fed17f3SAndreas Gohr            'testpage',
33*8fed17f3SAndreas Gohr            'testtable',
34*8fed17f3SAndreas Gohr            [
35*8fed17f3SAndreas Gohr                'testMulitColumn2' => ['value1.1', 'value1.2'],
36*8fed17f3SAndreas Gohr                'testMulitColumn' => ['value2.1', 'value2.2']
37*8fed17f3SAndreas Gohr            ],
38*8fed17f3SAndreas Gohr            123
39*8fed17f3SAndreas Gohr        );
40*8fed17f3SAndreas Gohr
41*8fed17f3SAndreas Gohr        // revision 2
42*8fed17f3SAndreas Gohr        $this->saveData(
43*8fed17f3SAndreas Gohr            'testpage',
44*8fed17f3SAndreas Gohr            'testtable',
45*8fed17f3SAndreas Gohr            [
46*8fed17f3SAndreas Gohr                'testMulitColumn2' => ['value1.1a', 'value1.2a'],
47*8fed17f3SAndreas Gohr                'testMulitColumn' => ['value2.1a', 'value2.2a']
48*8fed17f3SAndreas Gohr            ],
49*8fed17f3SAndreas Gohr            789
50*8fed17f3SAndreas Gohr        );
51*8fed17f3SAndreas Gohr
52*8fed17f3SAndreas Gohr        // revision 1 of different page
53*8fed17f3SAndreas Gohr        $this->saveData(
54*8fed17f3SAndreas Gohr            'testpage2',
55*8fed17f3SAndreas Gohr            'testtable',
56*8fed17f3SAndreas Gohr            [
57*8fed17f3SAndreas Gohr                'testMulitColumn2' => ['value1.1a'],
58*8fed17f3SAndreas Gohr                'testMulitColumn' => ['value2.1a']
59*8fed17f3SAndreas Gohr            ],
60*8fed17f3SAndreas Gohr            789
61*8fed17f3SAndreas Gohr        );
62*8fed17f3SAndreas Gohr
63*8fed17f3SAndreas Gohr        // global data
64*8fed17f3SAndreas Gohr        $this->saveData(
65*8fed17f3SAndreas Gohr            '',
66*8fed17f3SAndreas Gohr            'testtable',
67*8fed17f3SAndreas Gohr            [
68*8fed17f3SAndreas Gohr                'testMulitColumn2' => ['value1.1b', 'value1.2b'],
69*8fed17f3SAndreas Gohr                'testMulitColumn' => ['value2.1b', 'value2.2b']
70*8fed17f3SAndreas Gohr            ],
71*8fed17f3SAndreas Gohr            0,
72*8fed17f3SAndreas Gohr            1
73*8fed17f3SAndreas Gohr        );
74*8fed17f3SAndreas Gohr    }
75*8fed17f3SAndreas Gohr
76*8fed17f3SAndreas Gohr    public function test_getDataFromDB_currentRev()
77*8fed17f3SAndreas Gohr    {
78*8fed17f3SAndreas Gohr
79*8fed17f3SAndreas Gohr        // act
80*8fed17f3SAndreas Gohr        $schemaData = mock\AccessTable::getPageAccess('testtable', 'testpage');
81*8fed17f3SAndreas Gohr        $actual_data = $schemaData->getDataFromDB();
82*8fed17f3SAndreas Gohr
83*8fed17f3SAndreas Gohr        $expected_data = [
84*8fed17f3SAndreas Gohr            [
85*8fed17f3SAndreas Gohr                'out1' => 'value1.1a' . Search::CONCAT_SEPARATOR . 'value1.2a',
86*8fed17f3SAndreas Gohr                'out2' => 'value2.1a' . Search::CONCAT_SEPARATOR . 'value2.2a',
87*8fed17f3SAndreas Gohr                'PID' => 'testpage',
88*8fed17f3SAndreas Gohr            ],
89*8fed17f3SAndreas Gohr        ];
90*8fed17f3SAndreas Gohr
91*8fed17f3SAndreas Gohr        $this->assertEquals($expected_data, $actual_data);
92*8fed17f3SAndreas Gohr    }
93*8fed17f3SAndreas Gohr
94*8fed17f3SAndreas Gohr    public function test_getDataFromDB_deleteMultiPage()
95*8fed17f3SAndreas Gohr    {
96*8fed17f3SAndreas Gohr
97*8fed17f3SAndreas Gohr        $this->saveData(
98*8fed17f3SAndreas Gohr            'testpage',
99*8fed17f3SAndreas Gohr            'testtable',
100*8fed17f3SAndreas Gohr            [
101*8fed17f3SAndreas Gohr                'testMulitColumn2' => '',
102*8fed17f3SAndreas Gohr                'testMulitColumn' => ['value2.1a'],
103*8fed17f3SAndreas Gohr            ]
104*8fed17f3SAndreas Gohr        );
105*8fed17f3SAndreas Gohr
106*8fed17f3SAndreas Gohr        $expected = [
107*8fed17f3SAndreas Gohr            [
108*8fed17f3SAndreas Gohr                'out1' => 'value1.1a' . Search::CONCAT_SEPARATOR . 'value1.2a',
109*8fed17f3SAndreas Gohr                'out2' => 'value2.1a' . Search::CONCAT_SEPARATOR . 'value2.2a',
110*8fed17f3SAndreas Gohr                'PID' => 'testpage',
111*8fed17f3SAndreas Gohr            ],
112*8fed17f3SAndreas Gohr        ];
113*8fed17f3SAndreas Gohr
114*8fed17f3SAndreas Gohr        $access = mock\AccessTable::getPageAccess('testtable', 'testpage');
115*8fed17f3SAndreas Gohr        $actual = $access->getDataFromDB();
116*8fed17f3SAndreas Gohr
117*8fed17f3SAndreas Gohr        $this->assertEquals($expected, $actual);
118*8fed17f3SAndreas Gohr    }
119*8fed17f3SAndreas Gohr
120*8fed17f3SAndreas Gohr    public function test_getDataFromDB_deleteMultiGlobal()
121*8fed17f3SAndreas Gohr    {
122*8fed17f3SAndreas Gohr
123*8fed17f3SAndreas Gohr        $this->saveData(
124*8fed17f3SAndreas Gohr            '',
125*8fed17f3SAndreas Gohr            'testtable',
126*8fed17f3SAndreas Gohr            [
127*8fed17f3SAndreas Gohr                'testMulitColumn2' => ['value1.1c', 'value1.2c'],
128*8fed17f3SAndreas Gohr                'testMulitColumn' => ['']
129*8fed17f3SAndreas Gohr            ],
130*8fed17f3SAndreas Gohr            0,
131*8fed17f3SAndreas Gohr            1
132*8fed17f3SAndreas Gohr        );
133*8fed17f3SAndreas Gohr
134*8fed17f3SAndreas Gohr        $expected = [
135*8fed17f3SAndreas Gohr            [
136*8fed17f3SAndreas Gohr                'out1' => 'value1.1c' . Search::CONCAT_SEPARATOR . 'value1.2c',
137*8fed17f3SAndreas Gohr                'out2' => '',
138*8fed17f3SAndreas Gohr                'RID' => '1',
139*8fed17f3SAndreas Gohr            ],
140*8fed17f3SAndreas Gohr        ];
141*8fed17f3SAndreas Gohr
142*8fed17f3SAndreas Gohr        $access = mock\AccessTable::getGlobalAccess('testtable', 1);
143*8fed17f3SAndreas Gohr        $actual = $access->getDataFromDB();
144*8fed17f3SAndreas Gohr
145*8fed17f3SAndreas Gohr        $this->assertEquals($expected, $actual);
146*8fed17f3SAndreas Gohr
147*8fed17f3SAndreas Gohr    }
148*8fed17f3SAndreas Gohr}
149