Browse Source

Add support for checking checkboxes.

mark_story 12 years ago
parent
commit
770bc7c471
2 changed files with 45 additions and 2 deletions
  1. 1 1
      src/View/Input/MultiCheckbox.php
  2. 44 1
      tests/TestCase/View/Input/MultiCheckboxTest.php

+ 1 - 1
src/View/Input/MultiCheckbox.php

@@ -56,7 +56,7 @@ class MultiCheckbox {
 			$checkbox['escape'] = $data['escape'];
 
 			if ($this->_isSelected($key, $data['val'])) {
-				$checkbox['selected'] = true;
+				$checkbox['checked'] = true;
 			}
 			if ($this->_isDisabled($key, $data['disabled'])) {
 				$checkbox['disabled'] = true;

+ 44 - 1
tests/TestCase/View/Input/MultiCheckboxTest.php

@@ -100,7 +100,50 @@ class MultiCheckboxTest extends TestCase {
  * @return void
  */
 	public function testRenderSelected() {
-		$this->markTestIncomplete();
+		$input = new MultiCheckbox($this->templates);
+		$data = [
+			'name' => 'Tags[id]',
+			'options' => [
+				1 => 'CakePHP',
+				'1x' => 'Development',
+			],
+			'val' => [1]
+		];
+		$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);
 	}
 
 /**