|
|
@@ -347,3 +347,40 @@ class TestAnAbsoluteDiscountBenefit(TestCase):
|
|
347
|
347
|
)
|
|
348
|
348
|
with self.assertRaises(ValidationError):
|
|
349
|
349
|
benefit.clean()
|
|
|
350
|
+
|
|
|
351
|
+ def test_non_negative_basket_lines_values(self):
|
|
|
352
|
+ # absolute benefit is larger than the line price
|
|
|
353
|
+ rng = models.Range.objects.create(
|
|
|
354
|
+ name="", includes_all_products=True)
|
|
|
355
|
+ benefit1 = models.Benefit.objects.create(
|
|
|
356
|
+ type=models.Benefit.FIXED, range=rng, value=D('100')
|
|
|
357
|
+ )
|
|
|
358
|
+ benefit2 = models.Benefit.objects.create(
|
|
|
359
|
+ type=models.Benefit.FIXED, range=rng, value=D('100')
|
|
|
360
|
+ )
|
|
|
361
|
+ condition = models.ValueCondition.objects.create(
|
|
|
362
|
+ range=rng,
|
|
|
363
|
+ type=models.Condition.VALUE,
|
|
|
364
|
+ value=D('10'))
|
|
|
365
|
+ models.ConditionalOffer.objects.create(
|
|
|
366
|
+ name='offer1',
|
|
|
367
|
+ benefit=benefit1,
|
|
|
368
|
+ condition=condition,
|
|
|
369
|
+ exclusive=False
|
|
|
370
|
+ )
|
|
|
371
|
+ models.ConditionalOffer.objects.create(
|
|
|
372
|
+ name='offer2',
|
|
|
373
|
+ benefit=benefit2,
|
|
|
374
|
+ condition=condition,
|
|
|
375
|
+ exclusive=False
|
|
|
376
|
+ )
|
|
|
377
|
+
|
|
|
378
|
+ basket = factories.create_basket(empty=True)
|
|
|
379
|
+ add_products(basket, [(D('20'), 1)])
|
|
|
380
|
+
|
|
|
381
|
+ Applicator().apply(basket)
|
|
|
382
|
+ assert len(basket.offer_applications) == 2
|
|
|
383
|
+ line = basket.all_lines().first()
|
|
|
384
|
+ assert line.line_price_excl_tax_incl_discounts == D(0)
|
|
|
385
|
+ assert line.line_price_incl_tax_incl_discounts == D(0)
|
|
|
386
|
+ assert basket.total_incl_tax == 0
|