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