mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
88 lines
2.4 KiB
PHP
88 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace SilverStripe\Forms\Tests;
|
|
|
|
use SilverStripe\Dev\SapphireTest;
|
|
use SilverStripe\Forms\TextField;
|
|
use SilverStripe\Forms\RequiredFields;
|
|
use SilverStripe\Forms\Tip;
|
|
use PHPUnit\Framework\Attributes\DataProvider;
|
|
|
|
class TextFieldTest extends SapphireTest
|
|
{
|
|
|
|
/**
|
|
* Tests the TextField Max Length Validation Failure
|
|
*/
|
|
public function testMaxLengthValidationFail()
|
|
{
|
|
$textField = new TextField('TestField');
|
|
$textField->setMaxLength(5);
|
|
$textField->setValue("John Doe"); // 8 characters, so should fail
|
|
$result = $textField->validate(new RequiredFields());
|
|
$this->assertFalse($result);
|
|
}
|
|
|
|
/**
|
|
* Tests the TextField Max Length Validation Success
|
|
*/
|
|
public function testMaxLengthValidationSuccess()
|
|
{
|
|
$textField = new TextField('TestField');
|
|
$textField->setMaxLength(5);
|
|
$textField->setValue("John"); // 4 characters, so should pass
|
|
$result = $textField->validate(new RequiredFields());
|
|
$this->assertTrue($result);
|
|
}
|
|
|
|
/**
|
|
* Ensures that when a Tip is applied to the field, it outputs it in the schema
|
|
*/
|
|
public function testTipIsIncludedInSchema()
|
|
{
|
|
$textField = new TextField('TestField');
|
|
$this->assertArrayNotHasKey('tip', $textField->getSchemaDataDefaults());
|
|
|
|
$textField->setTip(new Tip('TestTip'));
|
|
$this->assertArrayHasKey('tip', $textField->getSchemaDataDefaults());
|
|
}
|
|
|
|
public static function provideSetValue(): array
|
|
{
|
|
return [
|
|
'string' => [
|
|
'value' => 'fish',
|
|
'expected' => 'fish',
|
|
],
|
|
'string-blank' => [
|
|
'value' => '',
|
|
'expected' => '',
|
|
],
|
|
'null' => [
|
|
'value' => null,
|
|
'expected' => '',
|
|
],
|
|
'zero' => [
|
|
'value' => 0,
|
|
'expected' => 0,
|
|
],
|
|
'true' => [
|
|
'value' => true,
|
|
'expected' => true,
|
|
],
|
|
'false' => [
|
|
'value' => false,
|
|
'expected' => false,
|
|
],
|
|
];
|
|
}
|
|
|
|
#[DataProvider('provideSetValue')]
|
|
public function testSetValue(mixed $value, mixed $expected): void
|
|
{
|
|
$field = new TextField('TestField');
|
|
$field->setValue($value);
|
|
$this->assertSame($expected, $field->getValue());
|
|
}
|
|
}
|