def test_create_or_modify_with_relationship_search(self, app): # Given offer = Offer.create_or_modify( { '__SEARCH_BY__': 'name', 'name': 'foo', 'type': 'bar' }, with_add=True, with_flush=True) stock1 = Stock.create_or_modify({ '__SEARCH_BY__': ['offer', 'price'], 'offer': offer, 'price': 2 }) # When stock2 = Stock.create_or_modify({ '__SEARCH_BY__': ['offer', 'price'], 'offer': offer, 'price': 3 }) #Then assert offer.id != None assert offer.name == 'foo' assert offer.type == 'bar' assert stock1.offer.id == offer.id assert stock2.offer.id == offer.id assert stock1.id == None assert stock2.id == None
def test_create_or_modify_with_relationships_search(self, app): # Given offer = Offer.create_or_modify( { '__SEARCH_BY__': 'name', 'name': 'foo', 'type': 'bar' }, with_add=True, with_flush=True) tag = Tag.create_or_modify({ '__SEARCH_BY__': 'label', 'label': 'car' }, with_add=True, with_flush=True) # When offer_tag = OfferTag.create_or_modify({ '__SEARCH_BY__': ['offer', 'tag'], 'offer': offer, 'tag': tag }) #Then assert offer.id != None assert offer.name == 'foo' assert offer.type == 'bar' assert tag.id != None assert tag.label == 'car' assert offer_tag.id == None
def test_create_or_modify_with_primary_filter(self, app): # Given datum = {'name': 'foo', 'type': 'bar'} offer1 = Offer(**datum) ApiHandler.save(offer1) # When offer2 = Offer.create_or_modify({'id': offer1.humanizedId, **datum}) # Then assert offer2.id == offer1.id assert offer2.name == datum['name']
def test_create_or_modify_returns_modified_offer(self, app): # Given offer1 = Offer(name='foo', type='bar') ApiHandler.save(offer1) # When offer2 = Offer.create_or_modify({ '__SEARCH_BY__': 'name', 'name': 'foo', 'type': 'bric' }) # Then assert offer2.id == offer1.id assert offer2.name == offer1.name == 'foo' assert offer2.type == 'bric'
def test_create_or_modify_with_flatten_nested_unique_existing_datum( self, app): # Given tag = Tag(label='bar') ApiHandler.save(tag) datum = { 'name': 'foo', 'offerTags.0.tag.label': 'bar', 'type': 'bar', } # When offer = Offer.create_or_modify(datum) # Then for (key, value) in datum.items(): if key.endswith('__SEARCH_BY__'): continue assert offer.get(key) == value assert offer.offerTags[0].tag.id == tag.id