def test_issue_credit_for_enterprise_offer_no_partial_credit(self): """ Test that credit is not issued if not all of the lines in an order are refunded. """ order = self.create_order(user=UserFactory(), multiple_lines=True) offer = EnterpriseOfferFactory(partner=PartnerFactory(), max_discount=150) discount = OrderDiscountFactory(order=order, offer_id=offer.id, frequency=1, amount=150) offer.record_usage({ 'freq': discount.frequency, 'discount': discount.amount }) offer.refresh_from_db() assert offer.status == ConditionalOffer.CONSUMED assert offer.total_discount == 150 refund = RefundFactory(order=order, user=UserFactory()) refund.lines.first().delete() with mock.patch.object(models, 'revoke_fulfillment_for_refund') as mock_revoke: mock_revoke.return_value = True self.assertTrue(refund.approve()) offer.refresh_from_db() assert offer.status == ConditionalOffer.CONSUMED assert offer.total_discount == 150
def test_issue_credit_for_enterprise_offer(self): """ Test that enterprise offers are credited for the discounted amount. """ order = self.create_order(user=UserFactory()) offer = EnterpriseOfferFactory(partner=PartnerFactory(), max_discount=150) discount = OrderDiscountFactory(order=order, offer_id=offer.id, frequency=1, amount=150) offer.record_usage({ 'freq': discount.frequency, 'discount': discount.amount }) offer.refresh_from_db() assert offer.status == ConditionalOffer.CONSUMED assert offer.total_discount == 150 refund = RefundFactory(order=order, user=UserFactory()) with mock.patch.object(models, 'revoke_fulfillment_for_refund') as mock_revoke: mock_revoke.return_value = True self.assertTrue(refund.approve()) offer.refresh_from_db() assert offer.status == ConditionalOffer.OPEN assert offer.total_discount == 0