'Bernhard', 'b' => 'Fabien', 'c' => 'Kris', 'd' => 'Jon', 'e' => 'Roman', ); protected $preferredChoices = array('d', 'e'); protected $groupedChoices = array( 'Symfony' => array( 'a' => 'Bernhard', 'b' => 'Fabien', 'c' => 'Kris', ), 'Doctrine' => array( 'd' => 'Jon', 'e' => 'Roman', ) ); public function testBindSingleNonExpanded() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->choices, )); $field->bind('b'); $this->assertEquals('b', $field->getData()); $this->assertEquals('b', $field->getDisplayedData()); } public function testRenderSingleNonExpanded() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->choices, )); $field->setData('b'); $html = << EOF; $this->assertEquals($html, $field->render(array( 'class' => 'foobar', ))); } public function testRenderSingleNonExpanded_translateChoices() { $translator = $this->getMock('Symfony\Component\I18N\TranslatorInterface'); $translator->expects($this->any()) ->method('translate') ->will($this->returnCallback(function($text) { return 'translated['.$text.']'; })); $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->choices, 'translate_choices' => true, )); $field->setTranslator($translator); $field->setData('b'); $html = << EOF; $this->assertEquals($html, $field->render(array( 'class' => 'foobar', ))); } public function testRenderSingleNonExpanded_disabled() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->choices, 'disabled' => true, )); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testRenderSingleNonExpandedWithPreferred() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->choices, 'preferred_choices' => $this->preferredChoices, 'separator' => '---', )); $field->setData('d'); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testRenderSingleNonExpandedWithGroups() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->groupedChoices, )); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testRenderSingleNonExpandedNonRequired() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => false, 'choices' => $this->choices, 'empty_value' => 'empty', )); $field->setData(null); $field->setRequired(false); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testBindMultipleNonExpanded() { $field = new ChoiceField('name', array( 'multiple' => true, 'expanded' => false, 'choices' => $this->choices, )); $field->bind(array('a', 'b')); $this->assertEquals(array('a', 'b'), $field->getData()); $this->assertEquals(array('a', 'b'), $field->getDisplayedData()); } public function testRenderMultipleNonExpanded() { $field = new ChoiceField('name', array( 'multiple' => true, 'expanded' => false, 'choices' => $this->choices, )); $field->setData(array('a', 'b')); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testBindSingleExpanded() { $field = new ChoiceField('name', array( 'multiple' => true, 'expanded' => false, 'choices' => $this->choices, )); $field->bind('b'); $this->assertEquals('b', $field->getData()); $this->assertEquals('b', $field->getDisplayedData()); } public function testRenderSingleExpanded() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => true, 'choices' => $this->choices, )); $field->setData('b'); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testRenderSingleExpanded_translateChoices() { $translator = $this->getMock('Symfony\Component\I18N\TranslatorInterface'); $translator->expects($this->any()) ->method('translate') ->will($this->returnCallback(function($text) { return 'translated['.$text.']'; })); $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => true, 'choices' => $this->choices, 'translate_choices' => true, )); $field->setTranslator($translator); $field->setData('b'); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testRenderSingleExpandedWithPreferred() { $field = new ChoiceField('name', array( 'multiple' => false, 'expanded' => true, 'choices' => $this->choices, 'preferred_choices' => $this->preferredChoices, )); $html = << EOF; $this->assertEquals($html, $field->render()); } public function testBindMultipleExpanded() { $field = new ChoiceField('name', array( 'multiple' => true, 'expanded' => true, 'choices' => $this->choices, )); $field->bind(array('a' => 'a', 'b' => 'b')); $this->assertSame(array('a', 'b'), $field->getData()); $this->assertSame(true, $field['a']->getData()); $this->assertSame(true, $field['b']->getData()); $this->assertSame(null, $field['c']->getData()); $this->assertSame(null, $field['d']->getData()); $this->assertSame(null, $field['e']->getData()); $this->assertSame('1', $field['a']->getDisplayedData()); $this->assertSame('1', $field['b']->getDisplayedData()); $this->assertSame('', $field['c']->getDisplayedData()); $this->assertSame('', $field['d']->getDisplayedData()); $this->assertSame('', $field['e']->getDisplayedData()); $this->assertSame(array('a' => '1', 'b' => '1', 'c' => '', 'd' => '', 'e' => ''), $field->getDisplayedData()); } public function testRenderMultipleExpanded() { $field = new ChoiceField('name', array( 'multiple' => true, 'expanded' => true, 'choices' => $this->choices, )); $field->setData(array('a', 'b')); $html = << EOF; $this->assertEquals($html, $field->render()); } }