object = new Qbe(new Relation($GLOBALS['dbi']), new Template(), $GLOBALS['dbi'], 'pma_test'); //mock DBI $dbi = $this->getMockBuilder(DatabaseInterface::class) ->disableOriginalConstructor() ->getMock(); $create_table = 'CREATE TABLE `table1` (' . '`id` int(11) NOT NULL,' . '`value` int(11) NOT NULL,' . 'PRIMARY KEY (`id`,`value`),' . 'KEY `value` (`value`)' . ') ENGINE=InnoDB DEFAULT CHARSET=latin1'; $dbi->expects($this->any()) ->method('fetchValue') ->with('SHOW CREATE TABLE `pma_test`.`table1`', 1) ->will($this->returnValue($create_table)); $dbi->expects($this->any()) ->method('getTableIndexes') ->will($this->returnValue([])); $GLOBALS['dbi'] = $dbi; $this->object->dbi = $dbi; } /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. */ protected function tearDown(): void { parent::tearDown(); unset($this->object); } /** * Test for getSortSelectCell */ public function testGetSortSelectCell(): void { $this->assertStringContainsString( 'style="width:12ex" name="criteriaSort[1]"', $this->callFunction( $this->object, Qbe::class, 'getSortSelectCell', [1] ) ); $this->assertStringNotContainsString( 'selected="selected"', $this->callFunction( $this->object, Qbe::class, 'getSortSelectCell', [1] ) ); $this->assertStringContainsString( 'value="ASC" selected="selected">', $this->callFunction( $this->object, Qbe::class, 'getSortSelectCell', [ 1, 'ASC', ] ) ); } /** * Test for getSortRow */ public function testGetSortRow(): void { $this->assertStringContainsString( 'name="criteriaSort[0]"', $this->callFunction( $this->object, Qbe::class, 'getSortRow', [] ) ); $this->assertStringContainsString( 'name="criteriaSort[1]"', $this->callFunction( $this->object, Qbe::class, 'getSortRow', [] ) ); $this->assertStringContainsString( 'name="criteriaSort[2]"', $this->callFunction( $this->object, Qbe::class, 'getSortRow', [] ) ); } /** * Test for getShowRow */ public function testGetShowRow(): void { $this->assertEquals( '' . '' . '', $this->callFunction( $this->object, Qbe::class, 'getShowRow', [] ) ); } /** * Test for getCriteriaInputboxRow */ public function testGetCriteriaInputboxRow(): void { $this->assertEquals( '' . '' . '' . '' . '' . '' . '', $this->callFunction( $this->object, Qbe::class, 'getCriteriaInputboxRow', [] ) ); } /** * Test for getAndOrColCell */ public function testGetAndOrColCell(): void { $this->assertEquals( 'Or:  And:' . '
Ins  Del', $this->callFunction( $this->object, Qbe::class, 'getAndOrColCell', [1] ) ); } /** * Test for getModifyColumnsRow */ public function testGetModifyColumnsRow(): void { $this->assertEquals( '' . 'Or:  And:
Ins' . '  ' . 'DelOr:  And:' . '
Ins  Del
Ins' . '  ' . 'Del', $this->callFunction( $this->object, Qbe::class, 'getModifyColumnsRow', [] ) ); } /** * Test for getInputboxRow */ public function testGetInputboxRow(): void { $this->assertEquals( '' . '', $this->callFunction( $this->object, Qbe::class, 'getInputboxRow', [2] ) ); } /** * Test for getInsDelAndOrCriteriaRows */ public function testGetInsDelAndOrCriteriaRows(): void { $actual = $this->callFunction( $this->object, Qbe::class, 'getInsDelAndOrCriteriaRows', [ 2, 3, ] ); $this->assertStringContainsString('', $actual); $this->assertStringContainsString( '', $actual ); } /** * Test for getSelectClause */ public function testGetSelectClause(): void { $this->assertEquals( '', $this->callFunction( $this->object, Qbe::class, 'getSelectClause', [] ) ); } /** * Test for getWhereClause */ public function testGetWhereClause(): void { $this->assertEquals( '', $this->callFunction( $this->object, Qbe::class, 'getWhereClause', [] ) ); } /** * Test for getOrderByClause */ public function testGetOrderByClause(): void { $this->assertEquals( '', $this->callFunction( $this->object, Qbe::class, 'getOrderByClause', [] ) ); } /** * Test for getIndexes */ public function testGetIndexes(): void { $this->assertEquals( [ 'unique' => [], 'index' => [], ], $this->callFunction( $this->object, Qbe::class, 'getIndexes', [ [ '`table1`', 'table2', ], [ 'column1', 'column2', 'column3', ], ['column2'], ] ) ); } /** * Test for getLeftJoinColumnCandidates */ public function testGetLeftJoinColumnCandidates(): void { $this->assertEquals( [0 => 'column2'], $this->callFunction( $this->object, Qbe::class, 'getLeftJoinColumnCandidates', [ [ '`table1`', 'table2', ], [ 'column1', 'column2', 'column3', ], ['column2'], ] ) ); } /** * Test for getMasterTable */ public function testGetMasterTable(): void { $this->assertEquals( 0, $this->callFunction( $this->object, Qbe::class, 'getMasterTable', [ [ 'table1', 'table2', ], [ 'column1', 'column2', 'column3', ], ['column2'], ['qbe_test'], ] ) ); } /** * Test for getWhereClauseTablesAndColumns */ public function testGetWhereClauseTablesAndColumns(): void { $_POST['criteriaColumn'] = [ 'table1.id', 'table1.value', 'table1.name', 'table1.deleted', ]; $this->assertEquals( [ 'where_clause_tables' => [], 'where_clause_columns' => [], ], $this->callFunction( $this->object, Qbe::class, 'getWhereClauseTablesAndColumns', [] ) ); } /** * Test for getFromClause */ public function testGetFromClause(): void { $_POST['criteriaColumn'] = [ 'table1.id', 'table1.value', 'table1.name', 'table1.deleted', ]; $this->assertEquals( '`table1`', $this->callFunction( $this->object, Qbe::class, 'getFromClause', [['`table1`.`id`']] ) ); } /** * Test for getSQLQuery */ public function testGetSQLQuery(): void { $_POST['criteriaColumn'] = [ 'table1.id', 'table1.value', 'table1.name', 'table1.deleted', ]; $this->assertEquals( 'FROM `table1`' . "\n", $this->callFunction( $this->object, Qbe::class, 'getSQLQuery', [['`table1`.`id`']] ) ); } }