@@ -137,9 +137,9 @@ protected function setUp(): void
137
137
}
138
138
139
139
/**
140
- * testExecute
140
+ * @covers \Magento\SalesRule\Controller\Adminhtml\Promo\Quote::execute
141
141
*/
142
- public function testExecute ()
142
+ public function testExecuteWithCouponTypeAuto ()
143
143
{
144
144
$ helperData = $ this ->getMockBuilder (Data::class)
145
145
->disableOriginalConstructor ()
@@ -207,4 +207,120 @@ public function testExecute()
207
207
->willReturn (__ ('%1 coupon(s) have been generated. ' , 2 ));
208
208
$ this ->model ->execute ();
209
209
}
210
+
211
+ /**
212
+ * @covers \Magento\SalesRule\Controller\Adminhtml\Promo\Quote::execute
213
+ */
214
+ public function testExecuteWithAutoGenerationEnabled ()
215
+ {
216
+ $ helperData = $ this ->getMockBuilder (Data::class)
217
+ ->disableOriginalConstructor ()
218
+ ->getMock ();
219
+ $ this ->objectManagerMock ->expects ($ this ->any ())
220
+ ->method ('get ' )
221
+ ->with (Data::class)
222
+ ->willReturn ($ helperData );
223
+ $ requestData = [
224
+ 'qty ' => 2 ,
225
+ 'length ' => 10 ,
226
+ 'rule_id ' => 1
227
+ ];
228
+ $ this ->requestMock ->expects ($ this ->once ())
229
+ ->method ('isAjax ' )
230
+ ->willReturn (true );
231
+ $ ruleMock = $ this ->getMockBuilder (Rule::class)
232
+ ->addMethods (['getUseAutoGeneration ' ])
233
+ ->onlyMethods (['getId ' ])
234
+ ->disableOriginalConstructor ()
235
+ ->getMock ();
236
+ $ this ->registryMock ->expects ($ this ->once ())
237
+ ->method ('registry ' )
238
+ ->willReturn ($ ruleMock );
239
+ $ ruleMock ->expects ($ this ->once ())
240
+ ->method ('getId ' )
241
+ ->willReturn (1 );
242
+ $ ruleMock ->expects ($ this ->once ())
243
+ ->method ('getUseAutoGeneration ' )
244
+ ->willReturn (1 );
245
+ $ this ->requestMock ->expects ($ this ->once ())
246
+ ->method ('getParams ' )
247
+ ->willReturn ($ requestData );
248
+ $ requestData ['quantity ' ] = isset ($ requestData ['qty ' ]) ? $ requestData ['qty ' ] : null ;
249
+ $ this ->couponGenerationSpec ->expects ($ this ->once ())
250
+ ->method ('create ' )
251
+ ->with (['data ' => $ requestData ])
252
+ ->willReturn (['some_data ' , 'some_data_2 ' ]);
253
+ $ this ->messageManager ->expects ($ this ->once ())
254
+ ->method ('addSuccessMessage ' );
255
+ $ this ->responseMock ->expects ($ this ->once ())
256
+ ->method ('representJson ' )
257
+ ->with ();
258
+ $ helperData ->expects ($ this ->once ())
259
+ ->method ('jsonEncode ' )
260
+ ->with ([
261
+ 'messages ' => __ ('%1 coupon(s) have been generated. ' , 2 )
262
+ ]);
263
+ $ layout = $ this ->getMockBuilder (Layout::class)
264
+ ->disableOriginalConstructor ()
265
+ ->getMock ();
266
+ $ this ->view ->expects ($ this ->any ())
267
+ ->method ('getLayout ' )
268
+ ->willReturn ($ layout );
269
+ $ messageBlock = $ this ->getMockBuilder (Messages::class)
270
+ ->disableOriginalConstructor ()
271
+ ->getMock ();
272
+ $ layout ->expects ($ this ->once ())
273
+ ->method ('initMessages ' );
274
+ $ layout ->expects ($ this ->once ())
275
+ ->method ('getMessagesBlock ' )
276
+ ->willReturn ($ messageBlock );
277
+ $ messageBlock ->expects ($ this ->once ())
278
+ ->method ('getGroupedHtml ' )
279
+ ->willReturn (__ ('%1 coupon(s) have been generated. ' , 2 ));
280
+ $ this ->model ->execute ();
281
+ }
282
+
283
+ /**
284
+ * @covers \Magento\SalesRule\Controller\Adminhtml\Promo\Quote::execute
285
+ */
286
+ public function testExecuteWithCouponTypeNotAutoAndAutoGenerationNotEnabled ()
287
+ {
288
+ $ helperData = $ this ->getMockBuilder (Data::class)
289
+ ->disableOriginalConstructor ()
290
+ ->getMock ();
291
+ $ this ->objectManagerMock ->expects ($ this ->any ())
292
+ ->method ('get ' )
293
+ ->with (Data::class)
294
+ ->willReturn ($ helperData );
295
+ $ this ->requestMock ->expects ($ this ->once ())
296
+ ->method ('isAjax ' )
297
+ ->willReturn (true );
298
+ $ ruleMock = $ this ->getMockBuilder (Rule::class)
299
+ ->addMethods (['getUseAutoGeneration ' , 'getCouponType ' ])
300
+ ->onlyMethods (['getId ' ])
301
+ ->disableOriginalConstructor ()
302
+ ->getMock ();
303
+ $ this ->registryMock ->expects ($ this ->once ())
304
+ ->method ('registry ' )
305
+ ->willReturn ($ ruleMock );
306
+ $ ruleMock ->expects ($ this ->once ())
307
+ ->method ('getId ' )
308
+ ->willReturn (1 );
309
+ $ ruleMock ->expects ($ this ->once ())
310
+ ->method ('getCouponType ' )
311
+ ->willReturn (\Magento \SalesRule \Model \Rule::COUPON_TYPE_NO_COUPON );
312
+ $ ruleMock ->expects ($ this ->once ())
313
+ ->method ('getUseAutoGeneration ' )
314
+ ->willReturn (0 );
315
+ $ this ->responseMock ->expects ($ this ->once ())
316
+ ->method ('representJson ' )
317
+ ->with ();
318
+ $ helperData ->expects ($ this ->once ())
319
+ ->method ('jsonEncode ' )
320
+ ->with ([
321
+ 'error ' =>
322
+ __ ('Rule is not saved with auto generate option enabled. Please save the rule and try again. ' )
323
+ ]);
324
+ $ this ->model ->execute ();
325
+ }
210
326
}
0 commit comments