Completed
Push — master ( 9f8480...602ed2 )
by Helmut
04:40
created

CheckboxesTest::it_is_unchecked_by_default()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
nc 1
cc 1
eloc 4
nop 0
1
<?php
2
3
namespace Helmut\Forms\Testing;
4
5
class CheckboxesTest extends FormTestCase {
6
7
	/** @test */
8
	public function it_can_be_rendered()
9
	{
10
		$form = $this->form();
11
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
12
		$this->assertContains('<input name="foo_a" type="checkbox"', $form->render());
13
		$this->assertContains('<input name="foo_b" type="checkbox"', $form->render());
14
		$this->assertContains('<input name="foo_c" type="checkbox"', $form->render());
15
	}
16
17
	/** @test */
18
	public function it_is_unchecked_by_default()
19
	{
20
		$form = $this->form();
21
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
22
		$this->assertNotContains('checked="checked"', $form->render());
23
	}	
24
25
	/** @test */
26
	public function it_can_be_checked()
27
	{
28
		$form = $this->form();
29
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked();
30
31
		$this->assertContains('<input name="foo_a" type="checkbox" checked="checked"', $form->render());
32
		$this->assertContains('<input name="foo_b" type="checkbox" checked="checked"', $form->render());
33
		$this->assertContains('<input name="foo_c" type="checkbox" checked="checked"', $form->render());
34
	}
35
36
	/** @test */
37
	public function it_can_be_unchecked()
38
	{
39
		$form = $this->form();
40
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked()->unchecked();
41
42
		$this->assertNotContains('checked="checked"', $form->render());
43
	}
44
45
	/** @test */
46
	public function it_can_check_specific_options()
47
	{
48
		$form = $this->form();
49
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked(['a', 'c']);
50
51
		$this->assertContains('<input name="foo_a" type="checkbox" checked="checked"', $form->render());
52
		$this->assertNotContains('<input name="foo_b" type="checkbox" checked="checked"', $form->render());
53
		$this->assertContains('<input name="foo_c" type="checkbox" checked="checked"', $form->render());
54
	}
55
56
	/** @test */
57
	public function it_can_uncheck_specific_options()
58
	{
59
		$form = $this->form();
60
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked()->unchecked(['a', 'c']);
61
62
		$this->assertNotContains('<input name="foo_a" type="checkbox" checked="checked"', $form->render());
63
		$this->assertContains('<input name="foo_b" type="checkbox" checked="checked"', $form->render());
64
		$this->assertNotContains('<input name="foo_c" type="checkbox" checked="checked"', $form->render());
65
	}	
66
67
	/** @test */
68
	public function it_renders_model_values()
69
	{
70
		$form = $this->form();
71
		$form->defaults($this->model(['foo_a'=>0, 'foo_b'=>1, 'foo_c'=>0]));
72
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
73
74
		$this->assertNotContains('<input name="foo_a" type="checkbox" checked="checked"', $form->render());
75
		$this->assertContains('<input name="foo_b" type="checkbox" checked="checked"', $form->render());
76
		$this->assertNotContains('<input name="foo_c" type="checkbox" checked="checked"', $form->render());
77
	}
78
79
	/** @test */
80
	public function it_can_fill_model_values()
81
	{
82
		$model = $this->model(['foo_a'=>0, 'foo_b'=>0, 'foo_c'=>0]);
83
84
		$form = $this->form();
85
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked(['a', 'c']);
86
		$form->fill($model);
87
88
		$form->assertEquals($model->foo_a, 1);
89
		$form->assertEquals($model->foo_b, 0);
90
		$form->assertEquals($model->foo_c, 1);
91
	}	
92
93
	/** @test */
94
	public function it_provides_expected_values()
95
	{
96
		$form = $this->form();
97
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
98
99
		$expected = ['foo_a'=>false, 'foo_b'=>false, 'foo_c'=>false];
100
		$this->assertSame($form->get('foo'), $expected);
101
	}		
102
103
	/** @test */
104
	public function it_provides_expected_default_values()
105
	{
106
		$form = $this->form();
107
		$form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked(['a', 'c']);
108
109
		$expected = ['foo_a'=>true, 'foo_b'=>false, 'foo_c'=>true];
110
		$this->assertSame($form->get('foo'), $expected);
111
	}
112
113
	/** @test */
114
    public function it_validates_required()
115
    {
116
   		$this->assertValid(function($form) { $form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']); });
117
    	$this->assertValid(function($form) { $form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked()->required(); });
118
119
    	$this->assertNotValid(function($form) { $form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->required(); });
120
    	$this->assertNotValid(function($form) { $form->checkboxes('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->checked()->unchecked()->required(); });
121
	}		
122
123
}
124