/** * Is the data set valid? * * @return bool */ public function isValid() { $isValid = parent::isValid(); foreach ($this->getUniqueFields() as $uniqueField) { $validatedValues = array(); foreach ($this->collectionData as $key => $values) { if (!is_array($values)) { $values = array(); } if (array_key_exists($uniqueField, $values)) { $validatedValues[$key] = $values[$uniqueField]; } } unset($key); $uniqueValues = array_values(array_unique($validatedValues, SORT_REGULAR)); if (count($uniqueValues) < count($validatedValues)) { $isValid = false; $notUnique = array_keys(array_diff_assoc($validatedValues, $uniqueValues)); foreach ($notUnique as $key) { $this->collectionMessages[$key][$uniqueField][self::NOT_UNIQUE] = $this->messageTemplates[self::NOT_UNIQUE]; } } } return $isValid; }
public function testEmptyCollectionIsNotValidIfRequired() { $data = array(); $this->filter->setInputFilter($this->getBaseInputFilter()); $this->filter->setData($data); $this->filter->setIsRequired(true); $this->assertFalse($this->filter->isValid()); }
public function testNonRequiredFieldsAreValidated() { $invalidCollectionData = array(array('foo' => ' bazbattoolong ', 'bar' => '12345', 'baz' => 'baztoolong', 'nest' => array('foo' => ' bazbat ', 'bar' => '12345', 'baz' => ''))); $this->filter->setInputFilter($this->getBaseInputFilter()); $this->filter->setData($invalidCollectionData); $this->assertFalse($this->filter->isValid()); $this->assertCount(2, current($this->filter->getInvalidInput())); $this->assertArrayHasKey('baz', current($this->filter->getMessages())); }