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
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
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"
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
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"
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)
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"
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)
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"
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"
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)
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