Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MassStatusTest.php
Go to the documentation of this file.
1 <?php
8 
15 
22 {
26  private $priceProcessorMock;
27 
31  private $resultRedirectMock;
32 
36  private $filterMock;
37 
41  private $productBuilderMock;
42 
46  private $abstractDbMock;
47 
51  private $actionMock;
52 
53  protected function setUp()
54  {
55  $this->priceProcessorMock = $this->getMockBuilder(Processor::class)
56  ->disableOriginalConstructor()->getMock();
57  $this->productBuilderMock = $this->getMockBuilder(Builder::class)
58  ->setMethods(['build'])
59  ->disableOriginalConstructor()
60  ->getMock();
61 
62  $productMock = $this->getMockBuilder(\Magento\Catalog\Model\Product::class)
63  ->disableOriginalConstructor()
64  ->setMethods(['getTypeId', 'getStoreId', '__sleep', '__wakeup'])
65  ->getMock();
66  $productMock->expects($this->any())
67  ->method('getTypeId')
68  ->willReturn('simple');
69  $productMock->expects($this->any())
70  ->method('getStoreId')
71  ->willReturn('1');
72  $this->productBuilderMock->expects($this->any())
73  ->method('build')
74  ->willReturn($productMock);
75 
76  $this->resultRedirectMock = $this->getMockBuilder(\Magento\Backend\Model\View\Result\Redirect::class)
77  ->disableOriginalConstructor()
78  ->getMock();
79  $resultFactory = $this->getMockBuilder(\Magento\Framework\Controller\ResultFactory::class)
80  ->disableOriginalConstructor()
81  ->setMethods(['create'])
82  ->getMock();
83  $resultFactory->expects($this->atLeastOnce())
84  ->method('create')
85  ->with(\Magento\Framework\Controller\ResultFactory::TYPE_REDIRECT)
86  ->willReturn($this->resultRedirectMock);
87 
88  $this->abstractDbMock = $this->getMockBuilder(AbstractDb::class)
89  ->disableOriginalConstructor()
90  ->setMethods(['getAllIds', 'getResource'])
91  ->getMock();
92  $this->filterMock = $this->getMockBuilder(\Magento\Ui\Component\MassAction\Filter::class)
93  ->disableOriginalConstructor()
94  ->setMethods(['getCollection'])
95  ->getMock();
96  $this->actionMock = $this->getMockBuilder(Action::class)
97  ->disableOriginalConstructor()
98  ->getMock();
99 
100  $collectionFactoryMock =
101  $this->getMockBuilder(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory::class)
102  ->disableOriginalConstructor()
103  ->setMethods(['create'])
104  ->getMock();
105  $collectionFactoryMock->expects($this->any())
106  ->method('create')
107  ->willReturn($this->abstractDbMock);
108 
109  $additionalParams = [
110  'resultFactory' => $resultFactory
111  ];
113  $context = $this->initContext($additionalParams, [[Action::class, $this->actionMock]]);
114 
115  $this->action = new \Magento\Catalog\Controller\Adminhtml\Product\MassStatus(
116  $context,
117  $this->productBuilderMock,
118  $this->priceProcessorMock,
119  $this->filterMock,
120  $collectionFactoryMock
121  );
122  }
123 
124  public function testMassStatusAction()
125  {
126  $storeId = 2;
127  $status = \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED;
128  $filters = [
129  'store_id' => 2,
130  ];
131 
132  $this->filterMock->expects($this->once())
133  ->method('getCollection')
134  ->willReturn($this->abstractDbMock);
135  $this->abstractDbMock->expects($this->once())
136  ->method('getAllIds')
137  ->willReturn([3]);
138  $this->request->expects($this->exactly(3))
139  ->method('getParam')
140  ->willReturnMap([
141  ['store', null, $storeId],
142  ['status', null, $status],
143  ['filters', [], $filters]
144  ]);
145  $this->actionMock->expects($this->once())
146  ->method('updateAttributes')
147  ->with([3], ['status' => $status], 2);
148  $this->priceProcessorMock->expects($this->once())
149  ->method('reindexList');
150 
151  $this->action->execute();
152  }
153 }
initContext(array $additionalParams=[], array $objectManagerMap=[])
Definition: ProductTest.php:40
$status
Definition: order_status.php:8
$filters
Definition: uploader.phtml:11