88 lines
2.4 KiB
PHP
Raw Normal View History

<?php
2016-10-14 14:30:05 +13:00
namespace SilverStripe\Forms\Tests;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Forms\Tip;
2024-10-10 19:59:07 +13:00
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());
}
2024-10-10 19:59:07 +13:00
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());
}
}