def test_lists_dto_add__when_new_list_is_added__then_update_dynamodb__and_return_saved_object( dynamodb_lists_table, dynamodb_user_to_lists_table, sample_data): from sf_shopping_list.data.dto.lists_dto import ListsDto from sf_shopping_list.data.clients.dynamodb import lists_table, user_to_lists_table guest_user_id = 'guest1_id' # add new list new_list = NewList(name='new sample list', items=[ 'item0', 'item1', 'item2', ], guests=[guest_user_id]) with patch('sf_shopping_list.data.dto.lists_dto.datetime', spec=datetime) as mock_date: mock_date.utcnow.return_value = added_time res = ListsDto.create(new_list, tested_user_id) # assert returned object has all fields filled correctly assert res.id == added_id assert res.userId == tested_user_id assert res.createdAt == added_time assert res.guests == new_list.guests assert res.items == new_list.items assert res.listName == new_list.name # assert returned object has been persisted saved_list = lists_table().get_item(Key={'id': added_id}) assert saved_list['Item'] is not None assert ListMappers.map_doc_to_dto( ListDocModel.from_db_doc(saved_list['Item'])) == res # assert owner user_to_lists entry has been updated with new list owner_lists = user_to_lists_table().get_item( Key={'user_id': tested_user_id}) assert owner_lists['Item'] is not None assert added_id in owner_lists['Item']['lists'] # assert guest user_to_lists entry has been updated with new list guest_lists = user_to_lists_table().get_item( Key={'user_id': guest_user_id}) assert guest_lists['Item'] is not None assert added_id in owner_lists['Item']['lists']
def create_list(body: NewList): assert isinstance(app.current_event, APIGatewayProxyEventV2) sub = _get_auth_user_sub(app.current_event) return ListsDto.create(body, sub)