Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ValidatorCompositeTest.php
Go to the documentation of this file.
1 <?php
7 
10 
11 class ValidatorCompositeTest extends \PHPUnit\Framework\TestCase
12 {
13  public function testValidate()
14  {
15  $validationSubject = [];
16  $validator1 = $this->getMockBuilder(\Magento\Payment\Gateway\Validator\ValidatorInterface::class)
17  ->getMockForAbstractClass();
18  $validator2 = $this->getMockBuilder(\Magento\Payment\Gateway\Validator\ValidatorInterface::class)
19  ->getMockForAbstractClass();
20  $tMapFactory = $this->getMockBuilder(\Magento\Framework\ObjectManager\TMapFactory::class)
21  ->disableOriginalConstructor()
22  ->setMethods(['create'])
23  ->getMock();
24  $tMap = $this->getMockBuilder(\Magento\Framework\ObjectManager\TMap::class)
25  ->disableOriginalConstructor()
26  ->getMock();
27 
28  $tMapFactory->expects(static::once())
29  ->method('create')
30  ->with(
31  [
32  'array' => [
33  'validator1' => \Magento\Payment\Gateway\Validator\ValidatorInterface::class,
34  'validator2' => \Magento\Payment\Gateway\Validator\ValidatorInterface::class
35  ],
36  'type' => ValidatorInterface::class
37  ]
38  )
39  ->willReturn($tMap);
40  $tMap->expects(static::once())
41  ->method('getIterator')
42  ->willReturn(new \ArrayIterator([$validator1, $validator2]));
43 
44  $resultSuccess = $this->getMockBuilder(\Magento\Payment\Gateway\Validator\ResultInterface::class)
45  ->getMockForAbstractClass();
46  $resultSuccess->expects(static::once())
47  ->method('isValid')
48  ->willReturn(true);
49  $resultFail = $this->getMockBuilder(\Magento\Payment\Gateway\Validator\ResultInterface::class)
50  ->getMockForAbstractClass();
51  $resultFail->expects(static::once())
52  ->method('isValid')
53  ->willReturn(false);
54  $resultFail->expects(static::once())
55  ->method('getFailsDescription')
56  ->willReturn(['Fail']);
57 
58  $validator1->expects(static::once())
59  ->method('validate')
60  ->with($validationSubject)
61  ->willReturn($resultSuccess);
62  $validator2->expects(static::once())
63  ->method('validate')
64  ->with($validationSubject)
65  ->willReturn($resultFail);
66 
67  $compositeResult = $this->getMockBuilder(\Magento\Payment\Gateway\Validator\ResultInterface::class)
68  ->getMockForAbstractClass();
69  $resultFactory = $this->getMockBuilder(\Magento\Payment\Gateway\Validator\ResultInterfaceFactory::class)
70  ->disableOriginalConstructor()
71  ->setMethods(['create'])
72  ->getMock();
73  $resultFactory->expects(static::once())
74  ->method('create')
75  ->with(
76  [
77  'isValid' => false,
78  'failsDescription' => ['Fail'],
79  'errorCodes' => []
80  ]
81  )
82  ->willReturn($compositeResult);
83 
84  $validatorComposite = new ValidatorComposite(
85  $resultFactory,
86  $tMapFactory,
87  [
88  'validator1' => \Magento\Payment\Gateway\Validator\ValidatorInterface::class,
89  'validator2' => \Magento\Payment\Gateway\Validator\ValidatorInterface::class
90  ]
91  );
92  static::assertSame($compositeResult, $validatorComposite->validate($validationSubject));
93  }
94 }