CaseRepositoryTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Signifyd\Model;
  7. use Magento\Framework\Api\FilterBuilder;
  8. use Magento\Framework\Api\SearchCriteriaBuilder;
  9. use Magento\Framework\App\ObjectManager;
  10. use Magento\Signifyd\Api\Data\CaseInterface;
  11. use Magento\TestFramework\Helper\Bootstrap;
  12. /**
  13. * Testing case repository
  14. */
  15. class CaseRepositoryTest extends \PHPUnit\Framework\TestCase
  16. {
  17. /**
  18. * @var ObjectManager
  19. */
  20. private $objectManager;
  21. /**
  22. * @var FilterBuilder
  23. */
  24. private $filterBuilder;
  25. /**
  26. * @var SearchCriteriaBuilder
  27. */
  28. private $searchCriteriaBuilder;
  29. /**
  30. * @var CaseRepository
  31. */
  32. private $repository;
  33. /**
  34. * @inheritdoc
  35. */
  36. protected function setUp()
  37. {
  38. $this->objectManager = Bootstrap::getObjectManager();
  39. $this->filterBuilder = $this->objectManager->get(FilterBuilder::class);
  40. $this->searchCriteriaBuilder = $this->objectManager->get(SearchCriteriaBuilder::class);
  41. $this->repository = $this->objectManager->get(CaseRepository::class);
  42. }
  43. /**
  44. * @covers \Magento\Signifyd\Model\CaseRepository::delete
  45. * @magentoDataFixture Magento/Signifyd/_files/case.php
  46. */
  47. public function testDelete()
  48. {
  49. $filters = [
  50. $this->filterBuilder->setField('case_id')
  51. ->setValue(123)
  52. ->create()
  53. ];
  54. $searchCriteria = $this->searchCriteriaBuilder->addFilters($filters)->create();
  55. $cases = $this->repository->getList($searchCriteria)
  56. ->getItems();
  57. $case = array_pop($cases);
  58. $this->repository->delete($case);
  59. self::assertEmpty($this->repository->getList($searchCriteria)->getItems());
  60. }
  61. /**
  62. * @covers \Magento\Signifyd\Model\CaseRepository::getById
  63. * @magentoDataFixture Magento/Signifyd/_files/case.php
  64. */
  65. public function testGetById()
  66. {
  67. $filters = [
  68. $this->filterBuilder->setField('case_id')
  69. ->setValue(123)
  70. ->create()
  71. ];
  72. $searchCriteria = $this->searchCriteriaBuilder->addFilters($filters)->create();
  73. $cases = $this->repository->getList($searchCriteria)
  74. ->getItems();
  75. $case = array_pop($cases);
  76. $found = $this->repository->getById($case->getEntityId());
  77. self::assertNotEmpty($found->getEntityId());
  78. self::assertEquals($case->getEntityId(), $found->getEntityId());
  79. self::assertEquals($case->getOrderId(), $found->getOrderId());
  80. }
  81. /**
  82. * @covers \Magento\Signifyd\Model\CaseRepository::getList
  83. * @magentoDataFixture Magento/Signifyd/_files/multiple_cases.php
  84. */
  85. public function testGetListDateInterval()
  86. {
  87. $startDateInterval = [
  88. $this->filterBuilder->setField('created_at')
  89. ->setConditionType('gteq')
  90. ->setValue('2016-12-01 00:00:01')
  91. ->create()
  92. ];
  93. $endDateInterval = [
  94. $this->filterBuilder->setField('created_at')
  95. ->setConditionType('lteq')
  96. ->setValue('2016-12-03 23:59:59')
  97. ->create()
  98. ];
  99. $this->searchCriteriaBuilder->addFilters($startDateInterval);
  100. $searchCriteria = $this->searchCriteriaBuilder->addFilters($endDateInterval)->create();
  101. $items = $this->repository->getList($searchCriteria)
  102. ->getItems();
  103. self::assertCount(3, $items);
  104. for ($i = 1; $i < 4; $i ++) {
  105. $current = array_shift($items);
  106. self::assertEquals($i, $current->getCaseId());
  107. }
  108. }
  109. /**
  110. * @covers \Magento\Signifyd\Model\CaseRepository::getList
  111. * @magentoDataFixture Magento/Signifyd/_files/multiple_cases.php
  112. */
  113. public function testGetListStatusProcessing()
  114. {
  115. $filters = [
  116. $this->filterBuilder->setField('status')
  117. ->setValue(CaseInterface::STATUS_PROCESSING)
  118. ->create()
  119. ];
  120. $searchCriteria = $this->searchCriteriaBuilder->addFilters($filters)->create();
  121. $items = $this->repository->getList($searchCriteria)
  122. ->getItems();
  123. self::assertCount(1, $items);
  124. $case = array_pop($items);
  125. self::assertEquals(123, $case->getCaseId());
  126. }
  127. }