/** * @dataProvider dataFallbackValue */ public function testFallbackValue($fallbackValue) { $this->input->setFallbackValue($fallbackValue); $validator = new Validator\Date(); $this->input->getValidatorChain()->attach($validator); $this->input->setValue('123'); // not a date $this->assertTrue($this->input->isValid()); $this->assertEmpty($this->input->getMessages()); $this->assertSame($fallbackValue, $this->input->getValue()); }
public function testNotEmptyValidatorAddedWhenIsValidIsCalled() { $this->assertTrue($this->input->isRequired()); $this->input->setValue(''); $validatorChain = $this->input->getValidatorChain(); $this->assertEquals(0, count($validatorChain->getValidators())); $this->assertFalse($this->input->isValid()); $messages = $this->input->getMessages(); $this->assertArrayHasKey('isEmpty', $messages); $this->assertEquals(1, count($validatorChain->getValidators())); // Assert that NotEmpty validator wasn't added again $this->assertFalse($this->input->isValid()); $this->assertEquals(1, count($validatorChain->getValidators())); }
/** * buildValidatorMessages * * @param $fieldName * @param Input $input * * @return void */ protected function buildValidatorMessages($fieldName, Input $input) { $validatorChain = $input->getValidatorChain(); $validators = $validatorChain->getValidators(); // We get the input messages because input does validations outside of the validators $allMessages = $input->getMessages(); foreach ($validators as $fkey => $validatorData) { /** @var \Zend\Validator\AbstractValidator $validator */ $validator = $validatorData['instance']; $params = []; if ($validator instanceof MessageParam) { $params = $validator->getMessageParams(); } try { $messagesParams = $validator->getOption('messageParams'); $params = array_merge($params, $messagesParams); } catch (\Exception $exception) { // Do nothing } $inputMessages = $validator->getMessages(); // Remove the messages from $allMessages as we get them from the validators $allMessages = array_diff($allMessages, $inputMessages); $this->buildMessageResponseModels($fieldName, $inputMessages, $params); } $params = []; if ($input instanceof MessageParam) { $params = $input->getMessageParams(); } // get any remaining messages that did not come from validators $this->buildMessageResponseModels($fieldName, $allMessages, $params); }
public function testNotEmptyValidatorAddedWhenIsValidIsCalled() { $input = new Input('foo'); $this->assertTrue($input->isRequired()); $input->setValue(''); $this->assertFalse($input->isValid()); $messages = $input->getMessages(); $this->assertArrayHasKey('isEmpty', $messages); }