AjaxLoadRatesTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Test\Unit\Controller\Adminhtml\Rule;
  7. use Magento\Framework\Api\SearchCriteriaBuilder;
  8. use Magento\Framework\Api\SearchCriteriaInterface;
  9. use Magento\Framework\App\Action\Context;
  10. use Magento\Framework\App\Request\Http as Request;
  11. use Magento\Framework\App\Response\Http as Response;
  12. use Magento\Framework\Controller\Result\Json;
  13. use Magento\Framework\Controller\ResultFactory;
  14. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  15. use Magento\Tax\Model\Rate\Provider as RatesProvider;
  16. use Magento\Tax\Controller\Adminhtml\Rule\AjaxLoadRates;
  17. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  18. /**
  19. * Test for AjaxLoadTest
  20. */
  21. class AjaxLoadRatesTest extends \PHPUnit\Framework\TestCase
  22. {
  23. /**
  24. * @var Request | MockObject
  25. */
  26. private $request;
  27. /**
  28. * @var Response | MockObject
  29. */
  30. private $resultFactory;
  31. /**
  32. * @var RatesProvider | MockObject
  33. */
  34. private $ratesProvider;
  35. /**
  36. * @var Context | MockObject
  37. */
  38. private $context;
  39. /**
  40. * @var SearchCriteriaBuilder | MockObject
  41. */
  42. private $searchCriteriaBuilder;
  43. /**
  44. * @inheritdoc
  45. */
  46. protected function setUp()
  47. {
  48. $this->context = $this->getMockBuilder(Context::class)
  49. ->disableOriginalConstructor()
  50. ->getMock();
  51. $this->searchCriteriaBuilder = $this->getMockBuilder(SearchCriteriaBuilder::class)
  52. ->disableOriginalConstructor()
  53. ->getMock();
  54. $this->request = $this->getMockBuilder(Request::class)
  55. ->disableOriginalConstructor()
  56. ->getMock();
  57. $this->resultFactory = $this->getMockBuilder(ResultFactory::class)
  58. ->disableOriginalConstructor()
  59. ->getMock();
  60. $this->ratesProvider = $this->getMockBuilder(RatesProvider::class)
  61. ->disableOriginalConstructor()
  62. ->getMock();
  63. }
  64. /**
  65. * Executes the controller action and asserts an exception logic
  66. */
  67. public function testExecute()
  68. {
  69. $objectManager = new ObjectManager($this);
  70. $this->request->expects($this->any())
  71. ->method('getParam')
  72. ->withAnyParameters()
  73. ->willReturn('');
  74. $this->searchCriteriaBuilder->expects($this->once())
  75. ->method('setCurrentPage')
  76. ->willReturnSelf();
  77. $this->searchCriteriaBuilder->expects($this->once())
  78. ->method('setPageSize')
  79. ->willReturnSelf();
  80. $searchCriteria = $this->getMockBuilder(SearchCriteriaInterface::class)
  81. ->getMockForAbstractClass();
  82. $this->searchCriteriaBuilder->expects($this->once())
  83. ->method('create')
  84. ->willReturn($searchCriteria);
  85. $this->ratesProvider->expects($this->any())
  86. ->method('toOptionArray')
  87. ->with($searchCriteria)
  88. ->willThrowException(new \Exception());
  89. $jsonObject= $this->getMockBuilder(Json::class)
  90. ->disableOriginalConstructor()
  91. ->setMethods(['setData'])
  92. ->getMock();
  93. $jsonObject->expects($this->once())
  94. ->method('setData')
  95. ->with([
  96. 'success' => false,
  97. 'errorMessage' => __('An error occurred while loading tax rates.')
  98. ]);
  99. $this->resultFactory->expects($this->any())
  100. ->method('create')
  101. ->with(ResultFactory::TYPE_JSON)
  102. ->willReturn($jsonObject);
  103. $controller = $objectManager->getObject(
  104. AjaxLoadRates::class,
  105. [
  106. 'context' => $this->context,
  107. 'searchCriteriaBuilder' => $this->searchCriteriaBuilder,
  108. 'ratesProvider' => $this->ratesProvider,
  109. 'resultFactory' => $this->resultFactory,
  110. '_request' => $this->request
  111. ]
  112. );
  113. $this->assertSame($jsonObject, $controller->execute());
  114. }
  115. }