Ejemplo n.º 1
0
 def test_raise_if_deposit_expired(self):
     yesterday = datetime.now() - timedelta(days=1)
     beneficiary = self._get_beneficiary(deposit__expirationDate=yesterday)
     offer = offers_factories.OfferFactory(
         product__subcategoryId=subcategories.ACHAT_INSTRUMENT.id)
     with pytest.raises(exceptions.UserHasInsufficientFunds):
         validation.check_expenses_limits(beneficiary, 10, offer)
Ejemplo n.º 2
0
    def test_physical_limit_on_uncapped_type(self):
        beneficiary = self._get_beneficiary()
        offer = offers_factories.OfferFactory(product__type=str(ThingType.CINEMA_ABO))
        factories.BookingFactory(user=beneficiary, stock__price=290, stock__offer=offer)

        # should not raise because CINEMA_ABO is not capped
        validation.check_expenses_limits(beneficiary, 11, offer)
Ejemplo n.º 3
0
    def test_digital_limit_on_uncapped_type(self):
        beneficiary = self._get_beneficiary()
        product = offers_factories.DigitalProductFactory(type=str(ThingType.OEUVRE_ART))
        offer = offers_factories.OfferFactory(product=product)
        factories.BookingFactory(user=beneficiary, stock__price=190, stock__offer=offer)

        # should not raise because OEUVRE_ART is not capped
        validation.check_expenses_limits(beneficiary, 11, offer)
Ejemplo n.º 4
0
    def test_physical_limit(self):
        beneficiary = self._get_beneficiary()
        offer = offers_factories.OfferFactory(
            product__subcategoryId=subcategories.ACHAT_INSTRUMENT.id)
        factories.IndividualBookingFactory(individualBooking__user=beneficiary,
                                           stock__price=290,
                                           stock__offer=offer)

        validation.check_expenses_limits(beneficiary, 10,
                                         offer)  # should not raise
Ejemplo n.º 5
0
    def test_physical_limit_on_uncapped_type(self):
        beneficiary = self._get_beneficiary()
        offer = offers_factories.OfferFactory(
            product__subcategoryId=subcategories.SEANCE_CINE.id)
        factories.IndividualBookingFactory(individualBooking__user=beneficiary,
                                           stock__price=190,
                                           stock__offer=offer)

        # should not raise because SEANCE_CINE is not capped
        validation.check_expenses_limits(beneficiary, 11, offer)
Ejemplo n.º 6
0
    def test_digital_limit_on_uncapped_type(self):
        beneficiary = self._get_beneficiary()
        product = offers_factories.DigitalProductFactory(
            subcategoryId=subcategories.OEUVRE_ART.id)
        offer = offers_factories.OfferFactory(product=product)
        factories.IndividualBookingFactory(individualBooking__user=beneficiary,
                                           stock__price=190,
                                           stock__offer=offer)

        # should not raise because OEUVRE_ART is not capped
        validation.check_expenses_limits(beneficiary, 11, offer)
Ejemplo n.º 7
0
    def test_global_limit(self):
        beneficiary = self._get_beneficiary()
        factories.BookingFactory(user=beneficiary, stock__price=290)
        offer = offers_factories.OfferFactory(type=str(ThingType.CINEMA_ABO))

        validation.check_expenses_limits(beneficiary, 10, offer)  # should not raise

        with pytest.raises(exceptions.UserHasInsufficientFunds) as error:
            validation.check_expenses_limits(beneficiary, 11, offer)
        assert error.value.errors["insufficientFunds"] == [
            "Le solde de votre pass est insuffisant pour réserver cette offre."
        ]
Ejemplo n.º 8
0
    def test_physical_limit(self):
        beneficiary = self._get_beneficiary()
        offer = offers_factories.OfferFactory(product__type=str(ThingType.INSTRUMENT))
        factories.BookingFactory(user=beneficiary, stock__price=290, stock__offer=offer)

        validation.check_expenses_limits(beneficiary, 10, offer)  # should not raise

        with pytest.raises(exceptions.PhysicalExpenseLimitHasBeenReached) as error:
            validation.check_expenses_limits(beneficiary, 11, offer)
        assert error.value.errors["global"] == [
            "Le plafond de 300 € pour les biens culturels ne vous permet pas de réserver cette offre."
        ]
Ejemplo n.º 9
0
    def test_global_limit(self):
        beneficiary = self._get_beneficiary()
        factories.IndividualBookingFactory(individualBooking__user=beneficiary,
                                           stock__price=290)
        offer = offers_factories.OfferFactory(
            subcategoryId=subcategories.CARTE_CINE_ILLIMITE.id)

        validation.check_expenses_limits(beneficiary, 10,
                                         offer)  # should not raise

        with pytest.raises(exceptions.UserHasInsufficientFunds) as error:
            validation.check_expenses_limits(beneficiary, 11, offer)
        assert error.value.errors["insufficientFunds"] == [
            "Le solde de votre pass est insuffisant pour réserver cette offre."
        ]
Ejemplo n.º 10
0
    def test_digital_limit(self):
        beneficiary = self._get_beneficiary()
        product = offers_factories.DigitalProductFactory(type=str(ThingType.AUDIOVISUEL))
        offer = offers_factories.OfferFactory(product=product)
        factories.BookingFactory(
            user=beneficiary,
            stock__price=90,
            stock__offer=offer,
        )

        validation.check_expenses_limits(beneficiary, 10, offer)  # should not raise

        with pytest.raises(exceptions.DigitalExpenseLimitHasBeenReached) as error:
            validation.check_expenses_limits(beneficiary, 11, offer)
        assert error.value.errors["global"] == [
            "Le plafond de 100 € pour les offres numériques ne vous permet pas de réserver cette offre."
        ]
Ejemplo n.º 11
0
    def test_physical_limit(self):
        beneficiary = self._get_beneficiary()
        offer = offers_factories.OfferFactory(
            product__subcategoryId=subcategories.ACHAT_INSTRUMENT.id)
        factories.IndividualBookingFactory(individualBooking__user=beneficiary,
                                           stock__price=190,
                                           stock__offer=offer)

        validation.check_expenses_limits(beneficiary, 10,
                                         offer)  # should not raise

        with pytest.raises(
                exceptions.PhysicalExpenseLimitHasBeenReached) as error:
            validation.check_expenses_limits(beneficiary, 11, offer)
        assert error.value.errors["global"] == [
            "Le plafond de 200 € pour les biens culturels ne vous permet pas de réserver cette offre."
        ]
Ejemplo n.º 12
0
    def test_digital_limit(self):
        beneficiary = self._get_beneficiary()
        product = offers_factories.DigitalProductFactory(
            subcategoryId=subcategories.VOD.id)
        offer = offers_factories.OfferFactory(product=product)
        factories.IndividualBookingFactory(
            individualBooking__user=beneficiary,
            stock__price=190,
            stock__offer=offer,
        )

        validation.check_expenses_limits(beneficiary, 10,
                                         offer)  # should not raise

        with pytest.raises(
                exceptions.DigitalExpenseLimitHasBeenReached) as error:
            validation.check_expenses_limits(beneficiary, 11, offer)
        assert error.value.errors["global"] == [
            "Le plafond de 200 € pour les offres numériques ne vous permet pas de réserver cette offre."
        ]
Ejemplo n.º 13
0
    def test_physical_limit(self):
        beneficiary = self._get_beneficiary()
        offer = offers_factories.OfferFactory(product__type=str(ThingType.INSTRUMENT))
        factories.BookingFactory(user=beneficiary, stock__price=290, stock__offer=offer)

        validation.check_expenses_limits(beneficiary, 10, offer)  # should not raise