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

DropdownTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 75
Duplicated Lines 57.33 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
c 1
b 0
f 0
lcom 1
cbo 2
dl 43
loc 75
rs 10

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace Helmut\Forms\Testing;
4
5
class DropdownTest extends FormTestCase {
6
7
	/** @test */
8
	public function it_can_be_rendered()
9
	{
10
		$form = $this->form();
11
		$form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
12
		$this->assertContains('<select name="foo"', $form->render());
13
		$this->assertContains('<option value="a">A</option>', $form->render());
14
		$this->assertContains('<option value="b">B</option>', $form->render());
15
		$this->assertContains('<option value="c">C</option>', $form->render());
16
	}
17
18
	/** @test */
19
	public function it_renders_a_default_value()
20
	{
21
		$form = $this->form();
22
		$form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->default('b');
23
24
		$this->assertContains('<option value="a">A</option>', $form->render());
25
		$this->assertContains('<option value="b" selected="selected">B</option>', $form->render());
26
		$this->assertContains('<option value="c">C</option>', $form->render());
27
	}
28
29
	/** @test */
30
	public function it_renders_model_values()
31
	{
32
		$form = $this->form();
33
		$form->defaults($this->model(['foo'=>'b']));
34
		$form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
35
36
		$this->assertContains('<option value="a">A</option>', $form->render());
37
		$this->assertContains('<option value="b" selected="selected">B</option>', $form->render());
38
		$this->assertContains('<option value="c">C</option>', $form->render());
39
	}
40
41
	/** @test */
42
	public function it_can_fill_model_values()
43
	{
44
		$model = $this->model(['foo'=>'']);
45
46
		$form = $this->form();
47
		$form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->default('b');
48
		$form->fill($model);
49
50
		$form->assertEquals($model->foo, 'b');
51
	}	
52
53
	/** @test */
54
	public function it_provides_expected_values()
55
	{
56
		$form = $this->form();
57
		$form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']);
58
59
		$this->assertSame($form->get('foo'), '');
60
	}	
61
62
	/** @test */
63
	public function it_provides_expected_default_values()
64
	{
65
		$form = $this->form();
66
		$form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->default('c');
67
68
		$this->assertSame($form->get('foo'), 'c');
69
	}
70
71
	/** @test */
72
    public function it_validates_required()
73
    {
74
    	$this->assertValid(function($form) { $form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C']); });
75
76
    	$this->assertNotValid(function($form) { $form->dropdown('foo')->options(['a'=>'A', 'b'=>'B', 'c'=>'C'])->required(); });
77
	}	
78
79
}
80