| 
<?php
 namespace DelTesting\Form\Renderer;
 
 use Codeception\TestCase\Test;
 
 use Del\Form\Form;
 use Del\Form\Renderer;
 use Del\Form\Renderer\HorizontalFormRenderer;
 use Del\Form\Field\CheckBox;
 use Del\Form\Field\Radio;
 use Del\Form\Field\Submit;
 use Del\Form\Field\Text;
 
 class HorizontalFormRendererTest extends Test
 {
 /**
 * @var \UnitTester
 */
 protected $tester;
 
 /**
 * Here we swap over the form renderer and it should
 * render a form as per the example here
 * @see http://getbootstrap.com/css/#forms-horizontal
 */
 public function testRenderHorizontalForm()
 {
 // Set up the form
 $form = new Form('test');
 $renderer = new HorizontalFormRenderer();
 $form->setFormRenderer($renderer);
 
 $email = new Text\EmailAddress('email');
 $email->setId('email');
 $email->setLabel('Email');
 $email->setPlaceholder('Email');
 $password = new Text\Password('password');
 $password->setId('password');
 $password->setLabel('Password');
 $password->setPlaceholder('Password');
 $remember = new CheckBox('remember');
 $remember->setId('remember');
 $remember->setLabel('Remember me');
 $remember->setOptions([
 'remember' => 'Remember Me',
 ]);
 $submit = new Submit('submit');
 $submit->setValue('Sign in');
 
 $form->addField($email)
 ->addField($password)
 ->addField($remember)
 ->addField($submit);
 
 // Render the form
 $html = $form->render();
 
 $this->assertEquals('<form class="form-horizontal" name="test" method="post" id="test"><div class="form-group"><label for="email" class="col-sm-2 control-label">Email</label><div class="col-sm-10"><input name="email" type="email" class="form-control" placeholder="Email" id="email"></div></div><div class="form-group"><label for="password" class="col-sm-2 control-label">Password</label><div class="col-sm-10"><input name="password" type="password" class="form-control" id="password" placeholder="Password"></div></div><div class="form-group"><label for="remember" class="col-sm-2 control-label">Remember me</label><div class="col-sm-10"><div class="checkbox"><div class="checkbox"><label for="remember"><input type="checkbox" name="remember[]" value="remember">Remember Me</label></div></div></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><input name="submit" value="Sign in" type="submit" class="btn btn-primary"></div></div></form>'."\n", $html);
 }
 
 public function testRenderHorizontalFormWithErrors()
 {
 // Set up the form
 $form = new Form('test');
 $renderer = new HorizontalFormRenderer();
 $form->setFormRenderer($renderer);
 
 $email = new Text\EmailAddress('email');
 $email->setId('email');
 $email->setLabel('Email');
 $email->setPlaceholder('Email');
 $email->setCustomErrorMessage('wtf');
 $email->setRequired(true);
 $password = new Text\Password('password');
 $password->setId('password');
 $password->setLabel('Password');
 $password->setPlaceholder('Password');
 $password->setRequired(true);
 $remember = new Radio('choose');
 $remember->setId('choose');
 $remember->setLabel('Choose');
 $remember->setOptions([
 'choose' => 'Choose Me!',
 'choose2' => 'Or Me!',
 ]);
 $submit = new Submit('submit');
 $submit->setValue('Sign in');
 
 $form->addField($email)
 ->addField($password)
 ->addField($remember)
 ->addField($submit)
 ->populate([]);
 
 // Render the form
 $html = $form->render();
 
 $this->assertEquals('<form class="form-horizontal" name="test" method="post" id="test"><div class="has-error form-group"><label for="email" class="col-sm-2 control-label"><span class="text-danger">* </span>Email</label><div class="col-sm-10"><input name="email" type="email" class="form-control" placeholder="Email" id="email"></div><div class="col-sm-offset-2 col-sm-10"><span class="help-block">wtf</span></div></div><div class="has-error form-group"><label for="password" class="col-sm-2 control-label"><span class="text-danger">* </span>Password</label><div class="col-sm-10"><input name="password" type="password" class="form-control" id="password" placeholder="Password"></div><div class="col-sm-offset-2 col-sm-10"><span class="help-block">Value is required and can\'t be empty<br></span></div></div><div class="form-group"><label for="choose" class="col-sm-2 control-label">Choose</label><div class="col-sm-10"><div class="radio"><div class="radio"><label for="choose"><input type="radio" name="choose" value="choose">Choose Me!</label></div><div class="radio"><label for="choose"><input type="radio" name="choose" value="choose2">Or Me!</label></div></div></div></div><div class="form-group"><div class="col-sm-offset-2 col-sm-10"><input name="submit" value="Sign in" type="submit" class="btn btn-primary"></div></div></form>'."\n", $html);
 }
 }
 
 |