Skip to content

Commit

Permalink
(PC-31894)[API] feat: do not save offer description when linked to a …
Browse files Browse the repository at this point in the history
…product
  • Loading branch information
R0ntheo committed Sep 18, 2024
1 parent 52c1ae9 commit ba7085f
Show file tree
Hide file tree
Showing 10 changed files with 17 additions and 5 deletions.
1 change: 0 additions & 1 deletion api/src/pcapi/core/offers/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ def build_new_offer_from_product(
) -> models.Offer:
return models.Offer(
bookingEmail=venue.bookingEmail,
description=product.description, # type: ignore[call-arg]
extraData=product.extraData,
idAtProvider=id_at_provider,
lastProviderId=provider_id,
Expand Down
5 changes: 4 additions & 1 deletion api/src/pcapi/core/offers/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,10 @@ def description(self) -> str | None:

@description.setter
def description(self, value: str | None) -> None:
self._description = value
if self.product:
self._description = None
else:
self._description = value

@property
def isEducational(self) -> bool:
Expand Down
1 change: 0 additions & 1 deletion api/src/pcapi/local_providers/allocine/allocine_stocks.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ def fill_object_attributes(self, pc_object: Model) -> None:
def update_from_movie_information(self, offer: offers_models.Offer) -> None:
offer.name = self.product.name
offer.extraData = offer.extraData or offers_models.OfferExtraData()
offer.description = self.product.description
offer.durationMinutes = self.product.durationMinutes
offer.product = self.product
if self.product.extraData:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ def update_from_movie_information(
offer.extraData = offer.extraData or offers_models.OfferExtraData()
if self.product:
offer.name = self.product.name
offer.description = self.product.description
offer.durationMinutes = self.product.durationMinutes
if self.product.extraData:
offer.extraData.update(self.product.extraData)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ def update_from_movie_information(self, offer: offers_models.Offer) -> None:
offer.extraData = offer.extraData or offers_models.OfferExtraData()
if self.product:
offer.name = self.product.name
offer.description = self.product.description
offer.durationMinutes = self.product.durationMinutes
if self.product.extraData:
offer.extraData.update(self.product.extraData)
Expand Down
7 changes: 7 additions & 0 deletions api/tests/core/providers/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import pcapi.core.providers.factories as providers_factories
from pcapi.core.users import factories as users_factories
from pcapi.local_providers.provider_api import synchronize_provider_api
from pcapi.models import db
from pcapi.routes.serialization.venue_provider_serialize import PostVenueProviderBody


Expand Down Expand Up @@ -212,6 +213,7 @@ def test_execution(self, mock_async_index_offer_ids):

# Test fill offers attributes
assert created_offer.bookingEmail == venue.bookingEmail
assert created_offer._description == None
assert created_offer.description == product.description
assert created_offer.extraData == product.extraData
assert created_offer.name == product.name
Expand Down Expand Up @@ -287,10 +289,15 @@ def test_build_new_offers_from_stock_details(self):
provider_id=provider.id,
)

# We need to commit to have the offer description property working
db.session.add_all([*new_offers, product])
db.session.commit()

# Then
assert len(new_offers) == 1
new_offer = new_offers[0]
assert new_offer.bookingEmail == "booking_email"
assert new_offer._description == None
assert new_offer.description == "product_desc"
assert new_offer.extraData == {"extra": "data"}
assert new_offer.idAtProvider == "ean_product_ref"
Expand Down
1 change: 1 addition & 0 deletions api/tests/local_providers/allocine_stocks_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ def test_should_create_one_offer_with_movie_info(self, mock_call_allocine_api, m
created_offer = offers_models.Offer.query.one()

assert created_offer.bookingEmail == "toto@example.com"
assert created_offer._description == None
assert (
created_offer.description
== "Alors que la Premi\u00e8re Guerre Mondiale a \u00e9clat\u00e9, et en r\u00e9ponse aux propos des intellectuels allemands de l'\u00e9poque, Sacha Guitry filme les grands artistes de l'\u00e9poque qui contribuent au rayonnement culturel de la France.\n"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ def should_fill_offer_and_stock_informations_for_each_movie_based_on_product(sel
assert created_offers[0].product == self._get_product_by_allocine_id(270935)
assert created_offers[0].venue == venue_provider.venue
assert created_offers[0].offererAddressId == venue_provider.venue.offererAddressId
assert created_offers[0]._description == None
assert created_offers[0].description == "Description du produit allociné 3"
assert created_offers[0].durationMinutes == 333
assert created_offers[0].isDuo
Expand All @@ -164,6 +165,7 @@ def should_fill_offer_and_stock_informations_for_each_movie_based_on_product(sel
assert created_offers[1].name == "Produit allociné 4"
assert created_offers[1].product == self._get_product_by_allocine_id(269975)
assert created_offers[1].venue == venue_provider.venue
assert created_offers[1]._description == None
assert created_offers[1].description == "Description du produit allociné 4"
assert created_offers[1].durationMinutes == 444
assert created_offers[1].isDuo
Expand Down Expand Up @@ -231,6 +233,7 @@ def should_fill_offer_and_stocks_and_price_categories_based_on_product(self, req
assert created_offer.name == "Produit allociné 1"
assert created_offer.product == self._get_product_by_allocine_id(263242)
assert created_offer.venue == venue_provider.venue
assert created_offer._description == None
assert created_offer.description == "Description du produit allociné 1"
assert created_offer.durationMinutes == 111
assert created_offer.isDuo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ def should_fill_offer_and_stock_informations_for_each_movie(self, mock_get_venue
assert created_offers[0].product
assert created_offers[0].venue == venue_provider.venue
assert created_offers[0].offererAddressId == venue_provider.venue.offererAddressId
assert created_offers[0]._description == None
assert created_offers[0].description == "Description du produit allociné 1"
assert created_offers[0].durationMinutes == 111
assert created_offers[0].isDuo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ def test_valid_ean_with_stock(self, client):

created_offer = offers_models.Offer.query.one()
assert created_offer.bookingEmail == venue.bookingEmail
assert created_offer._description == None
assert created_offer.description == product.description
assert created_offer.extraData == product.extraData
assert created_offer.lastProvider.name == "Technical provider"
Expand Down

0 comments on commit ba7085f

Please sign in to comment.