80 lines
2.5 KiB
PHP
80 lines
2.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Engelsystem\Test\Utils;
|
|
|
|
use PHPUnit\Framework\Assert;
|
|
|
|
/**
|
|
* Class that provides some form field assertions.
|
|
*/
|
|
final class FormFieldAssert
|
|
{
|
|
/**
|
|
* Asserts that the HTML does contain an INPUT field with the given name.
|
|
*/
|
|
public static function assertContainsInputField(string $name, string $html): void
|
|
{
|
|
Assert::assertMatchesRegularExpression(self::makeInputPattern('input', $name), $html);
|
|
}
|
|
|
|
/**
|
|
* Asserts that the HTML does not contain an INPUT field with the given name.
|
|
*/
|
|
public static function assertNotContainsInputField(string $name, string $html): void
|
|
{
|
|
Assert::assertDoesNotMatchRegularExpression(self::makeInputPattern('input', $name), $html);
|
|
}
|
|
|
|
/**
|
|
* Asserts that the HTML does contain a SELECT field with the given name.
|
|
*/
|
|
public static function assertContainsSelectField(string $name, string $html): void
|
|
{
|
|
Assert::assertMatchesRegularExpression(self::makeInputPattern('select', $name), $html);
|
|
}
|
|
|
|
/**
|
|
* Asserts that the HTML does not contain a SELECT field with the given name.
|
|
*/
|
|
public static function assertNotContainsSelectField(string $name, string $html): void
|
|
{
|
|
Assert::assertDoesNotMatchRegularExpression(self::makeInputPattern('select', $name), $html);
|
|
}
|
|
|
|
/**
|
|
* Asserts that the HTML does contain an INPUT field of the type "checkbox" with the give name and
|
|
* with the "checked" attribute.
|
|
*/
|
|
public static function assertContainsCheckedCheckbox(string $name, string $html): void
|
|
{
|
|
Assert::assertMatchesRegularExpression(self::makeCheckedCheckboxPattern($name), $html);
|
|
}
|
|
|
|
/**
|
|
* Asserts that the HTML does contain an INPUT field of the type "checkbox" with the given name and
|
|
* without the "checked" attribute.
|
|
*/
|
|
public static function assertContainsUncheckedCheckbox(string $name, string $html): void
|
|
{
|
|
self::assertContainsInputField($name, $html);
|
|
Assert::assertDoesNotMatchRegularExpression(self::makeCheckedCheckboxPattern($name), $html);
|
|
}
|
|
|
|
private static function makeInputPattern(string $tag, string $name): string
|
|
{
|
|
return strtr('/<$TAG[^>]*name="$NAME"/s', [
|
|
'$TAG' => $tag,
|
|
'$NAME' => $name,
|
|
]);
|
|
}
|
|
|
|
private static function makeCheckedCheckboxPattern(string $name): string
|
|
{
|
|
return strtr('/<input[^>]*type="checkbox"[^>]*name="$NAME"[^>]*checked.*?/s', [
|
|
'$NAME' => $name,
|
|
]);
|
|
}
|
|
}
|