Example #1
0
    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)
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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)
Example #6
0
    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"
Example #7
0
    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']
Example #8
0
    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