def get(id: str, user_sub: str) -> Optional[ListModel]: list_doc = Lists.get(id) if list_doc is None: return None if not ListsDto._user_has_access_to_list(list_doc, user_sub): raise NoAccessError('User has no access to view this list') return ListMappers.map_doc_to_dto(list_doc)
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 get_all(user_sub: str) -> List[ListModel]: return [ListMappers.map_doc_to_dto(d) for d in Lists.get_all(user_sub)]