@@ -123,9 +123,9 @@ public function testCalculate(
123123 'getQuote ' ,
124124 'getAddress ' ,
125125 'getOptionByCode ' ,
126+ 'getQty '
126127 ]
127128 )->getMock ();
128-
129129 $ this ->validator ->expects (
130130 $ this ->atLeastOnce ()
131131 )->method (
@@ -170,32 +170,12 @@ public function testCalculate(
170170 )->with (
171171 $ ruleData ['discountAmount ' ],
172172 $ store
173- )->willReturn (
174- $ validItemData ['baseOriginalPrice ' ]
175- );
176-
177- $ rule ->expects (
178- $ this ->atLeastOnce ()
179- )->method (
180- 'getDiscountAmount '
181173 )->willReturn (
182174 $ ruleData ['discountAmount ' ]
183175 );
184176
185- $ item ->expects (
186- $ this ->atLeastOnce ()
187- )->method (
188- 'getDiscountAmount '
189- )->willReturn (
190- $ itemData ['discountAmount ' ]
191- );
192- $ item ->expects (
193- $ this ->atLeastOnce ()
194- )->method (
195- 'getBaseDiscountAmount '
196- )->willReturn (
197- $ itemData ['baseDiscountAmount ' ]
198- );
177+ $ this ->setUpMockData ($ ruleData , $ rule );
178+ $ this ->setUpMockData ($ itemData , $ item );
199179 $ item ->expects ($ this ->atLeastOnce ())->method ('getQuote ' )->willReturn ($ quote );
200180
201181 $ discountData ->expects ($ this ->once ())->method ('setAmount ' )->with ($ expectedDiscountData ['amount ' ]);
@@ -218,6 +198,22 @@ public function testCalculate(
218198 $ this ->assertEquals ($ discountData , $ this ->model ->calculate ($ rule , $ item , $ qty ));
219199 }
220200
201+ /**
202+ * Sets up mock object data
203+ *
204+ * @param array $data
205+ * @param MockObject $mockObject
206+ * @return void
207+ */
208+ private function setUpMockData (array $ data , MockObject $ mockObject ): void
209+ {
210+ foreach ($ data as $ method => $ returnValue ) {
211+ $ mockObject ->expects ($ this ->atLeastOnce ())
212+ ->method ('get ' . ucfirst ($ method ))
213+ ->willReturn ($ returnValue );
214+ }
215+ }
216+
221217 /**
222218 * @return array
223219 */
@@ -227,7 +223,7 @@ public function calculateDataProvider()
227223 [
228224 'qty ' => 2 ,
229225 'ruleData ' => ['discountAmount ' => 100 ],
230- 'itemData ' => ['discountAmount ' => 139 , 'baseDiscountAmount ' => 139 ],
226+ 'itemData ' => ['discountAmount ' => 139 , 'baseDiscountAmount ' => 139 , ' qty ' => 2 ],
231227 'validItemData ' => [
232228 'price ' => 139 ,
233229 'basePrice ' => 139 ,
@@ -240,6 +236,23 @@ public function calculateDataProvider()
240236 'originalAmount ' => 0 ,
241237 'baseOriginalAmount ' => 0 ,
242238 ],
239+ ],
240+ [
241+ 'qty ' => 1 ,
242+ 'ruleData ' => ['discountAmount ' => 1000 ],
243+ 'itemData ' => ['discountAmount ' => 9100 , 'baseDiscountAmount ' => 9100 , 'qty ' => 13 ],
244+ 'validItemData ' => [
245+ 'price ' => 9000 ,
246+ 'basePrice ' => 9000 ,
247+ 'originalPrice ' => 9000 ,
248+ 'baseOriginalPrice ' => 9000 ,
249+ ],
250+ 'expectedDiscountData ' => [
251+ 'amount ' => 1000 ,
252+ 'baseAmount ' => 1000 ,
253+ 'originalAmount ' => 0 ,
254+ 'baseOriginalAmount ' => 0 ,
255+ ],
243256 ]
244257 ];
245258 }
0 commit comments