AddToCampaignValidatorTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 93
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 57
c 1
b 0
f 0
dl 0
loc 93
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 7 1
A testValidationSuccess() 0 19 1
A testValidationFailed() 0 49 1
1
<?php
2
3
namespace SilverStripe\CampaignAdmin\Tests;
4
5
use SilverStripe\CampaignAdmin\AddToCampaignHandler;
6
use SilverStripe\CampaignAdmin\AddToCampaignValidator;
7
use SilverStripe\Dev\SapphireTest;
8
use SilverStripe\Versioned\ChangeSet;
9
10
class AddToCampaignValidatorTest extends SapphireTest
11
{
12
    protected static $extra_dataobjects = [
13
        AddToCampaignValidatorTest\TestObject::class,
14
    ];
15
16
    protected static $fixture_file = 'AddToCampaignValidatorTest.yml';
17
18
    /**
19
     * @var AddToCampaignValidator
20
     */
21
    protected $validator = null;
22
23
    protected function setUp(): void
24
    {
25
        parent::setUp();
26
        $this->logInWithPermission('ADMIN');
27
        $obj = $this->objFromFixture(AddToCampaignValidatorTest\TestObject::class, 'object1');
28
        $form = AddToCampaignHandler::create()->Form($obj);
29
        $this->validator = $form->getValidator();
30
    }
31
32
    public function testValidationSuccess()
33
    {
34
        $campaign1 = $this->objFromFixture(ChangeSet::class, 'changeset1');
35
        $this->assertInstanceOf(AddToCampaignValidator::class, $this->validator);
36
37
        // Valid states
38
        $this->assertTrue($this->validator->php([
39
            'AddNewSelect' => null,
40
            'Campaign' => $campaign1->ID
41
        ]));
42
        $this->assertTrue($this->validator->php([
43
            'AddNewSelect' => true,
44
            'Campaign' => null,
45
            'NewTitle' => 'New Campaign',
46
        ]));
47
        $this->assertTrue($this->validator->php([
48
            'AddNewSelect' => true,
49
            'Campaign' => $campaign1->ID,
50
            'NewTitle' => 'New Campaign',
51
        ]));
52
    }
53
54
    public function testValidationFailed()
55
    {
56
        $campaign1 = $this->objFromFixture(ChangeSet::class, 'changeset1');
57
        $this->assertInstanceOf(AddToCampaignValidator::class, $this->validator);
58
59
        // Invalid states
60
        $this->validator->removeValidation()->setEnabled(true);
61
        $this->assertFalse($this->validator->php([
62
            'AddNewSelect' => null,
63
            'Campaign' => 0
64
        ]));
65
        $this->assertEquals(
66
            [[
67
                'message' => 'Please select a campaign',
68
                'fieldName' => 'Campaign',
69
                'messageType' => 'error',
70
                'messageCast' => 'text',
71
            ]],
72
            $this->validator->getResult()->getMessages()
73
        );
74
        $this->validator->removeValidation()->setEnabled(true);
75
        $this->assertFalse($this->validator->php([
76
            'AddNewSelect' => 1,
77
            'Campaign' => 0,
78
            'NewTitle' => null
79
        ]));
80
        $this->assertEquals(
81
            [[
82
                'message' => 'Please enter a title for the new campaign',
83
                'fieldName' => 'NewTitle',
84
                'messageType' => 'error',
85
                'messageCast' => 'text',
86
            ]],
87
            $this->validator->getResult()->getMessages()
88
        );
89
        $this->validator->removeValidation()->setEnabled(true);
90
        $this->assertFalse($this->validator->php([
91
            'AddNewSelect' => 1,
92
            'Campaign' => $campaign1->ID, // Ignored because AddNewSelect is checked
93
            'NewTitle' => null
94
        ]));
95
        $this->assertEquals(
96
            [[
97
                'message' => 'Please enter a title for the new campaign',
98
                'fieldName' => 'NewTitle',
99
                'messageType' => 'error',
100
                'messageCast' => 'text',
101
            ]],
102
            $this->validator->getResult()->getMessages()
103
        );
104
    }
105
}
106