Completed
Pull Request — master (#28)
by Vitaliy
03:13
created

CheckboxTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
B testUncheckedSubmit() 0 24 1
A testCheckedSubmit() 0 16 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\RequestContext;
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->setData([
0 ignored issues
show
Deprecated Code introduced by
The method Fiv\Form\Form::setData() has been deprecated.

This method has been deprecated.

Loading history...
24
        'test_form' => 1,
25
      ]);
26
27
28
      $this->assertEquals(0, $checkbox->getValue());
29
30
31
      $form->setData([
0 ignored issues
show
Deprecated Code introduced by
The method Fiv\Form\Form::setData() has been deprecated.

This method has been deprecated.

Loading history...
32
        'test_form' => 1,
33
        'send_emails' => 0,
34
      ]);
35
36
      $this->assertEquals(1, $checkbox->getValue());
37
38
    }
39
40
41
    public function testCheckedSubmit() {
42
      $form = new Form();
43
      $form->setName('test_form');
44
      $checkbox = $form->checkbox('send_emails')->unCheck();
45
      $this->assertEquals(0, $checkbox->getValue());
46
      $this->assertFalse($checkbox->isChecked());
47
48
      // use unchecked checkbox
49
      $form->setData([
0 ignored issues
show
Deprecated Code introduced by
The method Fiv\Form\Form::setData() has been deprecated.

This method has been deprecated.

Loading history...
50
        'test_form' => 1,
51
        'send_emails' => 0, // any value
52
      ]);
53
54
      $this->assertEquals(1, $checkbox->getValue());
55
      $this->assertTrue($checkbox->isChecked());
56
    }
57
58
59
    public function testRender() {
60
      $checkbox = new Checkbox();
61
      $checkbox->setName('send_emails');
62
      $this->assertContains('<input type="checkbox" name="send_emails" value="0" ', $checkbox->render());
63
    }
64
65
66
    /**
67
     * @expectedException \InvalidArgumentException
68
     */
69
    public function testInvalidValue() {
70
      $checkbox = new Checkbox();
71
      $this->assertFalse($checkbox->isChecked());
72
73
      $checkbox->setValue(4);
74
75
    }
76
77
78
    public function testHandleRequest() {
79
      $checkbox = new Checkbox();
80
      $checkbox->setName('test');
81
      $checkbox->handleRequestContext(new RequestContext('post', ['test' => 1]));
82
      $this->assertTrue($checkbox->isChecked());
83
      $checkbox->handleRequestContext(new RequestContext('post', []));
84
      $this->assertFalse($checkbox->isChecked());
85
    }
86
87
  }
88