CleanExpiredQuotesTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Test\Unit\Cron;
  7. use \Magento\Sales\Cron\CleanExpiredQuotes;
  8. /**
  9. * Tests Magento\Sales\Cron\CleanExpiredQuotes
  10. */
  11. class CleanExpiredQuotesTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * @var \Magento\Store\Model\StoresConfig|\PHPUnit_Framework_MockObject_MockObject
  15. */
  16. protected $storesConfigMock;
  17. /**
  18. * @var \Magento\Quote\Model\ResourceModel\Quote\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject
  19. */
  20. protected $quoteFactoryMock;
  21. /**
  22. * @var \Magento\Sales\Cron\CleanExpiredQuotes
  23. */
  24. protected $observer;
  25. protected function setUp()
  26. {
  27. $this->storesConfigMock = $this->createMock(\Magento\Store\Model\StoresConfig::class);
  28. $this->quoteFactoryMock = $this->getMockBuilder(
  29. \Magento\Quote\Model\ResourceModel\Quote\CollectionFactory::class
  30. )
  31. ->disableOriginalConstructor()
  32. ->setMethods(['create'])
  33. ->getMock();
  34. $this->observer = new CleanExpiredQuotes($this->storesConfigMock, $this->quoteFactoryMock);
  35. }
  36. /**
  37. * @param array $lifetimes
  38. * @param array $additionalFilterFields
  39. * @dataProvider cleanExpiredQuotesDataProvider
  40. */
  41. public function testExecute($lifetimes, $additionalFilterFields)
  42. {
  43. $this->storesConfigMock->expects($this->once())
  44. ->method('getStoresConfigByPath')
  45. ->with($this->equalTo('checkout/cart/delete_quote_after'))
  46. ->will($this->returnValue($lifetimes));
  47. $quotesMock = $this->getMockBuilder(\Magento\Quote\Model\ResourceModel\Quote\Collection::class)
  48. ->disableOriginalConstructor()
  49. ->getMock();
  50. $this->quoteFactoryMock->expects($this->exactly(count($lifetimes)))
  51. ->method('create')
  52. ->will($this->returnValue($quotesMock));
  53. $quotesMock->expects($this->exactly((3 + count($additionalFilterFields)) * count($lifetimes)))
  54. ->method('addFieldToFilter');
  55. if (!empty($lifetimes)) {
  56. $quotesMock->expects($this->exactly(count($lifetimes)))
  57. ->method('walk')
  58. ->with('delete');
  59. }
  60. $this->observer->setExpireQuotesAdditionalFilterFields($additionalFilterFields);
  61. $this->observer->execute();
  62. }
  63. /**
  64. * @return array
  65. */
  66. public function cleanExpiredQuotesDataProvider()
  67. {
  68. return [
  69. [[], []],
  70. [[1 => 100, 2 => 200], []],
  71. [[1 => 100, 2 => 200], ['field1' => 'condition1', 'field2' => 'condition2']],
  72. ];
  73. }
  74. }