phpmyadmin/tests/classes/Triggers/TriggerTest.php
Maurício Meneghini Fauth 1d1c55e250
Move test directory to tests
- Related to #18512

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2023-11-30 10:47:42 -03:00

124 lines
3.7 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Triggers;
use PhpMyAdmin\Triggers\Event;
use PhpMyAdmin\Triggers\Timing;
use PhpMyAdmin\Triggers\Trigger;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
#[CoversClass(Trigger::class)]
class TriggerTest extends TestCase
{
public function testTryFromArrayWithEmptyArray(): void
{
$this->assertNull(Trigger::tryFromArray([]));
}
/** @param mixed[] $trigger */
#[DataProvider('arrayWithValidValuesProvider')]
public function testTryFromArrayWithValidValues(array $trigger): void
{
$actual = Trigger::tryFromArray($trigger);
$this->assertNotNull($actual);
$this->assertSame('trigger_name', $actual->name->getName());
$this->assertSame(Timing::Before, $actual->timing);
$this->assertSame(Event::Update, $actual->event);
$this->assertSame('test_table', $actual->table->getName());
$this->assertSame('BEGIN END', $actual->statement);
$this->assertSame('definer@localhost', $actual->definer);
}
/** @return iterable<array-key, array{mixed[]}> */
public static function arrayWithValidValuesProvider(): iterable
{
yield [
[
'Trigger' => 'trigger_name',
'Timing' => 'BEFORE',
'Event' => 'UPDATE',
'Table' => 'test_table',
'Statement' => 'BEGIN END',
'Definer' => 'definer@localhost',
],
];
yield [
[
'TRIGGER_NAME' => 'trigger_name',
'ACTION_TIMING' => 'BEFORE',
'EVENT_MANIPULATION' => 'UPDATE',
'EVENT_OBJECT_TABLE' => 'test_table',
'ACTION_STATEMENT' => 'BEGIN END',
'DEFINER' => 'definer@localhost',
],
];
}
/** @param mixed[] $trigger */
#[DataProvider('arrayWithInvalidValuesProvider')]
public function testTryFromArrayWithInvalidValues(array $trigger): void
{
$this->assertNull(Trigger::tryFromArray($trigger));
}
/** @return iterable<array-key, array{mixed[]}> */
public static function arrayWithInvalidValuesProvider(): iterable
{
yield [
[
'Trigger' => null,
'Timing' => null,
'Event' => null,
'Table' => null,
'Statement' => null,
'Definer' => null,
],
];
yield [
[
'TRIGGER_NAME' => null,
'ACTION_TIMING' => null,
'EVENT_MANIPULATION' => null,
'EVENT_OBJECT_TABLE' => null,
'ACTION_STATEMENT' => null,
'DEFINER' => null,
],
];
}
public function testGetSqlForDropAndCreate(): void
{
$testTrigger = Trigger::tryFromArray([
'Trigger' => 'a_trigger',
'Timing' => 'BEFORE',
'Event' => 'UPDATE',
'Table' => 'test_table2',
'Statement' => 'BEGIN END',
'Definer' => 'definer@localhost',
]);
$this->assertNotNull($testTrigger);
$this->assertSame(
'DROP TRIGGER IF EXISTS `a_trigger`',
$testTrigger->getDropSql(),
);
$this->assertSame(
"CREATE TRIGGER `a_trigger` BEFORE UPDATE ON `test_table2`\n FOR EACH ROW BEGIN END\n//\n",
$testTrigger->getCreateSql(),
);
$this->assertSame(
"CREATE TRIGGER `a_trigger` BEFORE UPDATE ON `test_table2`\n FOR EACH ROW BEGIN END\n$$\n",
$testTrigger->getCreateSql('$$'),
);
}
}