3 declare(strict_types
=1);
5 namespace PhpMyAdmin\Tests
;
7 use PhpMyAdmin\Dbal\DatabaseInterface
;
8 use PhpMyAdmin\DbTableExists
;
9 use PhpMyAdmin\Identifiers\DatabaseName
;
10 use PhpMyAdmin\Identifiers\TableName
;
11 use PHPUnit\Framework\Attributes\CoversClass
;
13 #[CoversClass(DbTableExists::class)]
14 final class DbTableExistsTest
extends AbstractTestCase
16 public function testHasDatabase(): void
18 $dbiDummy = $this->createDbiDummy();
19 $dbiDummy->removeDefaultResults();
20 $dbiDummy->addSelectDb('test_db');
21 $dbi = $this->createDatabaseInterface($dbiDummy);
22 $dbTableExists = new DbTableExists($dbi);
23 self
::assertTrue($dbTableExists->selectDatabase(DatabaseName
::from('test_db')));
24 $dbiDummy->assertAllSelectsConsumed();
27 public function testHasDatabaseWithNoDatabase(): void
29 $db = DatabaseName
::from('test_db');
30 $dbi = self
::createMock(DatabaseInterface
::class);
31 $dbi->expects(self
::once())->method('selectDb')->with($db)->willReturn(false);
32 $dbTableExists = new DbTableExists($dbi);
33 self
::assertFalse($dbTableExists->selectDatabase($db));
36 public function testHasTable(): void
38 $dbiDummy = $this->createDbiDummy();
39 $dbiDummy->removeDefaultResults();
40 $dbiDummy->addResult('SELECT 1 FROM `test_db`.`test_table` LIMIT 1;', [['1']], ['1']);
41 $dbi = $this->createDatabaseInterface($dbiDummy);
42 $dbTableExists = new DbTableExists($dbi);
43 self
::assertTrue($dbTableExists->hasTable(DatabaseName
::from('test_db'), TableName
::from('test_table')));
45 self
::assertTrue($dbTableExists->hasTable(DatabaseName
::from('test_db'), TableName
::from('test_table')));
46 $dbiDummy->assertAllQueriesConsumed();
49 public function testHasTableWithTempTable(): void
51 $dbiDummy = $this->createDbiDummy();
52 $dbiDummy->removeDefaultResults();
53 $dbiDummy->addResult('SELECT 1 FROM `test_db`.`test_table` LIMIT 1;', [['1']], ['1']);
54 $dbi = $this->createDatabaseInterface($dbiDummy);
55 $dbTableExists = new DbTableExists($dbi);
56 self
::assertTrue($dbTableExists->hasTable(DatabaseName
::from('test_db'), TableName
::from('test_table')));
58 self
::assertTrue($dbTableExists->hasTable(DatabaseName
::from('test_db'), TableName
::from('test_table')));
59 $dbiDummy->assertAllQueriesConsumed();
62 public function testHasTableWithNoTable(): void
64 $dbiDummy = $this->createDbiDummy();
65 $dbiDummy->removeDefaultResults();
66 $dbiDummy->addResult('SELECT 1 FROM `test_db`.`test_table` LIMIT 1;', false);
67 $dbi = $this->createDatabaseInterface($dbiDummy);
68 $dbTableExists = new DbTableExists($dbi);
69 self
::assertFalse($dbTableExists->hasTable(DatabaseName
::from('test_db'), TableName
::from('test_table')));
70 $dbiDummy->assertAllQueriesConsumed();