silverstripe-framework/tests/php/Forms/DateFieldDisabledTest.php
2024-09-30 18:32:17 +13:00

84 lines
2.8 KiB
PHP

<?php
namespace SilverStripe\Forms\Tests;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Forms\DateField_Disabled;
use SilverStripe\i18n\i18n;
use SilverStripe\ORM\FieldType\DBDatetime;
class DateFieldDisabledTest extends SapphireTest
{
protected function setUp(): void
{
parent::setUp();
// Set to an explicit locale so project-level locale swapping doesn't affect tests
i18n::set_locale('en_US');
DBDatetime::set_mock_now('2011-02-01 8:34:00');
}
public function testFieldToday()
{
// Today date with normal local
$actual = DateField_Disabled::create('Test')
->setValue('2011-02-01')
->Field();
$expected = '<span class="readonly" id="Test">Feb 1, 2011 (today)</span>';
$this->assertEquals($expected, $actual);
// Test today's date with time
$actual = DateField_Disabled::create('Test')
->setValue('2011-02-01 10:34:00')
->Field();
$this->assertEquals($expected, $actual);
}
public function testFieldWithDifferentDay()
{
// Test past
$actual = DateField_Disabled::create('Test')
->setValue('2011-01-27')
->Field();
$expected = '<span class="readonly" id="Test">Jan 27, 2011, 5 days ago</span>';
$this->assertEquals($expected, $actual);
// Test future
$actual = DateField_Disabled::create('Test')
->setValue('2011-02-06')
->Field();
$expected = '<span class="readonly" id="Test">Feb 6, 2011, in 5 days</span>';
$this->assertEquals($expected, $actual);
}
public function testFieldWithDifferentLocal()
{
// Test different local
$actual = DateField_Disabled::create('Test')
->setValue('2011-02-06')
->setHTML5(false)
->setLocale('de_DE')
->Field();
$expected = '<span class="readonly" id="Test">06.02.2011, in 5 days</span>';
$this->assertEquals($expected, $actual);
}
public function testFieldWithNonValue()
{
// Test none value
$actual = DateField_Disabled::create('Test')->Field();
$expected = '<span class="readonly" id="Test"><i>(not set)</i></span>';
$this->assertEquals($expected, $actual);
$actual = DateField_Disabled::create('Test')->setValue('This is not a date')->Field();
$this->assertEquals($expected, $actual);
}
public function testType()
{
$field = new DateField_Disabled('Test');
$result = $field->Type();
$this->assertStringContainsString('readonly', $result, 'Disabled field should be treated as readonly');
$this->assertStringContainsString('date_disabled', $result, 'Field should contain date_disabled class');
}
}