'', ]; $this->templates = new StringTemplate($templates); } /** * Test rendering simple checkboxes. * * @return void */ public function testRenderSimple() { $checkbox = new Checkbox($this->templates); $data = [ 'name' => 'Comment[spam]', ]; $result = $checkbox->render($data); $expected = [ 'input' => [ 'type' => 'checkbox', 'name' => 'Comment[spam]', 'value' => 1, ] ]; $this->assertTags($result, $expected); $data = [ 'name' => 'Comment[spam]', 'value' => 99, ]; $result = $checkbox->render($data); $expected = [ 'input' => [ 'type' => 'checkbox', 'name' => 'Comment[spam]', 'value' => 99, ] ]; $this->assertTags($result, $expected); } /** * Test rendering disabled checkboxes. * * @return void */ public function testRenderDisabled() { $checkbox = new Checkbox($this->templates); $data = [ 'name' => 'Comment[spam]', 'disabled' => true, ]; $result = $checkbox->render($data); $expected = [ 'input' => [ 'type' => 'checkbox', 'name' => 'Comment[spam]', 'value' => 1, 'disabled' => 'disabled', ] ]; $this->assertTags($result, $expected); } /** * Test rendering checked checkboxes. * * @return void */ public function testRenderChecked() { $checkbox = new Checkbox($this->templates); $data = [ 'name' => 'Comment[spam]', 'value' => 1, 'checked' => 1, ]; $result = $checkbox->render($data); $expected = [ 'input' => [ 'type' => 'checkbox', 'name' => 'Comment[spam]', 'value' => 1, 'checked' => 'checked', ] ]; $this->assertTags($result, $expected); $data = [ 'name' => 'Comment[spam]', 'value' => 1, 'val' => 1, ]; $result = $checkbox->render($data); $this->assertTags($result, $expected); $data['val'] = '1'; $result = $checkbox->render($data); $this->assertTags($result, $expected); $data = [ 'name' => 'Comment[spam]', 'value' => 1, 'val' => '1x', ]; $result = $checkbox->render($data); $expected = [ 'input' => [ 'type' => 'checkbox', 'name' => 'Comment[spam]', 'value' => 1, ] ]; $this->assertTags($result, $expected); } /** * Data provider for checkbox values * * @return array */ public static function checkedProvider() { return [ ['checked'], ['1'], [1], [true], ]; } /** * Test rendering checked checkboxes with value. * * @dataProvider checkedProvider * @return void */ public function testRenderCheckedValue($checked) { $checkbox = new Checkbox($this->templates); $data = [ 'name' => 'Comment[spam]', 'value' => 1, 'checked' => $checked, ]; $result = $checkbox->render($data); $expected = [ 'input' => [ 'type' => 'checkbox', 'name' => 'Comment[spam]', 'value' => 1, 'checked' => 'checked', ] ]; $this->assertTags($result, $expected); } }