/** * @covers Acreage\Render\Context::create() */ public function test_create_returns_context() { $mock_config = array('validator' => 'validator'); $subject = Form::create_from_data($mock_config, array('fields' => array(array('name' => 'field1', 'type' => 'text')))); $this->assertSame(array('attributes' => array('method' => 'POST'), 'fields' => array(array('name' => 'field1', 'type' => 'text', 'value' => null, 'label' => false, 'valid' => null, 'errors' => array(), 'validated' => false)), 'valid' => false, 'validated' => false), Context::create($subject)); }
public static function fetch($form_name) { $filename = dirname(__DIR__) . '/forms/' . $form_name . '.yaml'; if (file_exists($filename)) { return YAML::parse(file_get_contents($filename)); } else { $error = 'missing form: ' . $filename; throw new Exception($error); } } } // GET /jobs $app->get('/', function (Application $app) { return $app['mustache']->render('index.mustache', array('forms' => array(array('name' => 'Base Example', 'url' => '/forms/base')))); }); $app->match('/forms/base', function (Application $app, Request $request) { $form = Acreage\Form::create_from_data(array('validator' => $app['validator']), FormConfig::fetch('base')); $form->handle_request($request); $render_context = Acreage\Render\Context::create($form); $render_context['content'] = implode('', array_map(function ($field) use($app) { if (in_array($field['type'], array_keys(Acreage\Form::$field_type_map))) { return $app['mustache']->render('form/' . $field['type'] . '.mustache', $field); } else { return $app['mustache']->render('form/input.mustache', $field); } }, $render_context['fields'])); $render_context['invalid'] = $render_context['validated'] && !$render_context['valid']; $render_context['success'] = $render_context['validated'] && $render_context['valid']; return $app['mustache']->render('form.mustache', $render_context); }); return $app;
/** * @covers Acreage::Form::create_from_data */ public function test_create_from_data_generates_form_with_constraints() { $mock_config = array('validator' => 'mock.validator'); $form_data = array('attributes' => array('class' => 'form yo', 'method' => 'GET'), 'defaults' => array('field1' => 'default'), 'fields' => array(array('name' => 'field1', 'type' => 'text', 'constraints' => array('NotBlank')), array('name' => 'field2', 'type' => 'email', 'constraints' => array('NotBlank', 'Email')), array('name' => 'field3', 'type' => 'text', 'constraints' => array('EqualTo' => array('value' => 'value'))))); $subject = Form::create_from_data($mock_config, $form_data); $field1 = $subject->fields[0]; $field2 = $subject->fields[1]; $field3 = $subject->fields[2]; $this->assertInstanceOf('Symfony\\Component\\Validator\\Constraints\\NotBlank', $field1->constraints[0]); $this->assertInstanceOf('Symfony\\Component\\Validator\\Constraints\\NotBlank', $field2->constraints[0]); $this->assertInstanceOf('Symfony\\Component\\Validator\\Constraints\\Email', $field2->constraints[1]); $this->assertInstanceOf('Symfony\\Component\\Validator\\Constraints\\EqualTo', $field3->constraints[0]); $this->assertSame('value', $field3->constraints[0]->value); }