public function testProvidesInputSpecificationThatIncludesValidatorsBasedOnAttributes() { $element = new WeekElement('foo'); $element->setAttributes(array('inclusive' => true, 'min' => '1970-W01', 'max' => '1970-W03', 'step' => '1')); $inputSpec = $element->getInputSpecification(); $this->assertArrayHasKey('validators', $inputSpec); $this->assertInternalType('array', $inputSpec['validators']); $expectedClasses = array('Zend\\Validator\\Regex', 'Zend\\Validator\\GreaterThan', 'Zend\\Validator\\LessThan', 'Zend\\Validator\\DateStep'); foreach ($inputSpec['validators'] as $validator) { $class = get_class($validator); $this->assertTrue(in_array($class, $expectedClasses), $class); switch ($class) { case 'Zend\\Validator\\Regex': $this->assertEquals('/^#[0-9]{4}\\-W[0-9]{2}$/', $validator->getPattern()); break; case 'Zend\\Validator\\GreaterThan': $this->assertTrue($validator->getInclusive()); $this->assertEquals('1970-W01', $validator->getMin()); break; case 'Zend\\Validator\\LessThan': $this->assertTrue($validator->getInclusive()); $this->assertEquals('1970-W03', $validator->getMax()); break; case 'Zend\\Validator\\DateStep': $dateInterval = new \DateInterval('P1W'); $this->assertEquals($dateInterval, $validator->getStep()); break; default: break; } } }
/** * @dataProvider weekValuesDataProvider */ public function testHTML5WeekValidation($value, $expected) { $element = new WeekElement('foo'); $inputSpec = $element->getInputSpecification(); $this->assertArrayHasKey('validators', $inputSpec); $weekValidator = $inputSpec['validators'][0]; $this->assertEquals($expected, $weekValidator->isValid($value)); }