* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Tests\Extension\Core\Type; use Symfony\Component\Form\CallbackTransformer; class CheckboxTypeTest extends \Symfony\Component\Form\Test\TypeTestCase { public function testPassValueToView() { $form = $this->factory->create('checkbox', null, array('value' => 'foobar')); $view = $form->createView(); $this->assertEquals('foobar', $view->vars['value']); } public function testCheckedIfDataTrue() { $form = $this->factory->create('checkbox'); $form->setData(true); $view = $form->createView(); $this->assertTrue($view->vars['checked']); } public function testCheckedIfDataTrueWithEmptyValue() { $form = $this->factory->create('checkbox', null, array('value' => '')); $form->setData(true); $view = $form->createView(); $this->assertTrue($view->vars['checked']); } public function testNotCheckedIfDataFalse() { $form = $this->factory->create('checkbox'); $form->setData(false); $view = $form->createView(); $this->assertFalse($view->vars['checked']); } public function testSubmitWithValueChecked() { $form = $this->factory->create('checkbox', null, array( 'value' => 'foobar', )); $form->submit('foobar'); $this->assertTrue($form->getData()); $this->assertEquals('foobar', $form->getViewData()); } public function testSubmitWithRandomValueChecked() { $form = $this->factory->create('checkbox', null, array( 'value' => 'foobar', )); $form->submit('krixikraxi'); $this->assertTrue($form->getData()); $this->assertEquals('foobar', $form->getViewData()); } public function testSubmitWithValueUnchecked() { $form = $this->factory->create('checkbox', null, array( 'value' => 'foobar', )); $form->submit(null); $this->assertFalse($form->getData()); $this->assertNull($form->getViewData()); } public function testSubmitWithEmptyValueChecked() { $form = $this->factory->create('checkbox', null, array( 'value' => '', )); $form->submit(''); $this->assertTrue($form->getData()); $this->assertSame('', $form->getViewData()); } public function testSubmitWithEmptyValueUnchecked() { $form = $this->factory->create('checkbox', null, array( 'value' => '', )); $form->submit(null); $this->assertFalse($form->getData()); $this->assertNull($form->getViewData()); } public function testBindWithEmptyValueAndFalseUnchecked() { $form = $this->factory->create('checkbox', null, array( 'value' => '', )); $form->bind(false); $this->assertFalse($form->getData()); $this->assertNull($form->getViewData()); } public function testBindWithEmptyValueAndTrueChecked() { $form = $this->factory->create('checkbox', null, array( 'value' => '', )); $form->bind(true); $this->assertTrue($form->getData()); $this->assertSame('', $form->getViewData()); } /** * @dataProvider provideTransformedData */ public function testTransformedData($data, $expected) { // present a binary status field as a checkbox $transformer = new CallbackTransformer( function ($value) { return 'expedited' == $value; }, function ($value) { return $value ? 'expedited' : 'standard'; } ); $form = $this->builder ->create('expedited_shipping', 'checkbox') ->addModelTransformer($transformer) ->getForm(); $form->setData($data); $view = $form->createView(); $this->assertEquals($expected, $view->vars['checked']); } public function provideTransformedData() { return array( array('expedited', true), array('standard', false), ); } }