/vendor/anahkiasen/former/tests/Traits/FieldTest.php
PHP | 209 lines | 156 code | 44 blank | 9 comment | 2 complexity | 69389fc0f089c70b4df6ce3dc66e870e MD5 | raw file
- <?php
- namespace Former\Traits;
- use Former\TestCases\FormerTests;
- use Illuminate\Support\Str;
- class FieldTest extends FormerTests
- {
- ////////////////////////////////////////////////////////////////////
- /////////////////////////// DATA PROVIDERS /////////////////////////
- ////////////////////////////////////////////////////////////////////
- public function provideSizes()
- {
- $_sizes = array('mini', 'small', 'medium', 'large', 'xlarge', 'xxlarge', 'span1', 'span6', 'span12', 'foo');
- foreach ($_sizes as $s) {
- $sizes[] = array($s);
- }
- return $sizes;
- }
- ////////////////////////////////////////////////////////////////////
- //////////////////////////////// TESTS /////////////////////////////
- ////////////////////////////////////////////////////////////////////
- public function testCanCreateFieldsOutsideForms()
- {
- $this->former->close();
- $field = $this->former->text('foo')->raw();
- $this->assertEquals('<input id="foo" type="text" name="foo">', $field->__toString());
- }
- public function testCanChangeTheFieldIdAndKeepLabelInSync()
- {
- $field = $this->former->text('foo');
- $field->id('bar');
- $matcher = '<div class="control-group"><label for="bar" class="control-label">Foo</label><div class="controls"><input id="bar" type="text" name="foo"></div></div>';
- $this->assertEquals($matcher, $field->__toString());
- }
- public function testCanChangeTypeMidCourse()
- {
- $field = $this->former->text('foo')->setType('email');
- $this->assertEquals('email', $field->getType());
- }
- public function testCanRenameField()
- {
- $input = $this->former->text('foo')->name('bar')->__toString();
- $matcher = $this->controlGroup(
- '<input id="bar" type="text" name="bar">',
- '<label for="bar" class="control-label">Bar</label>');
- $this->assertEquals($matcher, $input);
- }
- public function testCanSetValueOnFields()
- {
- $matcher = $this->controlGroup('<input id="foo" type="text" name="foo" value="bar">');
- $static = $this->former->text('foo')->value('bar')->__toString();
- $this->assertHTML($this->matchField(), $static);
- $this->assertHTML($this->matchControlGroup(), $static);
- $this->resetLabels();
- $input = $this->former->text('foo', null, 'bar')->__toString();
- $this->assertHTML($this->matchField(), $input);
- $this->assertHTML($this->matchControlGroup(), $input);
- }
- public function testCanForceValueOnFields()
- {
- $this->former->populate(array('foo' => 'unbar'));
- $static = $this->former->text('foo')->forceValue('bar')->__toString();
- $matcher = $this->controlGroup('<input id="foo" type="text" name="foo" value="bar">');
- $this->assertEquals($matcher, $static);
- }
- public function testCanCreateViaMagicAttribute()
- {
- $static = $this->former->text('foo')->class('foo')->data_bar('bar')->__toString();
- $this->assertHTML($this->matchField(), $static);
- $this->assertHTML($this->matchControlGroup(), $static);
- $this->resetLabels();
- $input = $this->former->text('foo', null, null, array('class' => 'foo', 'data-bar' => 'bar'))->__toString();
- $this->assertHTML($this->matchField(), $input);
- $this->assertHTML($this->matchControlGroup(), $input);
- }
- public function testCanCreateViaMagicAttributeUnvalue()
- {
- $static = $this->former->text('foo')->require()->__toString();
- $matcher = $this->controlGroup('<input require="true" type="text" name="foo" id="foo">');
- $this->assertHTML($this->matchField(), $static);
- $this->assertHTML($this->matchControlGroup(), $static);
- }
- public function testCanSetAttributes()
- {
- $attributes = array('class' => 'foo', 'data-foo' => 'bar');
- $static = $this->former->text('foo')->require()->setAttributes($attributes)->__toString();
- $field = $this->matchField();
- $field['attributes']['require'] = 'true';
- $field['attributes']['class'] = 'foo';
- $field['attributes']['data-foo'] = 'bar';
- $this->assertHTML($field, $static);
- $this->assertHTML($this->matchControlGroup(), $static);
- }
- public function testCanReplaceAttributes()
- {
- $attributes = array('class' => 'foo', 'data-foo' => 'bar');
- $static = $this->former->text('foo')->require()->replaceAttributes($attributes)->__toString();
- $matcher = $this->controlGroup('<input class="foo" data-foo="bar" type="text" name="foo" id="foo">');
- $field = $this->matchField();
- $field['attributes']['class'] = 'foo';
- $field['attributes']['data-foo'] = 'bar';
- $this->assertHTML($field, $static);
- $this->assertHTML($this->matchControlGroup(), $static);
- }
- public function testCanGetAttribute()
- {
- $former = $this->former->span1_text('name')->foo('bar');
- $this->assertEquals('span1', $former->class);
- $this->assertEquals('bar', $former->foo);
- }
- public function testCanAddClass()
- {
- $matcher = $this->controlGroup('<input class="foo bar" type="text" name="foo" id="foo">');
- $static = $this->former->text('foo')->class('foo')->addClass('bar')->__toString();
- $this->assertHTML($this->matchControlGroup(), $static);
- $this->assertHTML($this->matchField(), $static);
- $this->resetLabels();
- $input = $this->former->text('foo', null, null, array('class' => 'foo'))->addClass('bar')->__toString();
- $this->assertHTML($this->matchControlGroup(), $input);
- $this->assertHTML($this->matchField(), $input);
- }
- /**
- * @dataProvider provideSizes
- */
- public function testCanUseMagicMethods($size)
- {
- $method = $size.'_text';
- $class = Str::startsWith($size, 'span') ? $size.' ' : 'input-'.$size.' ';
- $static = $this->former->$method('foo')->addClass('bar')->__toString();
- if ($class == 'input-foo ') {
- $class = null;
- }
- $field = $this->matchField();
- $field['attributes']['class'] = $class.'bar';
- $this->assertHTML($this->matchControlGroup(), $static);
- $this->assertHTML($field, $static);
- }
- public function testAutomaticLabelsForSingleSelectField()
- {
- $field = $this->former->select('foo');
- $matcher = '<div class="control-group"><label for="foo" class="control-label">Foo</label><div class="controls"><select id="foo" name="foo"></select></div></div>';
- $this->assertEquals($matcher, $field->__toString());
- }
- public function testAutomaticLabelsForMultiSelectField()
- {
- $field = $this->former->select('foo[]');
- $matcher = '<div class="control-group"><label for="foo[]" class="control-label">Foo</label><div class="controls"><select id="foo[]" name="foo[]"></select></div></div>';
- $this->assertEquals($matcher, $field->__toString());
- }
- public function testCantHaveDuplicateIdsForFields()
- {
- $field = $this->former->text('name')->render();
- $fieldTwo = $this->former->text('name')->render();
- $fieldThree = $this->former->text('name')->render();
- $this->assertEquals('<input id="name" type="text" name="name">', $field);
- $this->assertEquals('<input id="name-2" type="text" name="name">', $fieldTwo);
- $this->assertEquals('<input id="name-3" type="text" name="name">', $fieldThree);
- }
- public function testCanChangeBindingOfField()
- {
- $this->former->populate(array('bar' => 'unbar'));
- $static = $this->former->text('foo')->bind('bar')->__toString();
- $matcher = $this->controlGroup('<input id="foo" type="text" name="foo" value="unbar">');
- $this->assertEquals($matcher, $static);
- }
- }