Esempio n. 1
0
    def test_success_on_imported_offer_on_accessibility_fields(self):
        provider = offerers_factories.ProviderFactory()
        offer = factories.OfferFactory(
            lastProvider=provider,
            name="Old name",
            audioDisabilityCompliant=True,
            visualDisabilityCompliant=False,
            motorDisabilityCompliant=False,
            mentalDisabilityCompliant=True,
        )

        api.update_offer(
            offer,
            name="Old name",
            audioDisabilityCompliant=False,
            visualDisabilityCompliant=True,
            motorDisabilityCompliant=True,
            mentalDisabilityCompliant=False,
        )

        offer = models.Offer.query.one()
        assert offer.name == "Old name"
        assert offer.audioDisabilityCompliant == False
        assert offer.visualDisabilityCompliant == True
        assert offer.motorDisabilityCompliant == True
        assert offer.mentalDisabilityCompliant == False
Esempio n. 2
0
    def test_success_on_allocine_offer(self):
        provider = offerers_factories.ProviderFactory(
            localClass="AllocineStocks")
        offer = factories.OfferFactory(lastProvider=provider, name="Old name")

        api.update_offer(offer, name="Old name", isDuo=True)

        offer = models.Offer.query.one()
        assert offer.name == "Old name"
        assert offer.isDuo
Esempio n. 3
0
    def test_cannot_update_with_name_too_long(self):
        offer = factories.OfferFactory(name="Old name")

        with pytest.raises(models.ApiErrors) as error:
            api.update_offer(offer, name="Luftballons" * 99)

        assert error.value.errors == {
            "name": ["Vous devez saisir moins de 140 caractères"]
        }
        assert models.Offer.query.one().name == "Old name"
Esempio n. 4
0
    def test_forbidden_on_allocine_offer_on_certain_fields(self):
        provider = offerers_factories.ProviderFactory(
            localClass="AllocineStocks")
        offer = factories.OfferFactory(lastProvider=provider, name="Old name")

        with pytest.raises(models.ApiErrors) as error:
            api.update_offer(offer, name="New name", isDuo=True)

        assert error.value.errors == {
            "name": ["Vous ne pouvez pas modifier ce champ"]
        }
        offer = models.Offer.query.one()
        assert offer.name == "Old name"
        assert not offer.isDuo
Esempio n. 5
0
    def test_success_on_imported_offer_on_external_ticket_office_url(self):
        provider = offerers_factories.ProviderFactory()
        offer = factories.OfferFactory(
            externalTicketOfficeUrl="http://example.org",
            lastProvider=provider,
            name="Old name",
        )

        api.update_offer(
            offer,
            externalTicketOfficeUrl="https://example.com",
        )

        offer = models.Offer.query.one()
        assert offer.name == "Old name"
        assert offer.externalTicketOfficeUrl == "https://example.com"
Esempio n. 6
0
def patch_offer(offer_id: str, body: offers_serialize.PatchOfferBodyModel) -> offers_serialize.OfferResponseIdModel:
    offer = load_or_404(Offer, human_id=offer_id)
    check_user_has_access_to_offerer(current_user, offer.venue.managingOffererId)

    offer = offers_api.update_offer(offer, **body.dict(exclude_unset=True))

    return offers_serialize.OfferResponseIdModel.from_orm(offer)
Esempio n. 7
0
    def test_do_not_update_product_if_owning_offerer_is_not_the_venue_managing_offerer(self):
        product = factories.ProductFactory(name="Old name")
        offer = factories.OfferFactory(product=product, name="Old name")

        offer = api.update_offer(offer, name="New name")

        assert offer.name == "New name"
        assert product.name == "Old name"
Esempio n. 8
0
    def test_basics(self, mocked_add_offer_id):
        offer = factories.OfferFactory(isDuo=False, bookingEmail="*****@*****.**")

        offer = api.update_offer(offer, isDuo=True, bookingEmail="*****@*****.**")

        assert offer.isDuo
        assert offer.bookingEmail == "*****@*****.**"
        mocked_add_offer_id.assert_called_once_with(client=app.redis_client, offer_id=offer.id)
Esempio n. 9
0
    def test_forbidden_on_imported_offer_if_not_allocine(self):
        provider = offerers_factories.ProviderFactory()
        offer = factories.OfferFactory(lastProvider=provider, name="Old name")

        with pytest.raises(models.ApiErrors) as error:
            offer = api.update_offer(offer, name="New name")

        assert error.value.errors == {"global": ["Les offres importées ne sont pas modifiables"]}
        assert models.Offer.query.one().name == "Old name"
Esempio n. 10
0
    def test_update_product_if_owning_offerer_is_the_venue_managing_offerer(self):
        offerer = factories.OffererFactory()
        product = factories.ProductFactory(owningOfferer=offerer)
        offer = factories.OfferFactory(product=product, venue__managingOfferer=offerer)

        offer = api.update_offer(offer, name="New name")

        assert offer.name == "New name"
        assert product.name == "New name"
Esempio n. 11
0
def patch_offer(offer_id: str,
                body: PatchOfferBodyModel) -> OfferResponseIdModel:
    offer = load_or_404(Offer, human_id=offer_id)
    ensure_current_user_has_rights(RightsType.editor,
                                   offer.venue.managingOffererId)

    offer = offers_api.update_offer(offer, **body.dict(exclude_unset=True))

    return OfferResponseIdModel.from_orm(offer)
Esempio n. 12
0
    def test_forbidden_on_imported_offer_on_other_fields(self):
        provider = offerers_factories.ProviderFactory()
        offer = factories.OfferFactory(lastProvider=provider,
                                       name="Old name",
                                       isDuo=False,
                                       audioDisabilityCompliant=True)

        with pytest.raises(models.ApiErrors) as error:
            api.update_offer(offer,
                             name="New name",
                             isDuo=True,
                             audioDisabilityCompliant=False)

        assert error.value.errors == {
            "name": ["Vous ne pouvez pas modifier ce champ"],
            "isDuo": ["Vous ne pouvez pas modifier ce champ"],
        }
        offer = models.Offer.query.one()
        assert offer.name == "Old name"
        assert offer.isDuo == False
        assert offer.audioDisabilityCompliant == True