<?php
namespace DelTesting\Form\Field;
use Codeception\TestCase\Test;
use Del\Form\Field\CheckBox;
use Del\Form\Field\Text;
use Del\Form\Form;
use Del\Form\Renderer\Field\CheckboxRender;
/**
* User: delboy1978uk
* Date: 05/12/2016
* Time: 02:27
*/
class CheckboxTest extends Test
{
public function testMultipleCheckBoxsInHorizontalForm()
{
$form = new Form('checkboxtest');
$checkbox = new CheckBox('choose');
$checkbox->setLabel('Choose');
$checkbox->setOptions([
'hello' => 'Choose',
'goodbye' => 'Something',
]);
$checkbox->checkValue('hello');
$form->addField($checkbox);
$data = $form->getValues();
$this->assertArrayHasKey('choose', $data);
$this->assertTrue(is_array($data['choose']));
$this->assertTrue($data['choose']['hello']);
}
public function testRequiredCheckbox()
{
$form = new Form('checkboxtest');
$checkbox = new CheckBox('choose');
$checkbox->setLabel('Choose');
$checkbox->setOptions([
'hello' => 'Choose',
'goodbye' => 'Something',
]);
$checkbox->setRequired(true);
$form->addField($checkbox);
$this->assertFalse($form->isValid());
$checkbox->checkValue('goodbye');
$this->assertTrue($form->isValid());
}
public function testPopulateCheckbox()
{
$form = new Form('checkboxtest');
$checkbox = new CheckBox('choose');
$checkbox->setLabel('Choose');
$checkbox->setOptions([
1 => 'Choose',
2 => 'Something',
3 => 'Now',
4 => 'Or',
5 => 'Else',
]);
$checkbox->setValue([1, 3, 5]);
$form->addField($checkbox);
$html = $form->render();
$this->assertEquals('<form name="checkboxtest" method="post" id="checkboxtest"><div class="form-group" id="choose-form-group"><label for="">Choose</label><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="1" checked>Choose</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="2">Something</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="3" checked>Now</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="4">Or</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="5" checked>Else</label></div></div></form>'."\n", $html);
}
public function testUncheckValue()
{
$form = new Form('checkboxtest');
$checkbox = new CheckBox('choose');
$checkbox->setLabel('Choose');
$checkbox->setOptions([
1 => 'Choose',
2 => 'Something',
3 => 'Now',
4 => 'Or',
5 => 'Else',
]);
$checkbox->setValue([1, 3, 5]);
$form->addField($checkbox);
$checkbox->uncheckValue(3);
$html = $form->render();
$this->assertEquals('<form name="checkboxtest" method="post" id="checkboxtest"><div class="form-group" id="choose-form-group"><label for="">Choose</label><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="1" checked>Choose</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="2">Something</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="3">Now</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="4">Or</label></div><div class="checkbox"><label for=""><input type="checkbox" name="choose[]" value="5" checked>Else</label></div></div></form>'."\n", $html);
}
public function testRenderCheckboxInline()
{
$form = new Form('checkboxtest');
$checkbox = new CheckBox('choose');
$checkbox->setLabel('Choose');
$checkbox->setOptions([
1 => 'Choose',
2 => 'Something',
]);
$checkbox->setRenderInline(true);
$form->addField($checkbox);
$html = $form->render();
$this->assertEquals('<form name="checkboxtest" method="post" id="checkboxtest"><div class="form-group" id="choose-form-group"><label for="">Choose</label><label for="" class="checkbox-inline"><input type="checkbox" name="choose[]" value="1">Choose</label><label for="" class="checkbox-inline"><input type="checkbox" name="choose[]" value="2">Something</label></div></form>'."\n", $html);
}
public function testRendererThrowsException()
{
$form = new Form('checkboxtest');
$text = new Text('bang');
$text->setRenderer(new CheckboxRender());
$form->addField($text);
$this->expectException('InvalidArgumentException');
$form->render();
}
public function testRendererThrowsExceptionWithNoOptions()
{
$form = new Form('checkboxtest');
$checkbox = new CheckBox('choose');
$checkbox->setLabel('Choose');
$checkbox->setRenderInline(true);
$form->addField($checkbox);
$this->expectException('LogicException');
$form->render();
}
}
|