| 
<?php
 namespace DelTesting\Form\Field;
 
 use Codeception\TestCase\Test;
 use Del\Form\Field\Submit;
 use Del\Form\Field\Text;
 use Del\Form\Field\Select;
 use Del\Form\Form;
 use Del\Form\Renderer\Field\SelectRender;
 
 /**
 * User: delboy1978uk
 * Date: 05/12/2016
 * Time: 02:27
 */
 class SelectTest extends Test
 {
 public function testSelect()
 {
 $form = new Form('dropdown');
 $select = new Select('selection');
 $select->setOption(1, 'hello');
 $select->setOption(2, 'world');
 $form->addField($select);
 $html = $form->render();
 $this->assertEquals('<form name="dropdown" method="post" id="dropdown"><div class="form-group" id="selection-form-group"><label for=""></label><select name="selection" type="text" class="form-control"><option value="1">hello</option><option value="2">world</option></select></div></form>'."\n", $html);
 }
 
 public function testSelectThrowsException()
 {
 $form = new Form('dropdown');
 $text = new Text('selection');
 $text->setRenderer(new SelectRender());
 $form->addField($text);
 $this->expectException('InvalidArgumentException');
 $form->render();
 }
 
 
 public function testGetSetOptions()
 {
 $form = new Form('dropdown');
 $select = new Select('selection');
 $select->setOptions([
 1 => 'hello',
 2 => 'world',
 ]);
 $options = $select->getOptions();
 $this->assertArrayHasKey(1, $options);
 $this->assertArrayHasKey(2, $options);
 $this->assertEquals('hello', $options[1]);
 $this->assertEquals('world', $options[2]);
 $this->assertEquals('world', $select->getOption(2));
 $form->addField($select);
 $html = $form->render();
 $this->assertEquals('<form name="dropdown" method="post" id="dropdown"><div class="form-group" id="selection-form-group"><label for=""></label><select name="selection" type="text" class="form-control"><option value="1">hello</option><option value="2">world</option></select></div></form>'."\n", $html);
 }
 
 
 public function testRenderSelectWithValue()
 {
 $form = new Form('choose');
 $select = new Select('selection');
 $select->setOptions([
 'MCD' => 'McDonalds',
 'BK' => 'Burger King',
 'Q' => 'Quick',
 ]);
 $submit = new Submit('submit');
 $form->addField($select);
 $form->addField($submit);
 $form->populate([
 'selection' => 'Q',
 ]);
 $html = $form->render();
 $this->assertEquals('<form name="choose" method="post" id="choose"><div class="form-group" id="selection-form-group"><label for=""></label><select name="selection" type="text" class="form-control" value="Q"><option value="MCD">McDonalds</option><option value="BK">Burger King</option><option value="Q" selected>Quick</option></select></div><div class="form-group" id="submit-form-group"><label for=""></label><input name="submit" value="submit" type="submit" class="btn btn-primary"></div></form>'."\n", $html);
 }
 }
 |