Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CleanExpiredQuotesTest.php
Go to the documentation of this file.
1 <?php
7 
8 use \Magento\Sales\Cron\CleanExpiredQuotes;
9 
13 class CleanExpiredQuotesTest extends \PHPUnit\Framework\TestCase
14 {
18  protected $storesConfigMock;
19 
23  protected $quoteFactoryMock;
24 
28  protected $observer;
29 
30  protected function setUp()
31  {
32  $this->storesConfigMock = $this->createMock(\Magento\Store\Model\StoresConfig::class);
33 
34  $this->quoteFactoryMock = $this->getMockBuilder(
35  \Magento\Quote\Model\ResourceModel\Quote\CollectionFactory::class
36  )
37  ->disableOriginalConstructor()
38  ->setMethods(['create'])
39  ->getMock();
40 
41  $this->observer = new CleanExpiredQuotes($this->storesConfigMock, $this->quoteFactoryMock);
42  }
43 
49  public function testExecute($lifetimes, $additionalFilterFields)
50  {
51  $this->storesConfigMock->expects($this->once())
52  ->method('getStoresConfigByPath')
53  ->with($this->equalTo('checkout/cart/delete_quote_after'))
54  ->will($this->returnValue($lifetimes));
55 
56  $quotesMock = $this->getMockBuilder(\Magento\Quote\Model\ResourceModel\Quote\Collection::class)
57  ->disableOriginalConstructor()
58  ->getMock();
59  $this->quoteFactoryMock->expects($this->exactly(count($lifetimes)))
60  ->method('create')
61  ->will($this->returnValue($quotesMock));
62  $quotesMock->expects($this->exactly((3 + count($additionalFilterFields)) * count($lifetimes)))
63  ->method('addFieldToFilter');
64  if (!empty($lifetimes)) {
65  $quotesMock->expects($this->exactly(count($lifetimes)))
66  ->method('walk')
67  ->with('delete');
68  }
69  $this->observer->setExpireQuotesAdditionalFilterFields($additionalFilterFields);
70  $this->observer->execute();
71  }
72 
77  {
78  return [
79  [[], []],
80  [[1 => 100, 2 => 200], []],
81  [[1 => 100, 2 => 200], ['field1' => 'condition1', 'field2' => 'condition2']],
82  ];
83  }
84 }