Passed
Push — programming-is-horrible ( 483908...9ee56e )
by Sam
08:38
created

DateFieldDisabledTest::testFieldWithDifferentDay()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 15
rs 9.9332
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\Forms\Tests;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\Forms\DateField_Disabled;
7
use SilverStripe\i18n\i18n;
8
use SilverStripe\ORM\FieldType\DBDatetime;
9
10
/**
11
 * @skipUpgrade
12
 */
13
class DateFieldDisabledTest extends SapphireTest
14
{
15
    protected function setUp()
16
    {
17
        parent::setUp();
18
        i18n::set_locale('en_NZ');
19
        DBDatetime::set_mock_now('2011-02-01 8:34:00');
20
    }
21
22
    public function testFieldToday()
23
    {
24
        // Today date with normal local
25
        $actual = DateField_Disabled::create('Test')
26
            ->setValue('2011-02-01')
27
            ->Field();
28
        $expected = '<span class="readonly" id="Test">1/02/2011 (today)</span>';
29
        $this->assertEquals($expected, $actual);
30
31
        // Test today's date with time
32
        $actual = DateField_Disabled::create('Test')
33
            ->setValue('2011-02-01 10:34:00')
34
            ->Field();
35
        $this->assertEquals($expected, $actual);
36
    }
37
38
    public function testFieldWithDifferentDay()
39
    {
40
        // Test past
41
        $actual = DateField_Disabled::create('Test')
42
            ->setValue('2011-01-27')
43
            ->Field();
44
        $expected = '<span class="readonly" id="Test">27/01/2011, 5 days ago</span>';
45
        $this->assertEquals($expected, $actual);
46
47
        // Test future
48
        $actual = DateField_Disabled::create('Test')
49
            ->setValue('2011-02-06')
50
            ->Field();
51
        $expected = '<span class="readonly" id="Test">6/02/2011, in 5 days</span>';
52
        $this->assertEquals($expected, $actual);
53
    }
54
55
    public function testFieldWithDifferentLocal()
56
    {
57
        // Test different local
58
        $actual = DateField_Disabled::create('Test')
59
            ->setValue('2011-02-06')
60
            ->setHTML5(false)
61
            ->setLocale('de_DE')
62
            ->Field();
63
        $expected = '<span class="readonly" id="Test">06.02.2011, in 5 days</span>';
64
        $this->assertEquals($expected, $actual);
65
    }
66
67
    public function testFieldWithNonValue()
68
    {
69
        // Test none value
70
        $actual = DateField_Disabled::create('Test')->Field();
71
        $expected = '<span class="readonly" id="Test"><i>(not set)</i></span>';
72
        $this->assertEquals($expected, $actual);
73
74
        $actual = DateField_Disabled::create('Test')->setValue('This is not a date')->Field();
75
        $this->assertEquals($expected, $actual);
76
    }
77
78
    public function testType()
79
    {
80
        $field = new DateField_Disabled('Test');
81
        $result = $field->Type();
82
        $this->assertContains('readonly', $result, 'Disabled field should be treated as readonly');
83
        $this->assertContains('date_disabled', $result, 'Field should contain date_disabled class');
84
    }
85
}
86