AvsEmsCodeMapperTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Test\Unit\Model;
  7. use Magento\Braintree\Model\AvsEmsCodeMapper;
  8. use Magento\Braintree\Model\Ui\ConfigProvider;
  9. use Magento\Sales\Api\Data\OrderPaymentInterface;
  10. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  11. class AvsEmsCodeMapperTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var AvsEmsCodeMapper
  15. */
  16. private $mapper;
  17. /**
  18. * @inheritdoc
  19. */
  20. protected function setUp()
  21. {
  22. $this->mapper = new AvsEmsCodeMapper();
  23. }
  24. /**
  25. * Checks different variations for AVS codes mapping.
  26. *
  27. * @covers \Magento\Braintree\Model\AvsEmsCodeMapper::getCode
  28. * @param string $avsZip
  29. * @param string $avsStreet
  30. * @param string $expected
  31. * @dataProvider getCodeDataProvider
  32. */
  33. public function testGetCode($avsZip, $avsStreet, $expected)
  34. {
  35. /** @var OrderPaymentInterface|MockObject $orderPayment */
  36. $orderPayment = $this->getMockBuilder(OrderPaymentInterface::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. $orderPayment->expects(self::once())
  40. ->method('getMethod')
  41. ->willReturn(ConfigProvider::CODE);
  42. $orderPayment->expects(self::once())
  43. ->method('getAdditionalInformation')
  44. ->willReturn([
  45. 'avsPostalCodeResponseCode' => $avsZip,
  46. 'avsStreetAddressResponseCode' => $avsStreet
  47. ]);
  48. self::assertEquals($expected, $this->mapper->getCode($orderPayment));
  49. }
  50. /**
  51. * Checks a test case, when payment order is not Braintree payment method.
  52. *
  53. * @covers \Magento\Braintree\Model\AvsEmsCodeMapper::getCode
  54. * @expectedException \InvalidArgumentException
  55. * @expectedExceptionMessage The "some_payment" does not supported by Braintree AVS mapper.
  56. */
  57. public function testGetCodeWithException()
  58. {
  59. /** @var OrderPaymentInterface|MockObject $orderPayment */
  60. $orderPayment = $this->getMockBuilder(OrderPaymentInterface::class)
  61. ->disableOriginalConstructor()
  62. ->getMock();
  63. $orderPayment->expects(self::exactly(2))
  64. ->method('getMethod')
  65. ->willReturn('some_payment');
  66. $this->mapper->getCode($orderPayment);
  67. }
  68. /**
  69. * Gets list of AVS codes.
  70. *
  71. * @return array
  72. */
  73. public function getCodeDataProvider()
  74. {
  75. return [
  76. ['avsZip' => null, 'avsStreet' => null, 'expected' => ''],
  77. ['avsZip' => null, 'avsStreet' => 'M', 'expected' => ''],
  78. ['avsZip' => 'M', 'avsStreet' => null, 'expected' => ''],
  79. ['avsZip' => 'M', 'avsStreet' => 'Unknown', 'expected' => ''],
  80. ['avsZip' => 'I', 'avsStreet' => 'A', 'expected' => ''],
  81. ['avsZip' => 'M', 'avsStreet' => 'M', 'expected' => 'Y'],
  82. ['avsZip' => 'N', 'avsStreet' => 'M', 'expected' => 'A'],
  83. ['avsZip' => 'M', 'avsStreet' => 'N', 'expected' => 'Z'],
  84. ['avsZip' => 'N', 'avsStreet' => 'N', 'expected' => 'N'],
  85. ['avsZip' => 'U', 'avsStreet' => 'U', 'expected' => 'U'],
  86. ['avsZip' => 'I', 'avsStreet' => 'I', 'expected' => 'U'],
  87. ['avsZip' => 'A', 'avsStreet' => 'A', 'expected' => 'E'],
  88. ];
  89. }
  90. }