/** * Test invoke */ public function testInvoke() { $form = new Form('test_form', array('description' => array('label' => 'form description', 'translatable' => false, 'attributes' => array('class' => 'form-description')))); $fieldset = new Fieldset('test_fieldset', array('description' => array('label' => 'fieldset description', 'translatable' => false))); $text = new Element\Text('test_text', array('description' => 'text description', 'display_group' => 'display group')); $hidden = new Element\Hidden('test_hidden'); $search = new Element\Search('test_search', array('display_group' => 'display group')); $submit = new Element\Submit('test_submit'); $fieldset->setLabel('fieldset label'); $text->setLabel('text label'); $search->setLabel('search label'); $submit->setValue('submit label'); $fieldset->add($text); $fieldset->add($hidden); $fieldset->add($search); $form->add($fieldset); $form->add($submit); $translator = $this->getMock('Zend\\I18n\\Translator\\Translator'); $translator->expects($this->at(1))->method('translate')->with('fieldset label', 'text domain')->will($this->returnValue('fieldset label at text domain')); $translator->expects($this->at(2))->method('translate')->with('display group', 'text domain')->will($this->returnValue('display group at text domain')); $translator->expects($this->at(3))->method('translate')->with('text label', 'text domain')->will($this->returnValue('text label at text domain')); $translator->expects($this->at(4))->method('translate')->with('text description', 'text domain')->will($this->returnValue('text description at text domain')); $translator->expects($this->at(5))->method('translate')->with('search label', 'text domain')->will($this->returnValue('search label at text domain')); $translator->expects($this->at(6))->method('translate')->with('submit label', 'text domain')->will($this->returnValue('submit label at text domain')); $rendered = $this->helper($form, $translator, 'text domain'); $this->assertTag($formMatcher = array('tag' => 'form', 'attributes' => array('name' => 'test_form')), $rendered); $this->assertTag(array('class' => 'form-description description', 'ancestor' => $formMatcher, 'content' => 'form description'), $rendered); $this->assertTag($fieldsetMatcher = array('tag' => 'fieldset', 'ancestor' => $formMatcher, 'attributes' => array('name' => 'test_fieldset')), $rendered); $this->assertTag(array('tag' => 'legend', 'parent' => $fieldsetMatcher, 'content' => 'fieldset label at text domain'), $rendered); $this->assertTag(array('class' => 'description', 'ancestor' => $fieldsetMatcher, 'content' => 'fieldset description'), $rendered); $this->assertTag($displayGroupMatcher = array('tag' => 'fieldset', 'ancestor' => $fieldsetMatcher, 'attributes' => array('class' => 'display-group')), $rendered); $this->assertTag(array('tag' => 'label', 'ancestor' => $displayGroupMatcher, 'content' => 'text label at text domain'), $rendered); $this->assertTag(array('tag' => 'input', 'ancestor' => $displayGroupMatcher, 'attributes' => array('type' => 'text', 'name' => 'test_fieldset[test_text]')), $rendered); $this->assertTag(array('tag' => 'input', 'ancestor' => $fieldsetMatcher, 'attributes' => array('type' => 'hidden', 'name' => 'test_fieldset[test_hidden]')), $rendered); $this->assertTag(array('tag' => 'label', 'ancestor' => $displayGroupMatcher, 'content' => 'search label at text domain'), $rendered); $this->assertTag(array('tag' => 'input', 'ancestor' => $displayGroupMatcher, 'attributes' => array('type' => 'search', 'name' => 'test_fieldset[test_search]')), $rendered); $this->assertTag(array('tag' => 'input', 'ancestor' => $formMatcher, 'attributes' => array('type' => 'submit', 'name' => 'test_submit', 'value' => 'submit label at text domain')), $rendered); }
/** * Test options and specifications */ public function testOptionsAndSpecifications() { $text = new Text('text', array('required' => true, 'multiple' => true, 'pattern' => '[a-z]+', 'minlength' => 1, 'maxlength' => 10, 'identical' => 'identical', 'not_identical' => 'not_identical', 'alternate' => 'alternate', 'less_than' => 'less_than', 'more_than' => 'more_than', 'forbidden' => array('forbidden'), 'rpc_validators' => array('Rpc1::method1', 'Rpc2', ''), 'display_group' => 'display_group', 'translatable' => true, 'text_domain' => 'text_domain', 'filters' => array('filter1'), 'validators' => array('validator1'))); $this->assertTrue($text->getRequired()); $this->assertTrue($text->getMultiple()); $this->assertEquals('[a-z]+', $text->getPattern()); $this->assertEquals(1, $text->getMinlength()); $this->assertEquals(10, $text->getMaxlength()); $this->assertEquals('identical', $text->getIdentical()); $this->assertEquals('not_identical', $text->getNotIdentical()); $this->assertEquals('alternate', $text->getAlternate()); $this->assertEquals('less_than', $text->getLessThan()); $this->assertEquals('more_than', $text->getMoreThan()); $this->assertEquals(array('forbidden'), $text->getForbidden()); $this->assertEquals('display_group', $text->getDisplayGroup()); $this->assertTrue($text->isTranslatorEnabled()); $this->assertEquals('text_domain', $text->getTranslatorTextDomain()); $this->assertEquals(array('filter1'), $text->getInputFilters()); $this->assertEquals(array('validator1'), $text->getInputValidators()); $this->assertEquals(array('Rpc1::method1', 'Rpc2', ''), $text->getRpcValidators()); $spec = $text->getInputSpecification(); $this->assertInternalType('array', $spec); $this->assertArrayHasKey('name', $spec); $this->assertEquals('text', $spec['name']); $this->assertArrayHasKey('required', $spec); $this->assertTrue($spec['required']); $this->assertArrayHasKey('filters', $spec); $this->assertNotEmpty($spec['filters']); $this->assertContains('filter1', $spec['filters']); $this->assertArrayHasKey('validators', $spec); $this->assertNotEmpty($spec['validators']); $this->assertContains('validator1', $spec['validators']); $validators = $spec['validators']; /* @var $explode \Zend\Validator\Explode */ $explode = $this->getValidator($validators, 'Zend\\Validator\\Explode'); $this->assertTrue($explode->isValid(array('foo', 'bar', 'baz'))); $this->assertFalse($explode->isValid(array('fo0', '123', 'baz'))); /* @var $length \Zend\Validator\StringLength */ $length = $this->getValidator($validators, 'Zend\\Validator\\StringLength'); $this->assertEquals(1, $length->getMin()); $this->assertEquals(10, $length->getMax()); /* @var $identical \Zend\Validator\Identical */ $identical = $this->getValidator($validators, 'Zend\\Validator\\Identical'); $this->assertEquals('identical', $identical->getToken()); /* @var $notIdentical \Zork\Validator\NotIdentical */ $notIdentical = $this->getValidator($validators, 'Zork\\Validator\\NotIdentical'); $this->assertEquals('not_identical', $notIdentical->getToken()); /* @var $alternate \Zork\Validator\Alternate */ $alternate = $this->getValidator($validators, 'Zork\\Validator\\Alternate'); $this->assertEquals('alternate', $alternate->getToken()); /* @var $lessThan \Zork\Validator\LessThan */ $lessThan = $this->getValidator($validators, 'Zork\\Validator\\LessThan'); $this->assertEquals('less_than', $lessThan->getToken()); /* @var $moreThan \Zork\Validator\MoreThan */ $moreThan = $this->getValidator($validators, 'Zork\\Validator\\MoreThan'); $this->assertEquals('more_than', $moreThan->getToken()); /* @var $forbidden \Zork\Validator\Forbidden */ $forbidden = $this->getValidator($validators, 'Zork\\Validator\\Forbidden'); $this->assertEquals(array('forbidden'), $forbidden->getHaystack()); $this->assertEquals(array(array('name' => 'Zork\\Validator\\Rpc', 'options' => array('service' => 'Rpc1', 'method' => 'method1')), array('name' => 'Zork\\Validator\\Rpc', 'options' => array('service' => 'Rpc2'))), $text->getRpcValidatorSpecifications()); $search = new Search('search'); $spec2 = $search->getInputSpecification(); $this->assertInternalType('array', $spec2); $this->assertArrayHasKey('name', $spec2); $this->assertEquals('search', $spec2['name']); }