phpmyadmin/test/classes/Identifiers/DatabaseNameTest.php
Maurício Meneghini Fauth 1be42d13de
Create the Identifiers\Identifier interface
Changes Dbal\DatabaseName, Dbal\TableName and Triggers\TriggerName to
implements the new Identifier\Identifier interface.
Moves Dbal\DatabaseName, Dbal\TableName and Triggers\TriggerName to the
Identifiers namespace.
Renames the tryFromValue() and fromValue() methods to just tryFrom() and
from() respectively.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2023-06-01 19:09:25 -03:00

67 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Identifiers;
use PhpMyAdmin\Identifiers\DatabaseName;
use PhpMyAdmin\Identifiers\InvalidDatabaseName;
use PHPUnit\Framework\TestCase;
use function str_repeat;
/**
* @covers \PhpMyAdmin\Identifiers\DatabaseName
* @covers \PhpMyAdmin\Identifiers\InvalidDatabaseName
*/
class DatabaseNameTest extends TestCase
{
/** @dataProvider providerForTestValidNames */
public function testValidName(string $validName): void
{
$name = DatabaseName::from($validName);
$this->assertEquals($validName, $name->getName());
$this->assertEquals($validName, (string) $name);
}
/** @dataProvider providerForTestValidNames */
public function testTryFromValueWithValidName(string $validName): void
{
$name = DatabaseName::tryFrom($validName);
$this->assertNotNull($name);
$this->assertEquals($validName, $name->getName());
$this->assertEquals($validName, (string) $name);
}
/** @return iterable<int, string[]> */
public static function providerForTestValidNames(): iterable
{
yield ['name'];
yield ['0'];
yield [str_repeat('a', 64)];
}
/** @dataProvider providerForTestInvalidNames */
public function testInvalidNames(mixed $name, string $exceptionMessage): void
{
$this->assertNull(DatabaseName::tryFrom($name));
$this->expectException(InvalidDatabaseName::class);
$this->expectExceptionMessage($exceptionMessage);
DatabaseName::from($name);
}
/**
* @return iterable<string, mixed[]>
* @psalm-return iterable<string, array{mixed, non-empty-string}>
*/
public static function providerForTestInvalidNames(): iterable
{
yield 'null' => [null, 'The database name must be a non-empty string.'];
yield 'integer' => [1, 'The database name must be a non-empty string.'];
yield 'array' => [['database'], 'The database name must be a non-empty string.'];
yield 'empty string' => ['', 'The database name must be a non-empty string.'];
yield 'too long name' => [str_repeat('a', 65), 'The database name cannot be longer than 64 characters.'];
yield 'trailing space' => ['a ', 'The database name cannot end with a space character.'];
}
}