'',
'label' => '',
'checkboxContainer' => '
{{input}}{{label}}
',
];
$this->templates = new StringTemplate($templates);
}
/**
* Test render simple option sets.
*
* @return void
*/
public function testRenderSimple() {
$input = new MultiCheckbox($this->templates);
$data = [
'name' => 'Tags[id]',
'options' => [
1 => 'CakePHP',
2 => 'Development',
]
];
$result = $input->render($data);
$expected = [
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 1,
'id' => 'tags-id-1',
]],
['label' => ['for' => 'tags-id-1']],
'CakePHP',
'/label',
'/div',
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 2,
'id' => 'tags-id-2',
]],
['label' => ['for' => 'tags-id-2']],
'Development',
'/label',
'/div',
];
$this->assertTags($result, $expected);
}
/**
* Test render complex and additional attributes.
*
* @return void
*/
public function testRenderComplex() {
$input = new MultiCheckbox($this->templates);
$data = [
'name' => 'Tags[id]',
'options' => [
['value' => '1', 'text' => 'CakePHP', 'data-test' => 'val'],
['value' => '2', 'text' => 'Development', 'class' => 'custom'],
]
];
$result = $input->render($data);
$expected = [
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 1,
'id' => 'tags-id-1',
'data-test' => 'val',
]],
['label' => ['for' => 'tags-id-1']],
'CakePHP',
'/label',
'/div',
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 2,
'id' => 'tags-id-2',
'class' => 'custom',
]],
['label' => ['for' => 'tags-id-2']],
'Development',
'/label',
'/div',
];
$this->assertTags($result, $expected);
}
/**
* Test render escpaing options.
*
* @return void
*/
public function testRenderEscaping() {
$input = new MultiCheckbox($this->templates);
$data = [
'name' => 'Tags[id]',
'options' => [
'>' => '>>',
]
];
$result = $input->render($data);
$expected = [
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => '>',
'id' => 'tags-id',
]],
['label' => ['for' => 'tags-id']],
'>>',
'/label',
'/div',
];
$this->assertTags($result, $expected);
}
/**
* Test render selected checkboxes.
*
* @return void
*/
public function testRenderSelected() {
$input = new MultiCheckbox($this->templates);
$data = [
'name' => 'Tags[id]',
'options' => [
1 => 'CakePHP',
'1x' => 'Development',
],
'val' => [1],
'disabled' => false
];
$result = $input->render($data);
$expected = [
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 1,
'id' => 'tags-id-1',
'checked' => 'checked'
]],
['label' => ['for' => 'tags-id-1']],
'CakePHP',
'/label',
'/div',
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => '1x',
'id' => 'tags-id-1x',
]],
['label' => ['for' => 'tags-id-1x']],
'Development',
'/label',
'/div',
];
$this->assertTags($result, $expected);
$data['val'] = 1;
$result = $input->render($data);
$this->assertTags($result, $expected);
$data['val'] = '1';
$result = $input->render($data);
$this->assertTags($result, $expected);
}
/**
* Test render disabled checkboxes.
*
* @return void
*/
public function testRenderDisabled() {
$input = new MultiCheckbox($this->templates);
$data = [
'name' => 'Tags[id]',
'options' => [
1 => 'CakePHP',
'1x' => 'Development',
],
'disabled' => true,
];
$result = $input->render($data);
$expected = [
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 1,
'id' => 'tags-id-1',
'disabled' => 'disabled'
]],
['label' => ['for' => 'tags-id-1']],
'CakePHP',
'/label',
'/div',
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => '1x',
'id' => 'tags-id-1x',
'disabled' => 'disabled'
]],
['label' => ['for' => 'tags-id-1x']],
'Development',
'/label',
'/div',
];
$this->assertTags($result, $expected);
$data['disabled'] = ['1', '1x'];
$this->assertTags($result, $expected);
$data = [
'name' => 'Tags[id]',
'options' => [
1 => 'CakePHP',
'1x' => 'Development',
],
'disabled' => [1]
];
$result = $input->render($data);
$expected = [
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => 1,
'id' => 'tags-id-1',
'disabled' => 'disabled'
]],
['label' => ['for' => 'tags-id-1']],
'CakePHP',
'/label',
'/div',
['div' => ['class' => 'checkbox']],
['input' => [
'type' => 'checkbox',
'name' => 'Tags[id][]',
'value' => '1x',
'id' => 'tags-id-1x',
]],
['label' => ['for' => 'tags-id-1x']],
'Development',
'/label',
'/div',
];
$this->assertTags($result, $expected);
}
}