Completed
Push — master ( 614a2d...60d066 )
by Shcherbak
05:17
created

CheckboxTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 133
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 5
Bugs 2 Features 1
Metric Value
wmc 7
c 5
b 2
f 1
lcom 1
cbo 4
dl 0
loc 133
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A testUncheckedSubmit() 0 23 1
A getTestCheckedStateDataProvider() 0 22 1
A testTestCheckedState() 0 15 1
B testHandleStringData() 0 27 1
A testRender() 0 5 1
A testInvalidValue() 0 7 1
A testHandleRequest() 0 8 1
1
<?php
2
3
  namespace Tests\Fiv\Form\Element;
4
5
  use Fiv\Form\Element\Checkbox;
6
  use Fiv\Form\Form;
7
  use Fiv\Form\FormData;
8
9
  /**
10
   *
11
   */
12
  class CheckboxTest extends \PHPUnit_Framework_TestCase {
13
14
15
    public function testUncheckedSubmit() {
16
      $form = new Form();
17
      $form->setName('test_form');
18
      $checkbox = $form->checkbox('send_emails')->check();
19
      $this->assertEquals(1, $checkbox->getValue());
20
      $this->assertTrue($checkbox->isChecked());
21
22
      // use unchecked checkbox
23
      $form->handle(new FormData('post', [
24
        'test_form' => 1,
25
      ]));
26
27
28
      $this->assertEmpty($checkbox->getValue());
29
30
      $form->handle(new FormData('post', [
31
        'test_form' => 1,
32
        'send_emails' => 1,
33
      ]));
34
35
      $this->assertEquals(1, $checkbox->getValue());
36
37
    }
38
39
40
    /**
41
     * @return array
42
     */
43
    public function getTestCheckedStateDataProvider() {
44
      return [
45
        [
46
          '1',
47
          1,
48
        ],
49
        [
50
          '0',
51
          0,
52
        ],
53
        [
54
          'ad',
55
          0,
56
        ],
57
        [
58
          1,
59
          1,
60
        ],
61
62
63
      ];
64
    }
65
66
67
    /**
68
     * @dataProvider getTestCheckedStateDataProvider
69
     */
70
    public function testTestCheckedState($input, $expect) {
71
      $form = new Form();
72
      $form->setName('test_form');
73
      $checkbox = $form->checkbox('send_emails')->unCheck();
74
      $this->assertEquals(0, $checkbox->getValue());
75
76
      // submit checked value
77
      $form->handle(new FormData('post', [
78
        'test_form' => 1,
79
        'send_emails' => $input,
80
      ]));
81
82
      $this->assertEquals($expect, $checkbox->getValue());
83
84
    }
85
86
87
    public function testHandleStringData() {
88
      $form = new Form();
89
      $form->setName('test_form');
90
      $checkbox = $form->checkbox('send_emails');
91
92
      $this->assertEquals(0, $checkbox->getValue());
93
      $this->assertFalse($checkbox->isChecked());
94
95
      // submit checked value
96
      $form->handle(new FormData('post', [
97
        'test_form' => '1',
98
        'send_emails' => '1',
99
      ]));
100
101
102
      $this->assertEquals(1, $checkbox->getValue());
103
      $this->assertTrue($checkbox->isChecked());
104
105
      // submit unchecked value
106
      $form->handle(new FormData('post', [
107
        'test_form' => 1,
108
        'send_emails' => 0,
109
      ]));
110
      $this->assertEquals(0, $checkbox->getValue());
111
      $this->assertFalse($checkbox->isChecked());
112
113
    }
114
115
116
    public function testRender() {
117
      $checkbox = new Checkbox();
118
      $checkbox->setName('send_emails');
119
      $this->assertContains('<input type="checkbox" name="send_emails" value="0" ', $checkbox->render());
120
    }
121
122
123
    /**
124
     * @expectedException \InvalidArgumentException
125
     */
126
    public function testInvalidValue() {
127
      $checkbox = new Checkbox();
128
      $this->assertFalse($checkbox->isChecked());
129
130
      $checkbox->setValue(4);
131
132
    }
133
134
135
    public function testHandleRequest() {
136
      $checkbox = new Checkbox();
137
      $checkbox->setName('test');
138
      $checkbox->handle(new FormData('post', ['test' => 1]));
139
      $this->assertTrue($checkbox->isChecked());
140
      $checkbox->handle(new FormData('post', []));
141
      $this->assertFalse($checkbox->isChecked());
142
    }
143
144
  }
145