<?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); 
    } 
} 
 
 |