Skip to content
This repository was archived by the owner on Jan 30, 2020. It is now read-only.

Commit bc0455f

Browse files
committed
Mock dependencies to Zend\Validator
1 parent 67328ed commit bc0455f

File tree

2 files changed

+58
-43
lines changed

2 files changed

+58
-43
lines changed

test/ArrayInputTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,16 @@ protected function createValidatorChainMock($isValid = null, $value = null, $con
9797
return parent::createValidatorChainMock($isValid, $value, $context, $messages);
9898
}
9999

100+
protected function createNonEmptyValidatorMock($isValid, $value, $context = null)
101+
{
102+
// ArrayInput validates per each array value
103+
if (is_array($value)) {
104+
$value = current($value);
105+
}
106+
107+
return parent::createNonEmptyValidatorMock($isValid, $value, $context);
108+
}
109+
100110
protected function getDummyValue($raw = true)
101111
{
102112
return [parent::getDummyValue($raw)];

test/InputTest.php

Lines changed: 48 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
use Zend\Filter\FilterChain;
1616
use Zend\InputFilter\Input;
1717
use Zend\InputFilter\InputInterface;
18-
use Zend\Validator;
19-
use Zend\Validator\NotEmpty;
18+
use Zend\Validator\NotEmpty as NotEmptyValidator;
2019
use Zend\Validator\ValidatorChain;
20+
use Zend\Validator\ValidatorInterface;
2121

2222
/**
2323
* @covers Zend\InputFilter\Input
@@ -34,18 +34,18 @@ public function setUp()
3434
$this->input = new Input('foo');
3535
}
3636

37-
public function assertRequiredValidationErrorMessage($input, $message = '')
37+
public function assertRequiredValidationErrorMessage(Input $input, $message = '')
3838
{
3939
$message = $message ?: 'Expected failure message for required input';
4040
$message .= ';';
4141

4242
$messages = $input->getMessages();
4343
$this->assertInternalType('array', $messages, $message . ' non-array messages array');
4444

45-
$notEmpty = new NotEmpty();
45+
$notEmpty = new NotEmptyValidator();
4646
$messageTemplates = $notEmpty->getOption('messageTemplates');
4747
$this->assertSame([
48-
NotEmpty::IS_EMPTY => $messageTemplates[NotEmpty::IS_EMPTY],
48+
NotEmptyValidator::IS_EMPTY => $messageTemplates[NotEmptyValidator::IS_EMPTY],
4949
], $messages, $message . ' missing NotEmpty::IS_EMPTY key and/or contains additional messages');
5050
}
5151

@@ -64,7 +64,7 @@ public function testInputHasEmptyFilterChainByDefault()
6464
public function testInputHasEmptyValidatorChainByDefault()
6565
{
6666
$validators = $this->input->getValidatorChain();
67-
$this->assertInstanceOf(Validator\ValidatorChain::class, $validators);
67+
$this->assertInstanceOf(ValidatorChain::class, $validators);
6868
$this->assertEquals(0, count($validators));
6969
}
7070

@@ -77,7 +77,7 @@ public function testCanInjectFilterChain()
7777

7878
public function testCanInjectValidatorChain()
7979
{
80-
$chain = new Validator\ValidatorChain();
80+
$chain = $this->createValidatorChainMock();
8181
$this->input->setValidatorChain($chain);
8282
$this->assertSame($chain, $this->input->getValidatorChain());
8383
}
@@ -326,18 +326,6 @@ public function testValidationOperatesOnFilteredValue()
326326
);
327327
}
328328

329-
public function testSpecifyingMessagesToInputReturnsThoseOnFailedValidation()
330-
{
331-
$this->input->setValue($this->getDummyValue());
332-
$validator = new Validator\Digits();
333-
$this->input->getValidatorChain()->attach($validator);
334-
$this->input->setErrorMessage('Please enter only digits');
335-
$this->assertFalse($this->input->isValid());
336-
$messages = $this->input->getMessages();
337-
$this->assertArrayNotHasKey(Validator\Digits::NOT_DIGITS, $messages);
338-
$this->assertContains('Please enter only digits', $messages);
339-
}
340-
341329
public function testBreakOnFailureFlagIsOffByDefault()
342330
{
343331
$this->assertFalse($this->input->breakOnFailure());
@@ -374,14 +362,10 @@ public function testNotEmptyValidatorAddedWhenIsValidIsCalled($value)
374362
*/
375363
public function testRequiredNotEmptyValidatorNotAddedWhenOneExists($value)
376364
{
377-
$this->assertTrue($this->input->isRequired());
365+
$this->input->setRequired(true);
378366
$this->input->setValue($value);
379367

380-
/** @var Validator\NotEmpty|MockObject $notEmptyMock */
381-
$notEmptyMock = $this->getMock(Validator\NotEmpty::class, ['isValid']);
382-
$notEmptyMock->expects($this->exactly(1))
383-
->method('isValid')
384-
->will($this->returnValue(false));
368+
$notEmptyMock = $this->createNonEmptyValidatorMock(false, $value);
385369

386370
$validatorChain = $this->input->getValidatorChain();
387371
$validatorChain->prependValidator($notEmptyMock);
@@ -395,20 +379,20 @@ public function testRequiredNotEmptyValidatorNotAddedWhenOneExists($value)
395379
/**
396380
* @dataProvider emptyValueProvider
397381
*/
398-
public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain($value)
382+
public function testDoNotInjectNotEmptyValidatorIfAnywhereInChain($valueRaw, $valueFiltered)
399383
{
400-
$this->assertTrue($this->input->isRequired());
401-
$this->input->setValue($value);
384+
$filterChain = $this->createFilterChainMock($valueRaw, $valueFiltered);
385+
$validatorChain = $this->input->getValidatorChain();
402386

403-
/** @var Validator\NotEmpty|MockObject $notEmptyMock */
404-
$notEmptyMock = $this->getMock(Validator\NotEmpty::class, ['isValid']);
405-
$notEmptyMock->expects($this->exactly(1))
406-
->method('isValid')
407-
->will($this->returnValue(false));
387+
$this->input->setRequired(true);
388+
$this->input->setFilterChain($filterChain);
389+
$this->input->setValue($valueRaw);
408390

409-
$validatorChain = $this->input->getValidatorChain();
410-
$validatorChain->attach(new Validator\Digits());
391+
$notEmptyMock = $this->createNonEmptyValidatorMock(false, $valueFiltered);
392+
393+
$validatorChain->attach($this->createValidatorMock(true));
411394
$validatorChain->attach($notEmptyMock);
395+
412396
$this->assertFalse($this->input->isValid());
413397

414398
$validators = $validatorChain->getValidators();
@@ -836,25 +820,26 @@ protected function createValidatorChainMock($isValid = null, $value = null, $con
836820
* @param mixed $context
837821
* @param string[] $messages
838822
*
839-
* @return Validator\ValidatorInterface|MockObject
823+
* @return ValidatorInterface|MockObject
840824
*/
841-
protected function createValidatorMock($isValid, $value, $context = null, $messages = [])
825+
protected function createValidatorMock($isValid, $value = 'not-set', $context = null, $messages = [])
842826
{
843-
/** @var Validator\ValidatorInterface|MockObject $validator */
844-
$validator = $this->getMock(Validator\ValidatorInterface::class);
827+
/** @var ValidatorInterface|MockObject $validator */
828+
$validator = $this->getMock(ValidatorInterface::class);
845829

846830
if (($isValid === false) || ($isValid === true)) {
847-
$validator->expects($this->once())
831+
$isValidMethod = $validator->expects($this->once())
848832
->method('isValid')
849-
->with($value, $context)
850833
->willReturn($isValid)
851834
;
852835
} else {
853-
$validator->expects($this->never())
836+
$isValidMethod = $validator->expects($this->never())
854837
->method('isValid')
855-
->with($value, $context)
856838
;
857839
}
840+
if ($value !== 'not-set') {
841+
$isValidMethod->with($value, $context);
842+
}
858843

859844
$validator->method('getMessages')
860845
->willReturn($messages)
@@ -863,6 +848,26 @@ protected function createValidatorMock($isValid, $value, $context = null, $messa
863848
return $validator;
864849
}
865850

851+
/**
852+
* @param bool $isValid
853+
* @param mixed $value
854+
* @param mixed $context
855+
*
856+
* @return NotEmptyValidator|MockObject
857+
*/
858+
protected function createNonEmptyValidatorMock($isValid, $value, $context = null)
859+
{
860+
/** @var NotEmptyValidator|MockObject $notEmptyMock */
861+
$notEmptyMock = $this->getMock(NotEmptyValidator::class, ['isValid']);
862+
$notEmptyMock->expects($this->once())
863+
->method('isValid')
864+
->with($value, $context)
865+
->willReturn($isValid)
866+
;
867+
868+
return $notEmptyMock;
869+
}
870+
866871
protected function getDummyValue($raw = true)
867872
{
868873
if ($raw) {

0 commit comments

Comments
 (0)