17 use PHPUnit_Framework_MockObject_MockObject as MockObject;
18 use Psr\Log\LoggerInterface;
33 private $requestBuilder;
38 private $transferFactory;
48 private $responseHandler;
63 private $errorMessageMapper;
67 $this->requestBuilder = $this->createMock(BuilderInterface::class);
68 $this->transferFactory = $this->createMock(TransferFactoryInterface::class);
69 $this->client = $this->createMock(ClientInterface::class);
70 $this->responseHandler = $this->createMock(HandlerInterface::class);
71 $this->validator = $this->createMock(ValidatorInterface::class);
72 $this->logger = $this->createMock(LoggerInterface::class);
73 $this->errorMessageMapper = $this->createMock(ErrorMessageMapperInterface::class);
76 $this->requestBuilder,
77 $this->transferFactory,
80 $this->responseHandler,
82 $this->errorMessageMapper
88 $commandSubject = [
'authorize'];
89 $this->processRequest($commandSubject,
true);
91 $this->responseHandler->method(
'handle')
92 ->with($commandSubject, [
'response_field1' =>
'response_value1']);
94 $this->command->execute($commandSubject);
105 $commandSubject = [
'authorize'];
106 $validationFailures = [
111 $this->processRequest($commandSubject,
false, $validationFailures);
113 $this->logger->expects(self::exactly(count($validationFailures)))
116 [self::equalTo(
'Payment Error: ' . $validationFailures[0])],
117 [self::equalTo(
'Payment Error: ' . $validationFailures[1])]
120 $this->command->execute($commandSubject);
131 $commandSubject = [
'authorize'];
132 $validationFailures = [
136 $errorCodes = [
'401'];
138 $this->processRequest($commandSubject,
false, $validationFailures, $errorCodes);
140 $this->errorMessageMapper->method(
'getMessage')
143 [
'401',
'Unauthorized'],
144 [
'Failure #1',
'Failure Mapped'],
149 $this->logger->expects(self::exactly(count(array_merge($validationFailures, $errorCodes))))
152 [self::equalTo(
'Payment Error: Unauthorized')],
153 [self::equalTo(
'Payment Error: Failure Mapped')],
154 [self::equalTo(
'Payment Error: Failure #2')]
157 $this->command->execute($commandSubject);
168 private function processRequest(
169 array $commandSubject,
170 bool $validationResult,
171 array $validationFailures = [],
172 array $errorCodes = []
175 'request_field1' =>
'request_value1',
176 'request_field2' =>
'request_value2' 178 $response = [
'response_field1' =>
'response_value1'];
179 $transferO = $this->getMockBuilder(TransferInterface::class)
180 ->getMockForAbstractClass();
182 $this->requestBuilder->method(
'build')
183 ->with($commandSubject)
186 $this->transferFactory->method(
'create')
188 ->willReturn($transferO);
190 $this->client->method(
'placeRequest')
194 $result = $this->getMockBuilder(ResultInterface::class)
195 ->getMockForAbstractClass();
197 $this->validator->method(
'validate')
198 ->with(array_merge($commandSubject, [
'response' =>
$response]))
201 ->willReturn($validationResult);
202 $result->method(
'getFailsDescription')
203 ->willReturn($validationFailures);
204 $result->method(
'getErrorCodes')
205 ->willReturn($errorCodes);
testExecuteValidationFailWithMappedErrors()
testExecuteValidationFail()