def test_related_offer_different_name_not_deleted(self):
        # Voucher with offer named differently
        voucher = VoucherFactory(name="Voucher", code="VOUCHER")
        voucher.offers.add(
            create_offer(name="Different name test",
                         offer_type='Voucher',
                         range=self.offer_range,
                         condition=self.offer_condition))

        offer_ids = list(voucher.offers.all().values_list('pk', flat=True))

        voucher.delete()
        count_offers = ConditionalOffer.objects.filter(
            id__in=offer_ids).count()
        assert len(offer_ids) == count_offers
    def test_related_offer_deleted(self):
        # Voucher with offer name corresponding to it as used in the dashboard
        voucher_name = "Voucher"
        voucher = VoucherFactory(name=voucher_name, code="VOUCHER")
        voucher.offers.add(
            create_offer(name=_("Offer for voucher '%s'") % voucher_name,
                         offer_type='Voucher',
                         range=self.offer_range,
                         condition=self.offer_condition))

        voucher.delete()
        self.assertFalse(
            ConditionalOffer.objects.filter(
                name=_("Offer for voucher '%s'") % voucher_name,
                offer_type=ConditionalOffer.VOUCHER).exists())
    def test_related_offer_different_type_not_deleted(self):
        # Voucher with offer not of type "Voucher"
        voucher_name = "Voucher"
        voucher = VoucherFactory(name=voucher_name, code="VOUCHER")
        voucher.offers.add(
            create_offer(name=_("Offer for voucher '%s'") % voucher_name,
                         offer_type='Site',
                         range=self.offer_range,
                         condition=self.offer_condition))

        offer_ids = list(voucher.offers.all().values_list('pk', flat=True))

        voucher.delete()
        count_offers = ConditionalOffer.objects.filter(
            id__in=offer_ids).count()
        assert len(offer_ids) == count_offers
    def test_multiple_related_offers_not_deleted(self):
        # Voucher with already used offer
        voucher_name = "Voucher 1"
        offer = create_offer(name=_("Offer for voucher '%s'") % voucher_name,
                             offer_type='Voucher',
                             range=self.offer_range,
                             condition=self.offer_condition)

        voucher1 = VoucherFactory(name=voucher_name, code="VOUCHER1")
        voucher1.offers.add(offer)

        voucher2 = VoucherFactory(name="Voucher 2", code="VOUCHER2")
        voucher2.offers.add(offer)

        offer_ids = list(voucher1.offers.all().values_list('pk', flat=True))

        voucher1.delete()
        count_offers = ConditionalOffer.objects.filter(
            id__in=offer_ids).count()
        assert len(offer_ids) == count_offers