This repository has been archived by the owner on Jan 8, 2020. It is now read-only.
/
MultiCheckboxTest.php
116 lines (106 loc) · 3.7 KB
/
MultiCheckboxTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Form
* @subpackage UnitTest
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace ZendTest\Form\Element;
use PHPUnit_Framework_TestCase as TestCase;
use Zend\Form\Element\MultiCheckbox as MultiCheckboxElement;
use Zend\Form\Factory;
class MultiCheckboxTest extends TestCase
{
public function useHiddenAttributeDataProvider()
{
return array(array(true), array(false));
}
/**
* @dataProvider useHiddenAttributeDataProvider
*/
public function testProvidesInputSpecificationThatIncludesValidatorsBasedOnAttributes($useHiddenElement)
{
$element = new MultiCheckboxElement();
$options = array(
'1' => 'Option 1',
'2' => 'Option 2',
'3' => 'Option 3',
);
$element->setAttributes(array(
'options' => $options,
));
$element->setUseHiddenElement($useHiddenElement);
$inputSpec = $element->getInputSpecification();
$this->assertArrayHasKey('validators', $inputSpec);
$this->assertInternalType('array', $inputSpec['validators']);
$expectedClasses = array(
'Zend\Validator\Explode'
);
foreach ($inputSpec['validators'] as $validator) {
$class = get_class($validator);
$this->assertTrue(in_array($class, $expectedClasses), $class);
switch ($class) {
case 'Zend\Validator\Explode':
$inArrayValidator = $validator->getValidator();
$this->assertInstanceOf('Zend\Validator\InArray', $inArrayValidator);
break;
default:
break;
}
}
}
public function multiCheckboxOptionsDataProvider()
{
return array(
array(
array('foo', 'bar'),
array(
'foo' => 'My Foo Label',
'bar' => 'My Bar Label',
)
),
array(
array('foo', 'bar'),
array(
0 => array('label' => 'My Foo Label', 'value' => 'foo'),
1 => array('label' => 'My Bar Label', 'value' => 'bar'),
)
),
);
}
/**
* @dataProvider multiCheckboxOptionsDataProvider
*/
public function testInArrayValidationOfOptions($valueTests, $options)
{
$element = new MultiCheckboxElement('my-checkbox');
$element->setAttributes(array(
'options' => $options,
));
$inputSpec = $element->getInputSpecification();
$this->assertArrayHasKey('validators', $inputSpec);
$explodeValidator = $inputSpec['validators'][0];
$this->assertInstanceOf('Zend\Validator\Explode', $explodeValidator);
$this->assertTrue($explodeValidator->isValid($valueTests));
}
public function testAttributeType()
{
$element = new MultiCheckboxElement();
$attributes = $element->getAttributes();
$this->assertArrayHasKey('type', $attributes);
$this->assertEquals('multi_checkbox', $attributes['type']);
}
}