def test_for_valid_relationship_dicts_with_nested_modifications(self, app): # Given offer_dict = {'name': 'foo', 'type': 'bar'} offer = Offer(**offer_dict) ApiHandler.save(offer) stock_dict1 = {'offerId': humanize(offer.id), 'price': 1} stock1 = Stock(**stock_dict1) ApiHandler.save(stock1) stock_dict1['id'] = humanize(stock1.id) stock_dict2 = {'offerId': humanize(offer.id), 'price': 2} stock2 = Stock(**stock_dict2) ApiHandler.save(stock2) stock_dict2['id'] = humanize(stock2.id) stock_dict2['price'] = 3 offer_dict['stocks'] = [stock_dict1, stock_dict2] offer.modify(offer_dict) # When ApiHandler.save(offer) # Then assert offer.name == offer_dict['name'] offer_stock1 = [s for s in offer.stocks if s.id == stock1.id][0] offer_stock2 = [s for s in offer.stocks if s.id == stock2.id][0] assert offer_stock1.id == stock1.id assert offer_stock1.price == stock_dict1['price'] assert offer_stock2.id == stock2.id assert offer_stock2.price == stock_dict2['price']
def test_create_offer_saves_an_insert_activity(self, app): # Given offer_dict = {'name': 'bar', 'type': 'foo'} offer = Offer(**offer_dict) # When ApiHandler.save(offer) # Then all_activities = Activity.query.all() offer_activities = offer.__activities__ insert_offer_activity = offer_activities[0] insert_offer_activity_from_query = Activity.query \ .filter_by(entityIdentifier=offer.activityIdentifier) \ .one() assert len(all_activities) == 1 assert len(offer_activities) == 1 assert insert_offer_activity_from_query == insert_offer_activity assert offer.activityIdentifier == insert_offer_activity.entityIdentifier assert insert_offer_activity.entityInsertedAt == offer.dateCreated assert insert_offer_activity.oldDatum == None assert insert_offer_activity.transaction == None assert insert_offer_activity.verb == 'insert' assert offer_dict.items() <= insert_offer_activity.patch.items() assert offer_dict.items() <= insert_offer_activity.datum.items() assert insert_offer_activity.datum['id'] == humanize(offer.id) assert insert_offer_activity.patch['id'] == humanize(offer.id)
def test_for_valid_id_humanized_synonym(self, app): # Given user = User(email='*****@*****.**', publicName='bar') # When ApiHandler.save(user) # Then user_dict = as_dict(user) humanized_id = humanize(user.user_id) assert user_dict['id'] == humanized_id
def test_create_or_modify_returns_created_user_offerer_search_by_relationship_ids( self, app): # Given offerer = Offerer(name="foo") user = User(email="foo.marx@com", publicName="Foo Marx") ApiHandler.save(offerer, user) # When user_offerer = UserOfferer.create_or_modify({ '__SEARCH_BY__': ['offererId', 'userId'], 'rights': 'admin', 'offererId': humanize(offerer.id), 'userId': humanize(user.id) }) # Then assert user_offerer.offererId == offerer.id assert user_offerer.rights == 'admin' assert user_offerer.userId == user.id
def test_return_only_not_soft_deleted_stocks(self, app): # Given offer = Offer(name='foo', type='ThingType.JEUX_ABO') ApiHandler.save(offer) stock1 = Stock(price=1) stock1.offer = offer stock2 = Stock(price=2) stock2.offer = offer stock3 = Stock(price=3) stock3.offer = offer stock4 = Stock(price=4) stock4.offer = offer stock1.isSoftDeleted = True ApiHandler.save(stock1, stock2, stock3, stock4) # When result = get_result(Stock) data = result['data'] # Then assert data[0]['id'] == humanize(stock2.id) assert data[1]['id'] == humanize(stock3.id) assert data[2]['id'] == humanize(stock4.id)
def test_create_or_modify_returns_modified_offerer_search_by_id(self, app): # Given offerer1 = Offerer(name="foo") ApiHandler.save(offerer1) # When offerer2 = Offerer.create_or_modify({ '__SEARCH_BY__': 'id', 'id': humanize(offerer1.id), 'name': 'fee' }) # Then assert offerer2.id == offerer1.id assert offerer2.name == "fee"
def test_for_valid_relationship_dict_with_nested_modification(self, app): # Given offer_dict = {'name': 'foo', 'type': 'bar'} offer = Offer(**offer_dict) ApiHandler.save(offer) offer_dict['id'] = humanize(offer.id) offer_dict['name'] = 'fooo' stock_dict = {'offer': offer_dict, 'price': 1} stock = Stock(**stock_dict) # When ApiHandler.save(stock) # Then assert stock.price == stock_dict['price'] assert stock.offer.id == offer.id assert stock.offer.name == offer_dict['name']
def test_create_or_modify_with_flatten_unique_existing_datum(self, app): # Given offer = Offer(name='foo', type='bar') ApiHandler.save(offer) datum = { 'offer.id': humanize(offer.id), 'offer.type': 'bar', 'price': 2, } # When stock = Stock.create_or_modify(datum) # Then for (key, value) in datum.items(): if key.endswith('__SEARCH_BY__'): continue if key == 'offer.id': assert stock.get(key) == dehumanize(value) else: assert stock.get(key) == value assert stock.offer.id == offer.id