From d7671521415ee7e1ecfb183d624b7245ef7be32a Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 11:10:52 +0200 Subject: [PATCH 01/12] Remove redundant test Case covered by testValidationOperatesOnFilteredValue --- test/ArrayInputTest.php | 21 --------------------- test/FileInputTest.php | 10 ---------- test/InputTest.php | 21 --------------------- 3 files changed, 52 deletions(-) diff --git a/test/ArrayInputTest.php b/test/ArrayInputTest.php index 1deb6273..d6cc19ba 100644 --- a/test/ArrayInputTest.php +++ b/test/ArrayInputTest.php @@ -149,27 +149,6 @@ public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain() $this->assertEquals($notEmptyMock, $validators[1]['instance']); } - public function testNotAllowEmptyWithFilterConvertsNonemptyToEmptyIsNotValid() - { - $this->input->setValue(['nonempty']) - ->getFilterChain()->attach(new Filter\Callback(function () { - return ''; - })); - $this->assertFalse($this->input->isValid()); - } - - public function testNotAllowEmptyWithFilterConvertsEmptyToNonEmptyIsValid() - { - $this->input->setValue(['']) - ->getFilterChain()->attach(new Filter\Callback(function () { - return 'nonempty'; - })); - $this->assertTrue( - $this->input->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->input->getMessages()) - ); - } - public function testMerge($sourceRawValue = 'bazRawValue') { parent::testMerge([$sourceRawValue]); diff --git a/test/FileInputTest.php b/test/FileInputTest.php index 80792bf3..54c4decb 100644 --- a/test/FileInputTest.php +++ b/test/FileInputTest.php @@ -394,16 +394,6 @@ public function testIsEmptyFileMultiFileOk() $this->assertFalse($this->input->isEmptyFile($rawValue)); } - public function testNotAllowEmptyWithFilterConvertsNonemptyToEmptyIsNotValid() - { - $this->markTestSkipped('does not apply to FileInput'); - } - - public function testNotAllowEmptyWithFilterConvertsEmptyToNonEmptyIsValid() - { - $this->markTestSkipped('does not apply to FileInput'); - } - /** * Specific FileInput::merge extras */ diff --git a/test/InputTest.php b/test/InputTest.php index 96c3582c..174e2d77 100644 --- a/test/InputTest.php +++ b/test/InputTest.php @@ -369,27 +369,6 @@ public function testRequiredNotEmptyValidatorNotAddedWhenOneExists() $this->assertEquals($notEmptyMock, $validators[0]['instance']); } - public function testNotAllowEmptyWithFilterConvertsNonemptyToEmptyIsNotValid() - { - $this->input->setValue('nonempty') - ->getFilterChain()->attach(new Filter\Callback(function () { - return ''; - })); - $this->assertFalse($this->input->isValid()); - } - - public function testNotAllowEmptyWithFilterConvertsEmptyToNonEmptyIsValid() - { - $this->input->setValue('') - ->getFilterChain()->attach(new Filter\Callback(function () { - return 'nonempty'; - })); - $this->assertTrue( - $this->input->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->input->getMessages()) - ); - } - public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain() { $this->assertTrue($this->input->isRequired()); From 687849133ded39e2637dc327e5e3d089ec3ff129 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 11:15:55 +0200 Subject: [PATCH 02/12] Fix tests not using setUp Those tests won't be tested by child classes properly --- test/ArrayInputTest.php | 5 +++++ test/InputTest.php | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/test/ArrayInputTest.php b/test/ArrayInputTest.php index d6cc19ba..9a69a009 100644 --- a/test/ArrayInputTest.php +++ b/test/ArrayInputTest.php @@ -25,6 +25,11 @@ public function setUp() $this->input = new ArrayInput('foo'); } + public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue($value = '') + { + parent::testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue([$value]); + } + public function testValueIsNullByDefault() { $this->markTestSkipped('Test is not enabled in ArrayInputTest'); diff --git a/test/InputTest.php b/test/InputTest.php index 174e2d77..fa00221e 100644 --- a/test/InputTest.php +++ b/test/InputTest.php @@ -107,13 +107,13 @@ public function testAllowEmptyFlagIsMutable() public function testContinueIfEmptyFlagIsFalseByDefault() { - $input = new Input('foo'); + $input = $this->input; $this->assertFalse($input->continueIfEmpty()); } public function testContinueIfEmptyFlagIsMutable() { - $input = new Input('foo'); + $input = $this->input; $input->setContinueIfEmpty(true); $this->assertTrue($input->continueIfEmpty()); } @@ -258,11 +258,11 @@ public function testNotRequiredWithoutFallbackAndValueNotSetThenIsValid() $this->assertEquals([], $input->getMessages(), 'getMessages() should be empty because the input is valid'); } - public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue() + public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue($value = '') { - $input = new Input('foo'); + $input = $this->input; $input->setContinueIfEmpty(true); - $input->setValue(''); + $input->setValue($value); $input->isValid(); $validators = $input->getValidatorChain() ->getValidators(); From 2c7a4406e757b9ada2fb32280fd143e2358c55ad Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 12:04:48 +0200 Subject: [PATCH 03/12] Improve test reuse. * Use helper methods for dummy value. * Mock zen-validator and zend-filter dependencies. --- test/ArrayInputTest.php | 164 ++++++++---------------------- test/FileInputTest.php | 33 ++---- test/InputTest.php | 217 ++++++++++++++++++++++++++-------------- 3 files changed, 190 insertions(+), 224 deletions(-) diff --git a/test/ArrayInputTest.php b/test/ArrayInputTest.php index 9a69a009..940d8989 100644 --- a/test/ArrayInputTest.php +++ b/test/ArrayInputTest.php @@ -9,11 +9,8 @@ namespace ZendTest\InputFilter; -use PHPUnit_Framework_MockObject_MockObject as MockObject; -use Zend\Filter; use Zend\InputFilter\ArrayInput; use Zend\InputFilter\Exception\InvalidArgumentException; -use Zend\Validator; /** * @covers Zend\InputFilter\ArrayInput @@ -25,17 +22,7 @@ public function setUp() $this->input = new ArrayInput('foo'); } - public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue($value = '') - { - parent::testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue([$value]); - } - - public function testValueIsNullByDefault() - { - $this->markTestSkipped('Test is not enabled in ArrayInputTest'); - } - - public function testValueIsEmptyArrayByDefault() + public function testDefaultGetValue() { $this->assertCount(0, $this->input->getValue()); } @@ -49,116 +36,6 @@ public function testSetValueWithInvalidInputTypeThrowsInvalidArgumentException() $this->input->setValue('bar'); } - public function testValueMayBeInjected() - { - $this->input->setValue(['bar']); - $this->assertEquals(['bar'], $this->input->getValue()); - } - - public function testRetrievingValueFiltersTheValue() - { - $this->input->setValue(['bar']); - $filter = new Filter\StringToUpper(); - $this->input->getFilterChain()->attach($filter); - $this->assertEquals(['BAR'], $this->input->getValue()); - } - - public function testCanRetrieveRawValue() - { - $this->input->setValue(['bar']); - $filter = new Filter\StringToUpper(); - $this->input->getFilterChain()->attach($filter); - $this->assertEquals(['bar'], $this->input->getRawValue()); - } - - public function testValidationOperatesOnFilteredValue() - { - $this->input->setValue([' 123 ', ' 123']); - $filter = new Filter\StringTrim(); - $this->input->getFilterChain()->attach($filter); - $validator = new Validator\Digits(); - $this->input->getValidatorChain()->attach($validator); - $this->assertTrue( - $this->input->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->input->getMessages()) - ); - } - - public function testSpecifyingMessagesToInputReturnsThoseOnFailedValidation() - { - $this->input->setValue(['bar']); - $validator = new Validator\Digits(); - $this->input->getValidatorChain()->attach($validator); - $this->input->setErrorMessage('Please enter only digits'); - $this->assertFalse($this->input->isValid()); - $messages = $this->input->getMessages(); - $this->assertArrayNotHasKey(Validator\Digits::NOT_DIGITS, $messages); - $this->assertContains('Please enter only digits', $messages); - } - - public function testNotEmptyValidatorAddedWhenIsValidIsCalled() - { - $this->assertTrue($this->input->isRequired()); - $this->input->setValue(['bar', '']); - $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())); - } - - public function testRequiredNotEmptyValidatorNotAddedWhenOneExists() - { - $this->assertTrue($this->input->isRequired()); - $this->input->setValue(['bar', '']); - - /** @var Validator\NotEmpty|MockObject $notEmptyMock */ - $notEmptyMock = $this->getMock(Validator\NotEmpty::class, ['isValid']); - $notEmptyMock->expects($this->exactly(1)) - ->method('isValid') - ->will($this->returnValue(false)); - - $validatorChain = $this->input->getValidatorChain(); - $validatorChain->prependValidator($notEmptyMock); - $this->assertFalse($this->input->isValid()); - - $validators = $validatorChain->getValidators(); - $this->assertEquals(1, count($validators)); - $this->assertEquals($notEmptyMock, $validators[0]['instance']); - } - - public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain() - { - $this->assertTrue($this->input->isRequired()); - $this->input->setValue(['bar', '']); - - /** @var Validator\NotEmpty|MockObject $notEmptyMock */ - $notEmptyMock = $this->getMock(Validator\NotEmpty::class, ['isValid']); - $notEmptyMock->expects($this->exactly(1)) - ->method('isValid') - ->will($this->returnValue(false)); - - $validatorChain = $this->input->getValidatorChain(); - $validatorChain->attach(new Validator\Digits()); - $validatorChain->attach($notEmptyMock); - $this->assertFalse($this->input->isValid()); - - $validators = $validatorChain->getValidators(); - $this->assertEquals(2, count($validators)); - $this->assertEquals($notEmptyMock, $validators[1]['instance']); - } - - public function testMerge($sourceRawValue = 'bazRawValue') - { - parent::testMerge([$sourceRawValue]); - } - public function fallbackValueVsIsValidProvider() { $dataSets = parent::fallbackValueVsIsValidProvider(); @@ -190,4 +67,43 @@ public function mixedValueProvider() return $dataSets; } + + protected function createFilterChainMock($valueRaw = null, $valueFiltered = null) + { + // ArrayInput filters per each array value + if (is_array($valueRaw)) { + $valueRaw = current($valueRaw); + } + + if (is_array($valueFiltered)) { + $valueFiltered = current($valueFiltered); + } + + return parent::createFilterChainMock($valueRaw, $valueFiltered); + } + + protected function createValidatorChainMock($isValid = null, $value = null, $context = null, $messages = []) + { + // ArrayInput validates per each array value + if (is_array($value)) { + $value = current($value); + } + + return parent::createValidatorChainMock($isValid, $value, $context, $messages); + } + + protected function createNonEmptyValidatorMock($isValid, $value, $context = null) + { + // ArrayInput validates per each array value + if (is_array($value)) { + $value = current($value); + } + + return parent::createNonEmptyValidatorMock($isValid, $value, $context); + } + + protected function getDummyValue($raw = true) + { + return [parent::getDummyValue($raw)]; + } } diff --git a/test/FileInputTest.php b/test/FileInputTest.php index 54c4decb..a3700fbb 100644 --- a/test/FileInputTest.php +++ b/test/FileInputTest.php @@ -29,13 +29,6 @@ public function setUp() $this->input->setAutoPrependUploadValidator(false); } - public function testValueMayBeInjected() - { - $value = ['tmp_name' => 'bar']; - $this->input->setValue($value); - $this->assertEquals($value, $this->input->getValue()); - } - public function testRetrievingValueFiltersTheValue() { $this->markTestSkipped('Test are not enabled in FileInputTest'); @@ -215,18 +208,6 @@ public function testCanValidateArrayOfMultiFileData() $this->assertFalse($this->input->isValid()); } - public function testSpecifyingMessagesToInputReturnsThoseOnFailedValidation() - { - $this->input->setValue(['tmp_name' => 'bar']); - $validator = new Validator\Digits(); - $this->input->getValidatorChain()->attach($validator); - $this->input->setErrorMessage('Please enter only digits'); - $this->assertFalse($this->input->isValid()); - $messages = $this->input->getMessages(); - $this->assertArrayNotHasKey(Validator\Digits::NOT_DIGITS, $messages); - $this->assertContains('Please enter only digits', $messages); - } - public function testAutoPrependUploadValidatorIsOnByDefault() { $input = new FileInput('foo'); @@ -315,12 +296,12 @@ public function testValidationsRunWithoutFileArrayDueToAjaxPost() $this->assertEquals($uploadMock, $validators[0]['instance']); } - public function testNotEmptyValidatorAddedWhenIsValidIsCalled() + public function testNotEmptyValidatorAddedWhenIsValidIsCalled($value = null) { $this->markTestSkipped('Test is not enabled in FileInputTest'); } - public function testRequiredNotEmptyValidatorNotAddedWhenOneExists() + public function testRequiredNotEmptyValidatorNotAddedWhenOneExists($value = null) { $this->markTestSkipped('Test is not enabled in FileInputTest'); } @@ -338,10 +319,7 @@ public function testFallbackValueVsIsValidRules( public function testFallbackValueVsIsValidRulesWhenValueNotSet( $required = null, - $fallbackValue = null, - $originalValue = null, - $isValid = null, - $expectedValue = null + $fallbackValue = null ) { $this->markTestSkipped('Input::setFallbackValue is not implemented on FileInput'); } @@ -485,4 +463,9 @@ public function mixedValueProvider() ], ]; } + + protected function getDummyValue($raw = true) + { + return ['tmp_name' => 'bar']; + } } diff --git a/test/InputTest.php b/test/InputTest.php index fa00221e..e7dd27ae 100644 --- a/test/InputTest.php +++ b/test/InputTest.php @@ -12,13 +12,12 @@ use PHPUnit_Framework_MockObject_MockObject as MockObject; use PHPUnit_Framework_TestCase as TestCase; use stdClass; -use Zend\Filter; use Zend\Filter\FilterChain; use Zend\InputFilter\Input; use Zend\InputFilter\InputInterface; -use Zend\Validator; -use Zend\Validator\NotEmpty; +use Zend\Validator\NotEmpty as NotEmptyValidator; use Zend\Validator\ValidatorChain; +use Zend\Validator\ValidatorInterface; /** * @covers Zend\InputFilter\Input @@ -35,7 +34,7 @@ public function setUp() $this->input = new Input('foo'); } - public function assertRequiredValidationErrorMessage($input, $message = '') + public function assertRequiredValidationErrorMessage(Input $input, $message = '') { $message = $message ?: 'Expected failure message for required input'; $message .= ';'; @@ -43,10 +42,10 @@ public function assertRequiredValidationErrorMessage($input, $message = '') $messages = $input->getMessages(); $this->assertInternalType('array', $messages, $message . ' non-array messages array'); - $notEmpty = new NotEmpty(); + $notEmpty = new NotEmptyValidator(); $messageTemplates = $notEmpty->getOption('messageTemplates'); $this->assertSame([ - NotEmpty::IS_EMPTY => $messageTemplates[NotEmpty::IS_EMPTY], + NotEmptyValidator::IS_EMPTY => $messageTemplates[NotEmptyValidator::IS_EMPTY], ], $messages, $message . ' missing NotEmpty::IS_EMPTY key and/or contains additional messages'); } @@ -58,27 +57,27 @@ public function testConstructorRequiresAName() public function testInputHasEmptyFilterChainByDefault() { $filters = $this->input->getFilterChain(); - $this->assertInstanceOf(Filter\FilterChain::class, $filters); + $this->assertInstanceOf(FilterChain::class, $filters); $this->assertEquals(0, count($filters)); } public function testInputHasEmptyValidatorChainByDefault() { $validators = $this->input->getValidatorChain(); - $this->assertInstanceOf(Validator\ValidatorChain::class, $validators); + $this->assertInstanceOf(ValidatorChain::class, $validators); $this->assertEquals(0, count($validators)); } public function testCanInjectFilterChain() { - $chain = new Filter\FilterChain(); + $chain = $this->createFilterChainMock(); $this->input->setFilterChain($chain); $this->assertSame($chain, $this->input->getFilterChain()); } public function testCanInjectValidatorChain() { - $chain = new Validator\ValidatorChain(); + $chain = $this->createValidatorChainMock(); $this->input->setValidatorChain($chain); $this->assertSame($chain, $this->input->getValidatorChain()); } @@ -141,7 +140,7 @@ public function testFallbackValueVsIsValidRules($required, $fallbackValue, $orig $input->setContinueIfEmpty(true); $input->setRequired($required); - $input->setValidatorChain($this->createValidatorChainMock($isValid)); + $input->setValidatorChain($this->createValidatorChainMock($isValid, $originalValue)); $input->setFallbackValue($fallbackValue); $input->setValue($originalValue); @@ -158,7 +157,7 @@ public function testFallbackValueVsIsValidRules($required, $fallbackValue, $orig /** * @dataProvider fallbackValueVsIsValidProvider */ - public function testFallbackValueVsIsValidRulesWhenValueNotSet($required, $fallbackValue, $originalValue, $isValid) + public function testFallbackValueVsIsValidRulesWhenValueNotSet($required, $fallbackValue) { $expectedValue = $fallbackValue; // Should always return the fallback value @@ -166,7 +165,7 @@ public function testFallbackValueVsIsValidRulesWhenValueNotSet($required, $fallb $input->setContinueIfEmpty(true); $input->setRequired($required); - $input->setValidatorChain($this->createValidatorChainMock($isValid)); + $input->setValidatorChain($this->createValidatorChainMock(null)); $input->setFallbackValue($fallbackValue); $this->assertTrue( @@ -258,7 +257,10 @@ public function testNotRequiredWithoutFallbackAndValueNotSetThenIsValid() $this->assertEquals([], $input->getMessages(), 'getMessages() should be empty because the input is valid'); } - public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue($value = '') + /** + * @dataProvider emptyValueProvider + */ + public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue($value) { $input = $this->input; $input->setContinueIfEmpty(true); @@ -269,58 +271,64 @@ public function testNotEmptyValidatorNotInjectedIfContinueIfEmptyIsTrue($value = $this->assertEmpty($validators); } - public function testValueIsNullByDefault() + public function testDefaultGetValue() { $this->assertNull($this->input->getValue()); } public function testValueMayBeInjected() { - $this->input->setValue('bar'); - $this->assertEquals('bar', $this->input->getValue()); + $valueRaw = $this->getDummyValue(); + + $this->input->setValue($valueRaw); + $this->assertEquals($valueRaw, $this->input->getValue()); } public function testRetrievingValueFiltersTheValue() { - $this->input->setValue('bar'); - $filter = new Filter\StringToUpper(); - $this->input->getFilterChain()->attach($filter); - $this->assertEquals('BAR', $this->input->getValue()); + $valueRaw = $this->getDummyValue(); + $valueFiltered = $this->getDummyValue(false); + + $filterChain = $this->createFilterChainMock($valueRaw, $valueFiltered); + + $this->input->setFilterChain($filterChain); + $this->input->setValue($valueRaw); + + $this->assertSame($valueFiltered, $this->input->getValue()); } public function testCanRetrieveRawValue() { - $this->input->setValue('bar'); - $filter = new Filter\StringToUpper(); - $this->input->getFilterChain()->attach($filter); - $this->assertEquals('bar', $this->input->getRawValue()); + $valueRaw = $this->getDummyValue(); + + $filterChain = $this->createFilterChainMock(); + + $this->input->setFilterChain($filterChain); + $this->input->setValue($valueRaw); + + $this->assertEquals($valueRaw, $this->input->getRawValue()); } public function testValidationOperatesOnFilteredValue() { - $this->input->setValue(' 123 '); - $filter = new Filter\StringTrim(); - $this->input->getFilterChain()->attach($filter); - $validator = new Validator\Digits(); - $this->input->getValidatorChain()->attach($validator); + $valueRaw = $this->getDummyValue(); + $valueFiltered = $this->getDummyValue(false); + + $filterChain = $this->createFilterChainMock($valueRaw, $valueFiltered); + + $validatorChain = $this->createValidatorChainMock(true, $valueFiltered); + + $this->input->setAllowEmpty(true); + $this->input->setFilterChain($filterChain); + $this->input->setValidatorChain($validatorChain); + $this->input->setValue($valueRaw); + $this->assertTrue( $this->input->isValid(), 'isValid() value not match. Detail . ' . json_encode($this->input->getMessages()) ); } - public function testSpecifyingMessagesToInputReturnsThoseOnFailedValidation() - { - $this->input->setValue('bar'); - $validator = new Validator\Digits(); - $this->input->getValidatorChain()->attach($validator); - $this->input->setErrorMessage('Please enter only digits'); - $this->assertFalse($this->input->isValid()); - $messages = $this->input->getMessages(); - $this->assertArrayNotHasKey(Validator\Digits::NOT_DIGITS, $messages); - $this->assertContains('Please enter only digits', $messages); - } - public function testBreakOnFailureFlagIsOffByDefault() { $this->assertFalse($this->input->breakOnFailure()); @@ -332,10 +340,13 @@ public function testBreakOnFailureFlagIsMutable() $this->assertTrue($this->input->breakOnFailure()); } - public function testNotEmptyValidatorAddedWhenIsValidIsCalled() + /** + * @dataProvider emptyValueProvider + */ + public function testNotEmptyValidatorAddedWhenIsValidIsCalled($value) { $this->assertTrue($this->input->isRequired()); - $this->input->setValue(''); + $this->input->setValue($value); $validatorChain = $this->input->getValidatorChain(); $this->assertEquals(0, count($validatorChain->getValidators())); @@ -349,16 +360,15 @@ public function testNotEmptyValidatorAddedWhenIsValidIsCalled() $this->assertEquals(1, count($validatorChain->getValidators())); } - public function testRequiredNotEmptyValidatorNotAddedWhenOneExists() + /** + * @dataProvider emptyValueProvider + */ + public function testRequiredNotEmptyValidatorNotAddedWhenOneExists($value) { - $this->assertTrue($this->input->isRequired()); - $this->input->setValue(''); + $this->input->setRequired(true); + $this->input->setValue($value); - /** @var Validator\NotEmpty|MockObject $notEmptyMock */ - $notEmptyMock = $this->getMock(Validator\NotEmpty::class, ['isValid']); - $notEmptyMock->expects($this->exactly(1)) - ->method('isValid') - ->will($this->returnValue(false)); + $notEmptyMock = $this->createNonEmptyValidatorMock(false, $value); $validatorChain = $this->input->getValidatorChain(); $validatorChain->prependValidator($notEmptyMock); @@ -369,20 +379,23 @@ public function testRequiredNotEmptyValidatorNotAddedWhenOneExists() $this->assertEquals($notEmptyMock, $validators[0]['instance']); } - public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain() + /** + * @dataProvider emptyValueProvider + */ + public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain($valueRaw, $valueFiltered) { - $this->assertTrue($this->input->isRequired()); - $this->input->setValue(''); + $filterChain = $this->createFilterChainMock($valueRaw, $valueFiltered); + $validatorChain = $this->input->getValidatorChain(); - /** @var Validator\NotEmpty|MockObject $notEmptyMock */ - $notEmptyMock = $this->getMock(Validator\NotEmpty::class, ['isValid']); - $notEmptyMock->expects($this->exactly(1)) - ->method('isValid') - ->will($this->returnValue(false)); + $this->input->setRequired(true); + $this->input->setFilterChain($filterChain); + $this->input->setValue($valueRaw); - $validatorChain = $this->input->getValidatorChain(); - $validatorChain->attach(new Validator\Digits()); + $notEmptyMock = $this->createNonEmptyValidatorMock(false, $valueFiltered); + + $validatorChain->attach($this->createValidatorMock(true)); $validatorChain->attach($notEmptyMock); + $this->assertFalse($this->input->isValid()); $validators = $validatorChain->getValidators(); @@ -450,8 +463,10 @@ public function testResetValueReturnsInputValueToDefaultValue($value) $this->assertEquals($originalInput, $input, 'Input was not reset to the default value state'); } - public function testMerge($sourceRawValue = 'bazRawValue') + public function testMerge() { + $sourceRawValue = $this->getDummyValue(); + $source = $this->createInputInterfaceMock(); $source->method('getName')->willReturn('bazInput'); $source->method('getErrorMessage')->willReturn('bazErrorMessage'); @@ -751,32 +766,54 @@ protected function createInputInterfaceMock() } /** + * @param mixed $valueRaw + * @param mixed $valueFiltered + * * @return FilterChain|MockObject */ - protected function createFilterChainMock() + protected function createFilterChainMock($valueRaw = null, $valueFiltered = null) { /** @var FilterChain|MockObject $filterChain */ $filterChain = $this->getMock(FilterChain::class); + $filterChain->method('filter') + ->with($valueRaw) + ->willReturn($valueFiltered) + ; + return $filterChain; } /** * @param null|bool $isValid If set stub isValid method for return the argument value. + * @param mixed $value + * @param mixed $context + * @param string[] $messages * * @return ValidatorChain|MockObject */ - protected function createValidatorChainMock($isValid = null) + protected function createValidatorChainMock($isValid = null, $value = null, $context = null, $messages = []) { /** @var ValidatorChain|MockObject $validatorChain */ $validatorChain = $this->getMock(ValidatorChain::class); - if ($isValid !== null) { - $validatorChain->method('isValid') + if (($isValid === false) || ($isValid === true)) { + $validatorChain->expects($this->once()) + ->method('isValid') + ->with($value, $context) ->willReturn($isValid) ; + } else { + $validatorChain->expects($this->never()) + ->method('isValid') + ->with($value, $context) + ; } + $validatorChain->method('getMessages') + ->willReturn($messages) + ; + return $validatorChain; } @@ -786,25 +823,26 @@ protected function createValidatorChainMock($isValid = null) * @param mixed $context * @param string[] $messages * - * @return Validator\ValidatorInterface|MockObject + * @return ValidatorInterface|MockObject */ - protected function createValidatorMock($isValid, $value, $context = null, $messages = []) + protected function createValidatorMock($isValid, $value = 'not-set', $context = null, $messages = []) { - /** @var Validator\ValidatorInterface|MockObject $validator */ - $validator = $this->getMock(Validator\ValidatorInterface::class); + /** @var ValidatorInterface|MockObject $validator */ + $validator = $this->getMock(ValidatorInterface::class); if (($isValid === false) || ($isValid === true)) { - $validator->expects($this->once()) + $isValidMethod = $validator->expects($this->once()) ->method('isValid') - ->with($value, $context) ->willReturn($isValid) ; } else { - $validator->expects($this->never()) + $isValidMethod = $validator->expects($this->never()) ->method('isValid') - ->with($value, $context) ; } + if ($value !== 'not-set') { + $isValidMethod->with($value, $context); + } $validator->method('getMessages') ->willReturn($messages) @@ -812,4 +850,33 @@ protected function createValidatorMock($isValid, $value, $context = null, $messa return $validator; } + + /** + * @param bool $isValid + * @param mixed $value + * @param mixed $context + * + * @return NotEmptyValidator|MockObject + */ + protected function createNonEmptyValidatorMock($isValid, $value, $context = null) + { + /** @var NotEmptyValidator|MockObject $notEmptyMock */ + $notEmptyMock = $this->getMock(NotEmptyValidator::class, ['isValid']); + $notEmptyMock->expects($this->once()) + ->method('isValid') + ->with($value, $context) + ->willReturn($isValid) + ; + + return $notEmptyMock; + } + + protected function getDummyValue($raw = true) + { + if ($raw) { + return 'foo'; + } else { + return 'filtered'; + } + } } From 24d55797281b45db0dbe8b06deef8baeb200701e Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 13:59:11 +0200 Subject: [PATCH 04/12] Consolidate unknown fields test --- test/BaseInputFilterTest.php | 138 ++++++++--------------------------- 1 file changed, 31 insertions(+), 107 deletions(-) diff --git a/test/BaseInputFilterTest.php b/test/BaseInputFilterTest.php index f2f39567..0638e626 100644 --- a/test/BaseInputFilterTest.php +++ b/test/BaseInputFilterTest.php @@ -349,62 +349,6 @@ public function testSetTraversableDataAndGetRawValueGetValue( ); } - public function getInputFilter() - { - $filter = $this->inputFilter; - - $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim') - ->attachByName('alpha'); - $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6)); - - $bar = new Input(); - $bar->getFilterChain()->attachByName('stringtrim'); - $bar->getValidatorChain()->attach(new Validator\Digits()); - - $baz = new Input(); - $baz->setRequired(false); - $baz->getFilterChain()->attachByName('stringtrim'); - $baz->getValidatorChain()->attach(new Validator\StringLength(1, 6)); - - $qux = new Input(); - $qux->setAllowEmpty(true); - $qux->getFilterChain()->attachByName('stringtrim'); - $qux->getValidatorChain()->attach(new Validator\StringLength(5, 6)); - - $filter->add($foo, 'foo') - ->add($bar, 'bar') - ->add($baz, 'baz') - ->add($qux, 'qux') - ->add($this->getChildInputFilter(), 'nest'); - - return $filter; - } - - public function getChildInputFilter() - { - $filter = new BaseInputFilter(); - - $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim') - ->attachByName('alpha'); - $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6)); - - $bar = new Input(); - $bar->getFilterChain()->attachByName('stringtrim'); - $bar->getValidatorChain()->attach(new Validator\Digits()); - - $baz = new Input(); - $baz->setRequired(false); - $baz->getFilterChain()->attachByName('stringtrim'); - $baz->getValidatorChain()->attach(new Validator\StringLength(1, 6)); - - $filter->add($foo, 'foo') - ->add($bar, 'bar') - ->add($baz, 'baz'); - return $filter; - } - public function testResetEmptyValidationGroupRecursively() { $data = [ @@ -540,60 +484,20 @@ public function testValidationSkipsFieldsMarkedNotRequiredWhenNoDataPresent() ); } - public function testHasUnknown() + /** + * @dataProvider unknownScenariosProvider + */ + public function testUnknown($inputs, $data, $hasUnknown, $getUnknown) { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); + $inputFilter = $this->inputFilter; + foreach ($inputs as $name => $input) { + $inputFilter->add($input, $name); } - $filter = $this->getInputFilter(); - $validData = [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '' - ]; - $filter->setData($validData); - $this->assertFalse($filter->hasUnknown()); - - $filter = $this->getInputFilter(); - $invalidData = [ - 'bar' => '12345', - 'baz' => '', - 'gru' => '', - ]; - $filter->setData($invalidData); - $this->assertTrue($filter->hasUnknown()); - } - public function testGetUknown() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } + $inputFilter->setData($data); - $filter = $this->getInputFilter(); - $unknown = [ - 'bar' => '12345', - 'baz' => '', - 'gru' => 10, - 'test' => 'ok', - ]; - $filter->setData($unknown); - $unknown = $filter->getUnknown(); - $this->assertEquals(2, count($unknown)); - $this->assertArrayHasKey('gru', $unknown); - $this->assertEquals(10, $unknown['gru']); - $this->assertArrayHasKey('test', $unknown); - $this->assertEquals('ok', $unknown['test']); - - $filter = $this->getInputFilter(); - $validData = [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '' - ]; - $filter->setData($validData); - $unknown = $filter->getUnknown(); - $this->assertEquals(0, count($unknown)); + $this->assertEquals($getUnknown, $inputFilter->getUnknown(), 'getUnknown() value not match'); + $this->assertEquals($hasUnknown, $inputFilter->hasUnknown(), 'hasUnknown() value not match'); } public function testGetInputs() @@ -714,7 +618,7 @@ public function testMerge() [ 'foo', 'bar', - 'baz' + 'baz', ], array_keys($inputFilter->getInputs()) ); @@ -865,6 +769,26 @@ function (&$set) { return $dataSets; } + public function unknownScenariosProvider() + { + $inputA = $this->createInputInterfaceMock('inputA', true); + $dataA = ['inputA' => 'foo']; + $dataUnknown = ['inputUnknown' => 'unknownValue']; + $dataAAndUnknown = array_merge($dataA, $dataUnknown); + + // @codingStandardsIgnoreStart + return [ + // Description => [$inputs, $data, $hasUnknown, $getUnknown] + 'empty data and inputs' => [[] , [] , false, []], + 'empty data' => [[$inputA], [] , false, []], + 'data and fields match' => [[$inputA], $dataA , false, []], + 'data known and unknown' => [[$inputA], $dataAAndUnknown, true , $dataUnknown], + 'data unknown' => [[$inputA], $dataUnknown , true , $dataUnknown], + 'data unknown, no input' => [[] , $dataUnknown , true , $dataUnknown], + ]; + // @codingStandardsIgnoreEnd + } + public function inputProvider() { $input = $this->createInputInterfaceMock('fooInput', null); From 8961a94e34bf904f04ab07492792a66b6d3aee15 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Wed, 19 Aug 2015 07:41:38 +0200 Subject: [PATCH 05/12] Remove unnecessary fixtures --- test/BaseInputFilterTest.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/BaseInputFilterTest.php b/test/BaseInputFilterTest.php index 0638e626..ee749523 100644 --- a/test/BaseInputFilterTest.php +++ b/test/BaseInputFilterTest.php @@ -537,15 +537,12 @@ public function testAddingExistingInputWillMergeIntoExisting() /** * @group 5270 - * @requires extension intl */ public function testIsValidWhenValuesSetOnFilters() { $filter = $this->inputFilter; $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim') - ->attachByName('alpha'); $foo->getValidatorChain()->attach(new Validator\StringLength(15, 18)); $filter->add($foo, 'foo'); From 78e4670c7617b358003efb79ace92d3c0d090aef Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 14:06:59 +0200 Subject: [PATCH 06/12] Remove redundant test This test basically assert isValid method is called. The fact of the input to validate data with the current value is out of the scope of InputFilter. --- test/BaseInputFilterTest.php | 46 ------------------------------------ 1 file changed, 46 deletions(-) diff --git a/test/BaseInputFilterTest.php b/test/BaseInputFilterTest.php index ee749523..3076c5b1 100644 --- a/test/BaseInputFilterTest.php +++ b/test/BaseInputFilterTest.php @@ -15,7 +15,6 @@ use PHPUnit_Framework_MockObject_MockObject as MockObject; use PHPUnit_Framework_TestCase as TestCase; use stdClass; -use Zend\Filter; use Zend\InputFilter\ArrayInput; use Zend\InputFilter\BaseInputFilter; use Zend\InputFilter\Exception\InvalidArgumentException; @@ -23,7 +22,6 @@ use Zend\InputFilter\Input; use Zend\InputFilter\InputFilterInterface; use Zend\InputFilter\InputInterface; -use Zend\Validator; /** * @covers Zend\InputFilter\BaseInputFilter @@ -535,50 +533,6 @@ public function testAddingExistingInputWillMergeIntoExisting() $this->assertFalse($filter->get('foo')->isRequired()); } - /** - * @group 5270 - */ - public function testIsValidWhenValuesSetOnFilters() - { - $filter = $this->inputFilter; - - $foo = new Input(); - $foo->getValidatorChain()->attach(new Validator\StringLength(15, 18)); - - $filter->add($foo, 'foo'); - - //test valid with setData - $filter->setData(['foo' => 'invalid']); - $this->assertFalse($filter->isValid()); - - //test invalid with setData - $filter->setData(['foo' => 'thisisavalidstring']); - $this->assertTrue( - $filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($filter->getMessages()) - ); - - //test invalid when setting data on actual filter - $filter->get('foo')->setValue('invalid'); - $this->assertFalse($filter->get('foo')->isValid(), 'Filtered value is valid, should be invalid'); - $this->assertFalse($filter->isValid(), 'Input filter did not return value from filter'); - - //test valid when setting data on actual filter - $filter->get('foo')->setValue('thisisavalidstring'); - $this->assertTrue( - $filter->get('foo') - ->isValid(), - 'Filtered value is not valid. Detail . ' . json_encode( - $filter->get('foo') - ->getMessages() - ) - ); - $this->assertTrue( - $filter->isValid(), - 'Input filter did return value from filter. Detail . ' . json_encode($filter->getMessages()) - ); - } - /** * @group 5638 */ From 79173b1e8a354bc1ac1efb76b4122d2ca4b37a2b Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 14:19:15 +0200 Subject: [PATCH 07/12] Cover resetInput scenario --- test/BaseInputFilterTest.php | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/test/BaseInputFilterTest.php b/test/BaseInputFilterTest.php index 3076c5b1..692adc93 100644 --- a/test/BaseInputFilterTest.php +++ b/test/BaseInputFilterTest.php @@ -356,8 +356,31 @@ public function testResetEmptyValidationGroupRecursively() 'deep-input2' => 'deep-foo2', ] ]; + $expectedData = array_merge($data, ['notSet' => null]); + /** @var Input|MockObject $resetInput */ + $flatInput = $this->getMockBuilder(Input::class) + ->enableProxyingToOriginalMethods() + ->setConstructorArgs(['flat']) + ->getMock() + ; + $flatInput->expects($this->once()) + ->method('setValue') + ->with('foo') + ; + // Inputs without value must be reset for to have clean states when use different setData arguments + /** @var Input|MockObject $flatInput */ + $resetInput = $this->getMockBuilder(Input::class) + ->enableProxyingToOriginalMethods() + ->setConstructorArgs(['notSet']) + ->getMock() + ; + $resetInput->expects($this->once()) + ->method('resetValue') + ; + $filter = $this->inputFilter; - $filter->add(new Input, 'flat'); + $filter->add($flatInput); + $filter->add($resetInput); $deepInputFilter = new BaseInputFilter; $deepInputFilter->add(new Input, 'deep-input1'); $deepInputFilter->add(new Input, 'deep-input2'); @@ -366,7 +389,7 @@ public function testResetEmptyValidationGroupRecursively() $filter->setValidationGroup(['deep' => 'deep-input1']); // reset validation group $filter->setValidationGroup(InputFilterInterface::VALIDATE_ALL); - $this->assertEquals($data, $filter->getValues()); + $this->assertEquals($expectedData, $filter->getValues()); } /* From c0f431d6c3d0a8e6501ce3fd50ab69c4adb3c857 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 14:20:25 +0200 Subject: [PATCH 08/12] Remove zend-i18n dev dependency --- composer.json | 1 - test/CollectionInputFilterTest.php | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index fcebd9ab..69a2694f 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,6 @@ "zendframework/zend-stdlib": "~2.5" }, "require-dev": { - "zendframework/zend-i18n": "~2.5", "zendframework/zend-servicemanager": "~2.5", "fabpot/php-cs-fixer": "1.7.*", "phpunit/PHPUnit": "^4.5" diff --git a/test/CollectionInputFilterTest.php b/test/CollectionInputFilterTest.php index c6db938a..3c32d459 100644 --- a/test/CollectionInputFilterTest.php +++ b/test/CollectionInputFilterTest.php @@ -50,8 +50,7 @@ public function getBaseInputFilter() $filter = new BaseInputFilter(); $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim') - ->attachByName('alpha'); + $foo->getFilterChain()->attachByName('stringtrim'); $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6)); $bar = new Input(); @@ -76,8 +75,7 @@ public function getChildInputFilter() $filter = new BaseInputFilter(); $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim') - ->attachByName('alpha'); + $foo->getFilterChain()->attachByName('stringtrim'); $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6)); $bar = new Input(); From b86f6e6167bea8f93a885031d30f71d6175e59e4 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 18:19:19 +0200 Subject: [PATCH 09/12] Remove redundant test Covered by testSetDataAndGetRawValueGetValue IF* scenarios --- test/InputFilterTest.php | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/test/InputFilterTest.php b/test/InputFilterTest.php index 30d84c8b..45faf6e2 100644 --- a/test/InputFilterTest.php +++ b/test/InputFilterTest.php @@ -43,33 +43,6 @@ public function testCanComposeAFactory() $this->assertSame($factory, $this->inputFilter->getFactory()); } - /** - * @covers \Zend\InputFilter\BaseInputFilter::getValue - * - * @group 6028 - */ - public function testGetValueReturnsArrayIfNestedInputFilters() - { - $inputFilter = new InputFilter(); - $inputFilter->add(new Input(), 'name'); - - $this->inputFilter->add($inputFilter, 'people'); - - $data = [ - 'people' => [ - 'name' => 'Wanderson' - ] - ]; - - $this->inputFilter->setData($data); - $this->assertTrue( - $this->inputFilter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->inputFilter->getMessages()) - ); - - $this->assertInternalType('array', $this->inputFilter->getValue('people')); - } - public function inputProvider() { $dataSets = parent::inputProvider(); From 6c42293678004cea2d94656ff1fb460c143c272f Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 4 Sep 2015 20:59:43 +0200 Subject: [PATCH 10/12] Consolidate CollectionInputFilter tests --- test/CollectionInputFilterTest.php | 856 ++++++++--------------------- 1 file changed, 217 insertions(+), 639 deletions(-) diff --git a/test/CollectionInputFilterTest.php b/test/CollectionInputFilterTest.php index 3c32d459..795e6b02 100644 --- a/test/CollectionInputFilterTest.php +++ b/test/CollectionInputFilterTest.php @@ -9,6 +9,8 @@ namespace ZendTest\InputFilter; +use ArrayIterator; +use PHPUnit_Framework_MockObject_MockObject as MockObject; use PHPUnit_Framework_TestCase as TestCase; use stdClass; use Zend\InputFilter\BaseInputFilter; @@ -16,7 +18,6 @@ use Zend\InputFilter\Exception\RuntimeException; use Zend\InputFilter\Input; use Zend\InputFilter\InputFilter; -use Zend\Validator; /** * @covers Zend\InputFilter\CollectionInputFilter @@ -45,84 +46,14 @@ public function testSetDataWithInvalidDataTypeThrowsInvalidArgumentException() $inputFilter->setInputFilter(new stdClass()); } - public function getBaseInputFilter() - { - $filter = new BaseInputFilter(); - - $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim'); - $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6)); - - $bar = new Input(); - $bar->getFilterChain()->attachByName('stringtrim'); - $bar->getValidatorChain()->attach(new Validator\Digits()); - - $baz = new Input(); - $baz->setRequired(false); - $baz->getFilterChain()->attachByName('stringtrim'); - $baz->getValidatorChain()->attach(new Validator\StringLength(1, 6)); - - $filter->add($foo, 'foo') - ->add($bar, 'bar') - ->add($baz, 'baz') - ->add($this->getChildInputFilter(), 'nest'); - - return $filter; - } - - public function getChildInputFilter() - { - $filter = new BaseInputFilter(); - - $foo = new Input(); - $foo->getFilterChain()->attachByName('stringtrim'); - $foo->getValidatorChain()->attach(new Validator\StringLength(3, 6)); - - $bar = new Input(); - $bar->getFilterChain()->attachByName('stringtrim'); - $bar->getValidatorChain()->attach(new Validator\Digits()); - - $baz = new Input(); - $baz->setRequired(false); - $baz->getFilterChain()->attachByName('stringtrim'); - $baz->getValidatorChain()->attach(new Validator\StringLength(1, 6)); - - $filter->add($foo, 'foo') - ->add($bar, 'bar') - ->add($baz, 'baz'); - return $filter; - } - - public function getValidCollectionData() + /** + * @dataProvider inputFilterProvider + */ + public function testSetInputFilter($inputFilter, $expectedType) { - return [ - [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - 'nest' => [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - ], - ], - [ - 'foo' => ' batbaz ', - 'bar' => '54321', - 'baz' => '', - 'nest' => [ - 'foo' => ' batbaz ', - 'bar' => '54321', - 'baz' => '', - ], - ] - ]; - } + $this->filter->setInputFilter($inputFilter); - public function testSetInputFilter() - { - $this->filter->setInputFilter(new BaseInputFilter()); - $this->assertInstanceOf(BaseInputFilter::class, $this->filter->getInputFilter()); + $this->assertInstanceOf($expectedType, $this->filter->getInputFilter(), 'getInputFilter() type not match'); } public function testGetDefaultInputFilter() @@ -130,39 +61,28 @@ public function testGetDefaultInputFilter() $this->assertInstanceOf(BaseInputFilter::class, $this->filter->getInputFilter()); } - public function testSetCount() - { - $this->filter->setCount(5); - $this->assertEquals(5, $this->filter->getCount()); - } - - public function testSetCountBelowZero() - { - $this->filter->setCount(-1); - $this->assertEquals(0, $this->filter->getCount()); - } - - public function testGetCountUsesCountOfCollectionDataWhenNotSet() + /** + * @dataProvider isRequiredProvider + */ + public function testSetRequired($value) { - $collectionData = [ - ['foo' => 'bar'], - ['foo' => 'baz'] - ]; - - $this->filter->setData($collectionData); - $this->assertEquals(2, $this->filter->getCount()); + $this->filter->setIsRequired($value); + $this->assertEquals($value, $this->filter->getIsRequired()); } - public function testGetCountUsesSpecifiedCount() + /** + * @dataProvider countVsDataProvider + */ + public function testSetCount($count, $data, $expectedCount) { - $collectionData = [ - ['foo' => 'bar'], - ['foo' => 'baz'] - ]; + if ($count !== null) { + $this->filter->setCount($count); + } + if ($data !== null) { + $this->filter->setData($data); + } - $this->filter->setCount(3); - $this->filter->setData($collectionData); - $this->assertEquals(3, $this->filter->getCount()); + $this->assertEquals($expectedCount, $this->filter->getCount(), 'getCount() value not match'); } /** @@ -172,11 +92,11 @@ public function testGetCountReturnsRightCountOnConsecutiveCallsWithDifferentData { $collectionData1 = [ ['foo' => 'bar'], - ['foo' => 'baz'] + ['foo' => 'baz'], ]; $collectionData2 = [ - ['foo' => 'bar'] + ['foo' => 'bar'], ]; $this->filter->setData($collectionData1); @@ -185,551 +105,127 @@ public function testGetCountReturnsRightCountOnConsecutiveCallsWithDifferentData $this->assertEquals(1, $this->filter->getCount()); } - public function testCanValidateValidData() + public function testInvalidCollectionIsNotValid() { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } + $data = 1; - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($this->getValidCollectionData()); - $this->assertTrue( - $this->filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) - ); + $this->filter->setData($data); + + $this->assertFalse($this->filter->isValid()); } - public function testCanValidateValidDataWithNonConsecutiveKeys() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); + /** + * @dataProvider dataVsValidProvider + */ + public function testDataVsValid( + $required, + $count, + $data, + $inputFilter, + $expectedRaw, + $expecteValues, + $expectedValid, + $expectedMessages + ) { + $this->filter->setInputFilter($inputFilter); + $this->filter->setData($data); + if ($count !== null) { + $this->filter->setCount($count); } + $this->filter->setIsRequired($required); - $collectionData = $this->getValidCollectionData(); - $collectionData[2] = $collectionData[0]; - unset($collectionData[0]); - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($collectionData); - $this->assertTrue( + $this->assertEquals( + $expectedValid, $this->filter->isValid(), 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) ); + $this->assertEquals($expectedRaw, $this->filter->getRawValues(), 'getRawValues() value not match'); + $this->assertEquals($expecteValues, $this->filter->getValues(), 'getValues() value not match'); + $this->assertEquals($expectedMessages, $this->filter->getMessages(), 'getMessages() value not match'); } - public function testInvalidDataReturnsFalse() + public function dataVsValidProvider() { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $invalidCollectionData = [ - [ - 'foo' => ' bazbatlong ', - 'bar' => '12345', - 'baz' => '', - ], - [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - ] + $dataRaw = [ + 'fooInput' => 'fooRaw', ]; - - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($invalidCollectionData); - $this->assertFalse($this->filter->isValid()); - } - - public function testDataLessThanCountIsInvalid() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $invalidCollectionData = [ - [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - 'nest' => [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - ], - ], + $dataFiltered = [ + 'fooInput' => 'fooFiltered', ]; - - $this->filter->setCount(2); - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($invalidCollectionData); - $this->assertFalse($this->filter->isValid()); - } - - public function testGetValues() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $expectedData = [ - [ - 'foo' => 'bazbat', - 'bar' => '12345', - 'baz' => '', - 'nest' => [ - 'foo' => 'bazbat', - 'bar' => '12345', - 'baz' => '', - ], - ], - [ - 'foo' => 'batbaz', - 'bar' => '54321', - 'baz' => '', - 'nest' => [ - 'foo' => 'batbaz', - 'bar' => '54321', - 'baz' => '', - ], - ] + $colRaw = [$dataRaw]; + $colFiltered = [$dataFiltered]; + $errorMessage = [ + 'fooInput' => 'fooError', ]; - - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($this->getValidCollectionData()); - - $this->assertTrue( - $this->filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) - ); - $this->assertEquals($expectedData, $this->filter->getValues()); - - $this->assertCount(2, $this->filter->getValidInput()); - foreach ($this->filter->getValidInput() as $validInputs) { - $this->assertCount(4, $validInputs); - } - } - - public function testGetRawValues() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $expectedData = [ - [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - 'nest' => [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - ], - ], - [ - 'foo' => ' batbaz ', - 'bar' => '54321', - 'baz' => '', - 'nest' => [ - 'foo' => ' batbaz ', - 'bar' => '54321', - 'baz' => '', - ], - ] + $colMessages = [$errorMessage]; + + $invalidIF = function () use ($dataRaw, $dataFiltered, $errorMessage) { + return $this->createBaseInputFilterMock(false, $dataRaw, $dataFiltered, $errorMessage); + }; + $validIF = function () use ($dataRaw, $dataFiltered) { + return $this->createBaseInputFilterMock(true, $dataRaw, $dataFiltered); + }; + $isRequired = true; + + // @codingStandardsIgnoreStart + $dataSets = [ + // Description => [$required, $count, $data, $inputFilter, $expectedRaw, $expecteValues, $expectedValid, $expectedMessages] + 'Required: T, Count: N, Valid: T' => [ $isRequired, null, $colRaw, $validIF , $colRaw, $colFiltered, true , []], + 'Required: T, Count: N, Valid: F' => [ $isRequired, null, $colRaw, $invalidIF, $colRaw, $colFiltered, false, $colMessages], + 'Required: T, Count: +1, Valid: F' => [ $isRequired, 2, $colRaw, $invalidIF, $colRaw, $colFiltered, false, $colMessages], + 'Required: F, Count: N, Valid: T' => [!$isRequired, null, $colRaw, $validIF , $colRaw, $colFiltered, true , []], + 'Required: F, Count: N, Valid: F' => [!$isRequired, null, $colRaw, $invalidIF, $colRaw, $colFiltered, false, $colMessages], + 'Required: F, Count: +1, Valid: F' => [!$isRequired, 2, $colRaw, $invalidIF, $colRaw, $colFiltered, false, $colMessages], + 'Required: T, Data: [], Valid: X' => [ $isRequired, null, [] , $invalidIF, [] , [] , false, []], + 'Required: F, Data: [], Valid: X' => [!$isRequired, null, [] , $invalidIF, [] , [] , true , []], ]; + // @codingStandardsIgnoreEnd - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($this->getValidCollectionData()); + array_walk( + $dataSets, + function (&$set) { + // Create unique mock input instances for each set + $inputFilter = $set[3](); - $this->assertTrue( - $this->filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) + $set[3] = $inputFilter; + } ); - $this->assertEquals($expectedData, $this->filter->getRawValues()); - } - - public function testGetMessagesForInvalidInputs() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $invalidCollectionData = [ - [ - 'foo' => ' bazbattoolong ', - 'bar' => '12345', - 'baz' => '', - 'nest' => [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - ], - ], - [ - 'foo' => ' bazbat ', - 'bar' => 'notstring', - 'baz' => '', - 'nest' => [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - ], - ], - [ - 'foo' => ' bazbat ', - 'bar' => '12345', - 'baz' => '', - 'nest' => [ - // missing 'foo' here - 'bar' => '12345', - 'baz' => '', - ], - ], - ]; - - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($invalidCollectionData); - - $this->assertFalse($this->filter->isValid()); - - $this->assertCount(3, $this->filter->getInvalidInput()); - foreach ($this->filter->getInvalidInput() as $invalidInputs) { - $this->assertCount(1, $invalidInputs); - } - $messages = $this->filter->getMessages(); - - $this->assertCount(3, $messages); - $this->assertArrayHasKey('foo', $messages[0]); - $this->assertArrayHasKey('bar', $messages[1]); - $this->assertArrayHasKey('nest', $messages[2]); - - $this->assertCount(1, $messages[0]['foo']); - $this->assertCount(1, $messages[1]['bar']); - $this->assertCount(1, $messages[2]['nest']); + return $dataSets; } public function testSetValidationGroupUsingFormStyle() { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - // forms set an array of identical validation groups for each set of data - $formValidationGroup = [ - [ - 'foo', - 'bar', - ], - [ - 'foo', - 'bar', - ], - [ - 'foo', - 'bar', - ] + $validationGroup = [ + 'fooGroup', ]; + $colValidationGroup = [$validationGroup]; - $data = [ - [ - 'foo' => ' bazbat ', - 'bar' => '12345' - ], - [ - 'foo' => ' batbaz ', - 'bar' => '54321' - ], - [ - 'foo' => ' batbaz ', - 'bar' => '54321' - ] + $dataRaw = [ + 'fooInput' => 'fooRaw', ]; - - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($data); - $this->filter->setValidationGroup($formValidationGroup); - - $this->assertTrue( - $this->filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) - ); - } - - public function testEmptyCollectionIsValidByDefault() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $data = []; - - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($data); + $dataFiltered = [ + 'fooInput' => 'fooFiltered', + ]; + $colRaw = [$dataRaw]; + $colFiltered = [$dataFiltered]; + $baseInputFilter = $this->createBaseInputFilterMock(true, $dataRaw, $dataFiltered); + $baseInputFilter->expects($this->once()) + ->method('setValidationGroup') + ->with($validationGroup) + ; + + $this->filter->setInputFilter($baseInputFilter); + $this->filter->setData($colRaw); + $this->filter->setValidationGroup($colValidationGroup); $this->assertTrue( $this->filter->isValid(), 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) ); - } - - public function testEmptyCollectionIsNotValidIfRequired() - { - if (!extension_loaded('intl')) { - $this->markTestSkipped('ext/intl not enabled'); - } - - $data = []; - - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($data); - $this->filter->setIsRequired(true); - - $this->assertFalse($this->filter->isValid()); - } - - public function testSetRequired() - { - $this->filter->setIsRequired(true); - $this->assertEquals(true, $this->filter->getIsRequired()); - } - - public function testNonRequiredFieldsAreValidated() - { - $invalidCollectionData = [ - [ - 'foo' => ' bazbattoolong ', - 'bar' => '12345', - 'baz' => 'baztoolong', - 'nest' => [ - '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())); - } - - public function testNestedCollectionWithEmptyChild() - { - $items_inputfilter = new BaseInputFilter(); - $items_inputfilter->add(new Input(), 'id') - ->add(new Input(), 'type'); - $items = new CollectionInputFilter(); - $items->setInputFilter($items_inputfilter); - - $groups_inputfilter = new BaseInputFilter(); - $groups_inputfilter->add(new Input(), 'group_class') - ->add($items, 'items'); - $groups = new CollectionInputFilter(); - $groups->setInputFilter($groups_inputfilter); - - $inputFilter = new BaseInputFilter(); - $inputFilter->add($groups, 'groups'); - - $preFilterdata = [ - 'groups' => [ - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 100, - 'type' => 'item-1', - ], - ], - ], - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 200, - 'type' => 'item-2', - ], - [ - 'id' => 300, - 'type' => 'item-3', - ], - [ - 'id' => 400, - 'type' => 'item-4', - ], - ], - ], - [ - 'group_class' => 'biz', - ], - ], - ]; - - $postFilterdata = [ - 'groups' => [ - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 100, - 'type' => 'item-1', - ], - ], - ], - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 200, - 'type' => 'item-2', - ], - [ - 'id' => 300, - 'type' => 'item-3', - ], - [ - 'id' => 400, - 'type' => 'item-4', - ], - ], - ], - [ - 'group_class' => 'biz', - 'items' => [], - ], - ], - ]; - - $inputFilter->setData($preFilterdata); - $inputFilter->isValid(); - $values = $inputFilter->getValues(); - $this->assertEquals($postFilterdata, $values); - } - - public function testNestedCollectionWithEmptyData() - { - $items_inputfilter = new BaseInputFilter(); - $items_inputfilter->add(new Input(), 'id') - ->add(new Input(), 'type'); - $items = new CollectionInputFilter(); - $items->setInputFilter($items_inputfilter); - - $groups_inputfilter = new BaseInputFilter(); - $groups_inputfilter->add(new Input(), 'group_class') - ->add($items, 'items'); - $groups = new CollectionInputFilter(); - $groups->setInputFilter($groups_inputfilter); - - $inputFilter = new BaseInputFilter(); - $inputFilter->add($groups, 'groups'); - - $data = [ - 'groups' => [ - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 100, - 'type' => 'item-1', - ], - ], - ], - [ - 'group_class' => 'biz', - 'items' => [], - ], - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 200, - 'type' => 'item-2', - ], - [ - 'id' => 300, - 'type' => 'item-3', - ], - [ - 'id' => 400, - 'type' => 'item-4', - ], - ], - ], - ], - ]; - - $inputFilter->setData($data); - $inputFilter->isValid(); - $values = $inputFilter->getValues(); - $this->assertEquals($data, $values); - } - - /** - * @group 6472 - */ - public function testNestedCollectionWhereChildDataIsNotOverwritten() - { - $items_inputfilter = new BaseInputFilter(); - $items_inputfilter->add(new Input(), 'id') - ->add(new Input(), 'type'); - $items = new CollectionInputFilter(); - $items->setInputFilter($items_inputfilter); - - $groups_inputfilter = new BaseInputFilter(); - $groups_inputfilter->add(new Input(), 'group_class') - ->add($items, 'items'); - $groups = new CollectionInputFilter(); - $groups->setInputFilter($groups_inputfilter); - - $inputFilter = new BaseInputFilter(); - $inputFilter->add($groups, 'groups'); - - $data = [ - 'groups' => [ - [ - 'group_class' => 'bar', - 'items' => [ - [ - 'id' => 100, - 'type' => 'item-100', - ], - [ - 'id' => 101, - 'type' => 'item-101', - ], - [ - 'id' => 102, - 'type' => 'item-102', - ], - [ - 'id' => 103, - 'type' => 'item-103', - ], - ], - ], - [ - 'group_class' => 'foo', - 'items' => [ - [ - 'id' => 200, - 'type' => 'item-200', - ], - [ - 'id' => 201, - 'type' => 'item-201', - ], - ], - ], - ], - ]; - - $inputFilter->setData($data); - $inputFilter->isValid(); - $values = $inputFilter->getValues(); - $this->assertEquals($data, $values); + $this->assertEquals($colRaw, $this->filter->getRawValues(), 'getRawValues() value not match'); + $this->assertEquals($colFiltered, $this->filter->getValues(), 'getValues() value not match'); + $this->assertEquals([], $this->filter->getMessages(), 'getMessages() value not match'); } public function dataNestingCollection() @@ -737,24 +233,24 @@ public function dataNestingCollection() return [ 'count not specified' => [ 'count' => null, - 'isValid' => true + 'isValid' => true, ], 'count=0' => [ 'count' => 0, - 'isValid' => true + 'isValid' => true, ], 'count = 1' => [ 'count' => 1, - 'isValid' => true + 'isValid' => true, ], 'count = 2' => [ 'count' => 2, - 'isValid' => false + 'isValid' => false, ], 'count = 3' => [ 'count' => 3, - 'isValid' => false - ] + 'isValid' => false, + ], ]; } @@ -788,34 +284,116 @@ public function testNestingCollectionCountCached($count, $expectedIsValid) [ 'second_collection' => [ [ - 'input' => 'some value' + 'input' => 'some value', ], [ - 'input' => 'some value' - ] - ] + 'input' => 'some value', + ], + ], ], [ 'second_collection' => [ [ - 'input' => 'some value' + 'input' => 'some value', ], - ] - ] - ] + ], + ], + ], ]; $mainInputFilter->setData($data); $this->assertSame($expectedIsValid, $mainInputFilter->isValid()); } - public function testInvalidCollectionIsNotValid() + public function inputFilterProvider() { - $data = 1; + $baseInputFilter = new BaseInputFilter(); - $this->filter->setInputFilter($this->getBaseInputFilter()); - $this->filter->setData($data); + $inputFilterSpecificationAsArray = []; + $inputSpecificationAsTraversable = new ArrayIterator($inputFilterSpecificationAsArray); - $this->assertFalse($this->filter->isValid()); + $inputFilterSpecificationResult = new InputFilter(); + $inputFilterSpecificationResult->getFactory()->getInputFilterManager(); + + $dataSets = [ + // Description => [inputFilter, $expectedType] + 'BaseInputFilter' => [$baseInputFilter, BaseInputFilter::class], + 'array' => [$inputFilterSpecificationAsArray, InputFilter::class], + 'Traversable' => [$inputSpecificationAsTraversable, InputFilter::class], + ]; + + return $dataSets; + } + + public function countVsDataProvider() + { + $data0 = []; + $data1 = ['A' => 'a']; + $data2 = ['A' => 'a', 'B' => 'b']; + + // @codingStandardsIgnoreStart + return [ + // Description => [$count, $data, $expectedCount] + 'C: -1, D: null' => [ -1, null , 0], + 'C: 0, D: null' => [ 0, null , 0], + 'C: 1, D: null' => [ 1, null , 1], + 'C: null, D: 0' => [null, $data0, 0], + 'C: null, D: 1' => [null, $data1, 1], + 'C: null, D: 2' => [null, $data2, 2], + 'C: -1, D: 0' => [ -1, $data0, 0], + 'C: 0, D: 0' => [ 0, $data0, 0], + 'C: 1, D: 0' => [ 1, $data0, 1], + 'C: -1, D: 1' => [ -1, $data1, 0], + 'C: 0, D: 1' => [ 0, $data1, 0], + 'C: 1, D: 1' => [ 1, $data1, 1], + ]; + // @codingStandardsIgnoreEnd + } + + public function isRequiredProvider() + { + return [ + 'enabled' => [true], + 'disabled' => [false], + ]; + } + + /** + * @param null|bool $isValid + * @param mixed[] $getRawValues + * @param mixed[] $getValues + * @param string[] $getMessages + * + * @return MockObject|BaseInputFilter + */ + protected function createBaseInputFilterMock( + $isValid = null, + $getRawValues = [], + $getValues = [], + $getMessages = [] + ) { + /** @var BaseInputFilter|MockObject $inputFilter */ + $inputFilter = $this->getMock(BaseInputFilter::class); + $inputFilter->method('getRawValues') + ->willReturn($getRawValues) + ; + $inputFilter->method('getValues') + ->willReturn($getValues) + ; + if (($isValid === false) || ($isValid === true)) { + $inputFilter->expects($this->once()) + ->method('isValid') + ->willReturn($isValid) + ; + } else { + $inputFilter->expects($this->never()) + ->method('isValid') + ; + } + $inputFilter->method('getMessages') + ->willReturn($getMessages) + ; + + return $inputFilter; } } From f2b6fa23075b8964927eea75161106ce48ed3c0c Mon Sep 17 00:00:00 2001 From: Maks3w Date: Sat, 5 Sep 2015 00:23:21 +0200 Subject: [PATCH 11/12] Rename property input > inputfilter --- test/CollectionInputFilterTest.php | 68 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/test/CollectionInputFilterTest.php b/test/CollectionInputFilterTest.php index 795e6b02..f299d596 100644 --- a/test/CollectionInputFilterTest.php +++ b/test/CollectionInputFilterTest.php @@ -27,16 +27,16 @@ class CollectionInputFilterTest extends TestCase /** * @var CollectionInputFilter */ - protected $filter; + protected $inputFilter; public function setUp() { - $this->filter = new CollectionInputFilter(); + $this->inputFilter = new CollectionInputFilter(); } public function testSetDataWithInvalidDataTypeThrowsInvalidArgumentException() { - $inputFilter = $this->filter; + $inputFilter = $this->inputFilter; $this->setExpectedException( RuntimeException::class, @@ -51,14 +51,14 @@ public function testSetDataWithInvalidDataTypeThrowsInvalidArgumentException() */ public function testSetInputFilter($inputFilter, $expectedType) { - $this->filter->setInputFilter($inputFilter); + $this->inputFilter->setInputFilter($inputFilter); - $this->assertInstanceOf($expectedType, $this->filter->getInputFilter(), 'getInputFilter() type not match'); + $this->assertInstanceOf($expectedType, $this->inputFilter->getInputFilter(), 'getInputFilter() type not match'); } public function testGetDefaultInputFilter() { - $this->assertInstanceOf(BaseInputFilter::class, $this->filter->getInputFilter()); + $this->assertInstanceOf(BaseInputFilter::class, $this->inputFilter->getInputFilter()); } /** @@ -66,8 +66,8 @@ public function testGetDefaultInputFilter() */ public function testSetRequired($value) { - $this->filter->setIsRequired($value); - $this->assertEquals($value, $this->filter->getIsRequired()); + $this->inputFilter->setIsRequired($value); + $this->assertEquals($value, $this->inputFilter->getIsRequired()); } /** @@ -76,13 +76,13 @@ public function testSetRequired($value) public function testSetCount($count, $data, $expectedCount) { if ($count !== null) { - $this->filter->setCount($count); + $this->inputFilter->setCount($count); } if ($data !== null) { - $this->filter->setData($data); + $this->inputFilter->setData($data); } - $this->assertEquals($expectedCount, $this->filter->getCount(), 'getCount() value not match'); + $this->assertEquals($expectedCount, $this->inputFilter->getCount(), 'getCount() value not match'); } /** @@ -99,19 +99,19 @@ public function testGetCountReturnsRightCountOnConsecutiveCallsWithDifferentData ['foo' => 'bar'], ]; - $this->filter->setData($collectionData1); - $this->assertEquals(2, $this->filter->getCount()); - $this->filter->setData($collectionData2); - $this->assertEquals(1, $this->filter->getCount()); + $this->inputFilter->setData($collectionData1); + $this->assertEquals(2, $this->inputFilter->getCount()); + $this->inputFilter->setData($collectionData2); + $this->assertEquals(1, $this->inputFilter->getCount()); } public function testInvalidCollectionIsNotValid() { $data = 1; - $this->filter->setData($data); + $this->inputFilter->setData($data); - $this->assertFalse($this->filter->isValid()); + $this->assertFalse($this->inputFilter->isValid()); } /** @@ -127,21 +127,21 @@ public function testDataVsValid( $expectedValid, $expectedMessages ) { - $this->filter->setInputFilter($inputFilter); - $this->filter->setData($data); + $this->inputFilter->setInputFilter($inputFilter); + $this->inputFilter->setData($data); if ($count !== null) { - $this->filter->setCount($count); + $this->inputFilter->setCount($count); } - $this->filter->setIsRequired($required); + $this->inputFilter->setIsRequired($required); $this->assertEquals( $expectedValid, - $this->filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) + $this->inputFilter->isValid(), + 'isValid() value not match. Detail . ' . json_encode($this->inputFilter->getMessages()) ); - $this->assertEquals($expectedRaw, $this->filter->getRawValues(), 'getRawValues() value not match'); - $this->assertEquals($expecteValues, $this->filter->getValues(), 'getValues() value not match'); - $this->assertEquals($expectedMessages, $this->filter->getMessages(), 'getMessages() value not match'); + $this->assertEquals($expectedRaw, $this->inputFilter->getRawValues(), 'getRawValues() value not match'); + $this->assertEquals($expecteValues, $this->inputFilter->getValues(), 'getValues() value not match'); + $this->assertEquals($expectedMessages, $this->inputFilter->getMessages(), 'getMessages() value not match'); } public function dataVsValidProvider() @@ -215,17 +215,17 @@ public function testSetValidationGroupUsingFormStyle() ->with($validationGroup) ; - $this->filter->setInputFilter($baseInputFilter); - $this->filter->setData($colRaw); - $this->filter->setValidationGroup($colValidationGroup); + $this->inputFilter->setInputFilter($baseInputFilter); + $this->inputFilter->setData($colRaw); + $this->inputFilter->setValidationGroup($colValidationGroup); $this->assertTrue( - $this->filter->isValid(), - 'isValid() value not match. Detail . ' . json_encode($this->filter->getMessages()) + $this->inputFilter->isValid(), + 'isValid() value not match. Detail . ' . json_encode($this->inputFilter->getMessages()) ); - $this->assertEquals($colRaw, $this->filter->getRawValues(), 'getRawValues() value not match'); - $this->assertEquals($colFiltered, $this->filter->getValues(), 'getValues() value not match'); - $this->assertEquals([], $this->filter->getMessages(), 'getMessages() value not match'); + $this->assertEquals($colRaw, $this->inputFilter->getRawValues(), 'getRawValues() value not match'); + $this->assertEquals($colFiltered, $this->inputFilter->getValues(), 'getValues() value not match'); + $this->assertEquals([], $this->inputFilter->getMessages(), 'getMessages() value not match'); } public function dataNestingCollection() From 47bf446d2e175c9bb3c1e80cac10e9d6276c1b82 Mon Sep 17 00:00:00 2001 From: Maks3w Date: Sat, 5 Sep 2015 00:24:15 +0200 Subject: [PATCH 12/12] Fix test name --- test/CollectionInputFilterTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/CollectionInputFilterTest.php b/test/CollectionInputFilterTest.php index f299d596..aeefdb7b 100644 --- a/test/CollectionInputFilterTest.php +++ b/test/CollectionInputFilterTest.php @@ -34,7 +34,7 @@ public function setUp() $this->inputFilter = new CollectionInputFilter(); } - public function testSetDataWithInvalidDataTypeThrowsInvalidArgumentException() + public function testSetInputFilterWithInvalidTypeThrowsInvalidArgumentException() { $inputFilter = $this->inputFilter;