CaseInfoTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Signifyd\Test\Unit\Block\Adminhtml;
  7. use Magento\Framework\App\RequestInterface;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  9. use Magento\Framework\View\Element\Template\Context;
  10. use Magento\Signifyd\Api\Data\CaseInterface;
  11. use Magento\Signifyd\Block\Adminhtml\CaseInfo;
  12. use Magento\Signifyd\Model\CaseManagement;
  13. use Magento\Signifyd\Model\Config;
  14. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  15. /**
  16. * Tests for Signifyd block information.
  17. *
  18. * Class CaseInfoTest
  19. */
  20. class CaseInfoTest extends \PHPUnit\Framework\TestCase
  21. {
  22. /**
  23. * @var CaseInterface|MockObject
  24. */
  25. private $caseEntity;
  26. /**
  27. * @var CaseInfo
  28. */
  29. private $caseInfo;
  30. /**
  31. * @var Context|MockObject
  32. */
  33. private $context;
  34. /**
  35. * @var Config|MockObject
  36. */
  37. private $config;
  38. /**
  39. * @var CaseManagement|MockObject
  40. */
  41. private $caseManagement;
  42. /**
  43. * @var RequestInterface|MockObject
  44. */
  45. private $request;
  46. /**
  47. * @inheritdoc
  48. */
  49. protected function setUp()
  50. {
  51. $objectManager = new ObjectManager($this);
  52. $this->context = $this->getMockBuilder(Context::class)
  53. ->disableOriginalConstructor()
  54. ->getMock();
  55. $this->request = $this->getMockBuilder(RequestInterface::class)
  56. ->getMockForAbstractClass();
  57. $this->context->expects(self::once())
  58. ->method('getRequest')
  59. ->willReturn($this->request);
  60. $this->config = $this->getMockBuilder(Config::class)
  61. ->disableOriginalConstructor()
  62. ->getMock();
  63. $this->caseManagement = $this->getMockBuilder(CaseManagement::class)
  64. ->disableOriginalConstructor()
  65. ->getMock();
  66. $this->caseEntity = $this->getMockBuilder(CaseInterface::class)
  67. ->disableOriginalConstructor()
  68. ->setMethods(['getScore'])
  69. ->getMockForAbstractClass();
  70. $this->caseInfo = $objectManager->getObject(CaseInfo::class, [
  71. 'context' => $this->context,
  72. 'config' => $this->config,
  73. 'caseManagement' => $this->caseManagement
  74. ]);
  75. }
  76. /**
  77. * Checks label according to Signifyd Guarantee Disposition.
  78. *
  79. * @param string $guaranteeDisposition
  80. * @param string $expectedLabel
  81. * @covers \Magento\Signifyd\Block\Adminhtml\CaseInfo::getCaseGuaranteeDisposition()
  82. * @dataProvider getGuaranteeLabelDataProvider
  83. */
  84. public function testGetGuaranteeDisposition($guaranteeDisposition, $expectedLabel)
  85. {
  86. $this->caseManagement->expects(self::once())
  87. ->method('getByOrderId')
  88. ->willReturn($this->caseEntity);
  89. $this->caseEntity->expects(self::atLeastOnce())
  90. ->method('getGuaranteeDisposition')
  91. ->willReturn($guaranteeDisposition);
  92. self::assertEquals(
  93. $expectedLabel,
  94. $this->caseInfo->getCaseGuaranteeDisposition()
  95. );
  96. }
  97. /**
  98. * Case Guarantee Disposition and corresponding label data provider.
  99. *
  100. * @return array
  101. */
  102. public function getGuaranteeLabelDataProvider()
  103. {
  104. return [
  105. [CaseInterface::GUARANTEE_APPROVED, __('Approved')],
  106. [CaseInterface::GUARANTEE_DECLINED, __('Declined')],
  107. [CaseInterface::GUARANTEE_PENDING, __('Pending')],
  108. [CaseInterface::GUARANTEE_CANCELED, __('Canceled')],
  109. [CaseInterface::GUARANTEE_IN_REVIEW, __('In Review')],
  110. [CaseInterface::GUARANTEE_UNREQUESTED, __('Unrequested')],
  111. ['Unregistered', '']
  112. ];
  113. }
  114. /**
  115. * Checks case property getter with empty case.
  116. *
  117. * @covers \Magento\Signifyd\Block\Adminhtml\CaseInfo::getCaseProperty
  118. */
  119. public function testCasePropertyWithEmptyCase()
  120. {
  121. $this->caseManagement->expects(self::once())
  122. ->method('getByOrderId')
  123. ->willReturn(null);
  124. self::assertEquals(
  125. '',
  126. $this->caseInfo->getCaseGuaranteeDisposition()
  127. );
  128. }
  129. }