PaymentTokenRepositoryTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. /***
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Vault\Model;
  7. use Magento\Framework\Api\FilterBuilder;
  8. use Magento\Framework\Api\SearchCriteriaBuilder;
  9. use Magento\Framework\Api\SortOrderBuilder;
  10. use Magento\TestFramework\Helper\Bootstrap;
  11. use Magento\TestFramework\ObjectManager;
  12. /**
  13. * PaymentTokenRepositoryTest contains tests for Vault token repository
  14. *
  15. * @magentoDbIsolation enabled
  16. */
  17. class PaymentTokenRepositoryTest extends \PHPUnit\Framework\TestCase
  18. {
  19. /**
  20. * @var PaymentTokenRepository
  21. */
  22. private $repository;
  23. /**
  24. * @var SortOrderBuilder
  25. */
  26. private $sortOrderBuilder;
  27. /**
  28. * @var FilterBuilder
  29. */
  30. private $filterBuilder;
  31. /**
  32. * @var SearchCriteriaBuilder
  33. */
  34. private $searchCriteriaBuilder;
  35. /**
  36. * @var ObjectManager
  37. */
  38. private $objectManager;
  39. public function setUp()
  40. {
  41. $this->objectManager = Bootstrap::getObjectManager();
  42. $this->repository = $this->objectManager->create(PaymentTokenRepository::class);
  43. $this->searchCriteriaBuilder = $this->objectManager->create(SearchCriteriaBuilder::class);
  44. $this->filterBuilder = $this->objectManager->get(FilterBuilder::class);
  45. $this->sortOrderBuilder = $this->objectManager->get(SortOrderBuilder::class);
  46. }
  47. /**
  48. * @magentoDataFixture Magento/Vault/_files/payment_tokens.php
  49. */
  50. public function testGetListWithMultipleFiltersAndSorting()
  51. {
  52. $filter1 = $this->filterBuilder
  53. ->setField('type')
  54. ->setValue('simple')
  55. ->create();
  56. $filter2 = $this->filterBuilder
  57. ->setField('is_active')
  58. ->setValue(1)
  59. ->create();
  60. $filter3 = $this->filterBuilder
  61. ->setField('expires_at')
  62. ->setConditionType('lt')
  63. ->setValue('2016-11-04 10:18:15')
  64. ->create();
  65. $sortOrder = $this->sortOrderBuilder
  66. ->setField('public_hash')
  67. ->setDirection('DESC')
  68. ->create();
  69. $this->searchCriteriaBuilder->addFilters([$filter1, $filter2]);
  70. $this->searchCriteriaBuilder->addFilters([$filter3]);
  71. $this->searchCriteriaBuilder->addSortOrder($sortOrder);
  72. $searchCriteria = $this->searchCriteriaBuilder->create();
  73. /** @var \Magento\Vault\Api\Data\PaymentTokenSearchResultsInterface $result */
  74. $result = $this->repository->getList($searchCriteria);
  75. $items = $result->getItems();
  76. $this->assertCount(2, $items);
  77. $this->assertEquals('second', array_shift($items)->getPaymentMethodCode());
  78. $this->assertEquals('first', array_shift($items)->getPaymentMethodCode());
  79. }
  80. /**
  81. * @covers \Magento\Vault\Model\PaymentTokenRepository::delete
  82. * @magentoDataFixture Magento/Vault/_files/token.php
  83. */
  84. public function testDelete()
  85. {
  86. /** @var PaymentTokenManagement $tokenManagement */
  87. $tokenManagement = $this->objectManager->get(PaymentTokenManagement::class);
  88. $token = $tokenManagement->getByPublicHash('public_hash', 0);
  89. /** @var PaymentTokenRepository $tokenRepository */
  90. $tokenRepository = $this->objectManager->get(PaymentTokenRepository::class);
  91. $tokenRepository->delete($token);
  92. $deletedToken = $tokenRepository->getById($token->getEntityId());
  93. static::assertEquals('public_hash', $deletedToken->getPublicHash());
  94. static::assertFalse($deletedToken->getIsActive());
  95. static::assertFalse($deletedToken->getIsVisible());
  96. }
  97. }