|
14 | 14 | use PhpMyAdmin\SqlQueryForm; |
15 | 15 | use PhpMyAdmin\Template; |
16 | 16 | use PhpMyAdmin\Tests\AbstractTestCase; |
| 17 | +use PhpMyAdmin\Tests\Clock\MockClock; |
17 | 18 | use PhpMyAdmin\Tests\Stubs\DummyResult; |
18 | 19 | use PhpMyAdmin\Tracking\LogType; |
19 | 20 | use PhpMyAdmin\Tracking\TrackedData; |
20 | 21 | use PhpMyAdmin\Tracking\TrackedDataType; |
21 | 22 | use PhpMyAdmin\Tracking\Tracking; |
22 | 23 | use PhpMyAdmin\Tracking\TrackingChecker; |
23 | 24 | use PhpMyAdmin\Url; |
24 | | -use PhpMyAdmin\Util; |
25 | 25 | use PHPUnit\Framework\Attributes\CoversClass; |
26 | 26 | use PHPUnit\Framework\Attributes\DataProvider; |
27 | 27 | use ReflectionProperty; |
28 | 28 |
|
29 | 29 | use function __; |
30 | 30 | use function _pgettext; |
31 | | -use function date; |
32 | 31 | use function htmlspecialchars; |
33 | 32 | use function ini_get; |
34 | 33 | use function ini_restore; |
@@ -558,9 +557,10 @@ public function testGetDownloadInfoForExport(): void |
558 | 557 | ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,form=,fieldset='); |
559 | 558 | $entries = [['statement' => 'first statement'], ['statement' => 'second statement']]; |
560 | 559 | $expectedDump = '# Tracking report for table `test> table`' . "\n" |
561 | | - . '# ' . date('Y-m-d H:i:sP') . "\n" |
| 560 | + . '# 2015-10-21 05:28:00-02:00' . "\n" |
562 | 561 | . 'first statementsecond statement'; |
563 | | - $actual = $tracking->getDownloadInfoForExport('test> table', $entries); |
| 562 | + $clock = MockClock::from('2015-10-21T05:28:00-02:00'); |
| 563 | + $actual = $tracking->getDownloadInfoForExport($clock, 'test> table', $entries); |
564 | 564 | self::assertSame('log_test> table.sql', $actual['filename']); |
565 | 565 | self::assertSame($expectedDump, $actual['dump']); |
566 | 566 | self::assertSame('', ini_get('url_rewriter.tags')); |
@@ -600,61 +600,35 @@ public function testDeleteTracking(): void |
600 | 600 | self::assertTrue($tracking->deleteTracking('testdb', 'testtable')); |
601 | 601 | } |
602 | 602 |
|
603 | | - /** |
604 | | - * Test for changeTrackingData() |
605 | | - */ |
606 | 603 | public function testChangeTrackingData(): void |
607 | 604 | { |
608 | | - $dbi = $this->getMockBuilder(DatabaseInterface::class) |
609 | | - ->disableOriginalConstructor() |
610 | | - ->getMock(); |
611 | | - |
612 | | - $sqlQuery1 = 'UPDATE `pmadb`.`tracking`' . |
613 | | - " SET `schema_sql` = '# new_data_processed'" . |
614 | | - " WHERE `db_name` = 'pma_db'" . |
615 | | - " AND `table_name` = 'pma_table'" . |
616 | | - " AND `version` = '1.0'"; |
617 | | - |
618 | | - $date = Util::date('Y-m-d H:i:s'); |
619 | | - |
620 | 605 | $newData = [ |
621 | | - ['date' => $date, 'username' => 'user1', 'statement' => 'test_statement1'], |
622 | | - ['date' => $date, 'username' => 'user2', 'statement' => 'test_statement2'], |
| 606 | + ['date' => '2026-02-25 19:29:34', 'username' => 'user1', 'statement' => 'test_statement1'], |
| 607 | + ['date' => '2026-02-25 19:29:34', 'username' => 'user2', 'statement' => 'test_statement2'], |
623 | 608 | ]; |
624 | 609 |
|
625 | | - $sqlQuery2 = 'UPDATE `pmadb`.`tracking`' . |
626 | | - " SET `data_sql` = '# log " . $date . " user1test_statement1\n" . |
627 | | - '# log ' . $date . " user2test_statement2\n'" . |
628 | | - " WHERE `db_name` = 'pma_db'" . |
629 | | - " AND `table_name` = 'pma_table'" . |
630 | | - " AND `version` = '1.0'"; |
631 | | - |
632 | | - $resultStub1 = self::createMock(DummyResult::class); |
633 | | - $resultStub2 = self::createMock(DummyResult::class); |
634 | | - |
635 | | - $dbi->method('queryAsControlUser') |
636 | | - ->willReturnMap([[$sqlQuery1, $resultStub1], [$sqlQuery2, $resultStub2]]); |
637 | | - |
638 | | - $dbi->expects(self::any())->method('quoteString') |
639 | | - ->willReturnCallback(static fn (string $string): string => "'" . $string . "'"); |
| 610 | + $dbiDummy = $this->createDbiDummy(); |
| 611 | + $dbiDummy->addResult( |
| 612 | + 'UPDATE `pmadb`.`tracking`' . |
| 613 | + " SET `data_sql` = '# log 2026-02-25 19:29:34 user1test_statement1 " . |
| 614 | + "# log 2026-02-25 19:29:34 user2test_statement2 '" . |
| 615 | + " WHERE `db_name` = 'pma_db'" . |
| 616 | + " AND `table_name` = 'pma_table'" . |
| 617 | + " AND `version` = '1.0'", |
| 618 | + true, |
| 619 | + ); |
| 620 | + $dbi = $this->createDatabaseInterface($dbiDummy); |
640 | 621 |
|
641 | 622 | $tracking = new Tracking( |
642 | 623 | self::createStub(SqlQueryForm::class), |
643 | 624 | self::createStub(Template::class), |
644 | | - new Relation(DatabaseInterface::getInstance()), |
| 625 | + new Relation($dbi, new Config()), |
645 | 626 | $dbi, |
646 | 627 | self::createStub(TrackingChecker::class), |
647 | 628 | ); |
648 | 629 |
|
649 | | - self::assertTrue( |
650 | | - $tracking->changeTrackingData( |
651 | | - 'pma_db', |
652 | | - 'pma_table', |
653 | | - '1.0', |
654 | | - TrackedDataType::DML, |
655 | | - $newData, |
656 | | - ), |
657 | | - ); |
| 630 | + self::assertTrue($tracking->changeTrackingData('pma_db', 'pma_table', '1.0', TrackedDataType::DML, $newData)); |
| 631 | + $dbiDummy->assertAllQueriesConsumed(); |
658 | 632 | } |
659 | 633 |
|
660 | 634 | /** |
|
0 commit comments