/** * Creates a custom validation method. * * @param Event $event Event which fired validation. * @param Validator $validator Validation logic. * @param string $name Name of validator. */ public function buildValidatorEventHandler(Event $event, Validator $validator, $name) { $validator->allowEmpty('address')->add('address', 'length', ['rule' => ['lengthBetween', 2, 255], 'message' => 'Addresses must be between 2 and 255 characters in length']); $validator->allowEmpty('city')->add('city', 'length', ['rule' => ['lengthBetween', 2, 255], 'message' => 'Cities must be between 2 and 255 characters in length']); $validator->allowEmpty('state')->add('state', 'length', ['rule' => ['lengthBetween', 2, 2], 'message' => 'States must consist of two letters'])->add('state', 'uppercase', ['rule' => ['custom', '/^[A-Z]{1,500}$/']])->add('state', 'validStateCode', ['rule' => ['inList', StatesEnumeration::getStatesArray()]]); $validator->allowEmpty('zipcode')->add('zipcode', 'length', ['rule' => ['lengthBetween', 5, 10], 'message' => 'Zipcodes must be between 5 and 10 characters long']); return $validator; }
/** * Checks that each state code and name can be acquired using getStatesArray * * @dataProvider getStatesArrayContainsEachStateDataProvider * * @param type $name Full name of the state. * @param type $abbreviation State abbreviated name. */ public function testGetStatesArrayContainsEachState($name, $abbreviation) { $states = StatesEnumeration::getStatesArray(); $result = in_array($abbreviation, $states) && array_key_exists($name, $states); $this->assertTrue($result); }