Passed
Push — master ( 9f0115...a4cd98 )
by Robbie
02:45
created

EditableCustomRuleTest::testToggleDisplayText()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace SilverStripe\UserForms\Tests\Model;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\UserForms\Model\EditableCustomRule;
7
8
/**
9
 * Class EditableCustomRulesTest
10
 */
11
class EditableCustomRuleTest extends SapphireTest
12
{
13
    protected static $fixture_file = 'EditableCustomRuleTest.yml';
14
15
    public function testBuildExpression()
16
    {
17
        /** @var EditableCustomRule $rule1 */
18
        $rule1 = $this->objFromFixture(EditableCustomRule::class, 'rule1');
19
        $result1 = $rule1->buildExpression();
20
21
        //Dropdowns expect change event
22
        $this->assertEquals('change', $result1['event']);
23
        $this->assertNotEmpty($result1['operation']);
24
25
        //Check for equals sign
26
        $this->assertContains('==', $result1['operation']);
27
28
        /** @var EditableCustomRule $rule2 */
29
        $rule2 = $this->objFromFixture(EditableCustomRule::class, 'rule2');
30
        $result2 = $rule2->buildExpression();
31
32
        //TextField expect change event
33
        $this->assertEquals('keyup', $result2['event']);
34
        $this->assertNotEmpty($result2['operation']);
35
36
        //Check for greater than sign
37
        $this->assertContains('>', $result2['operation']);
38
    }
39
40
    /**
41
     * Test that methods are returned for manipulating the presence of the "hide" CSS class depending
42
     * on whether the field should be hidden or shown
43
     */
44
    public function testToggleDisplayText()
45
    {
46
        /** @var EditableCustomRule $rule1 */
47
        $rule1 = $this->objFromFixture(EditableCustomRule::class, 'rule1');
48
        $this->assertSame('addClass("hide")', $rule1->toggleDisplayText('show'));
49
        $this->assertSame('removeClass("hide")', $rule1->toggleDisplayText('hide'));
50
        $this->assertSame('removeClass("hide")', $rule1->toggleDisplayText('show', true));
51
        $this->assertSame('addClass("hide")', $rule1->toggleDisplayText('hide', true));
52
    }
53
54
    public function testToggleDisplayEvent()
55
    {
56
        /** @var EditableCustomRule $rule1 */
57
        $rule1 = $this->objFromFixture(EditableCustomRule::class, 'rule1');
58
        $this->assertSame('userform.field.hide', $rule1->toggleDisplayEvent('show'));
59
        $this->assertSame('userform.field.show', $rule1->toggleDisplayEvent('hide'));
60
        $this->assertSame('userform.field.show', $rule1->toggleDisplayEvent('show', true));
61
        $this->assertSame('userform.field.hide', $rule1->toggleDisplayEvent('hide', true));
62
    }
63
}
64