def test_document_list_handles_bad_request(): repo = mock.Mock() document_list_use_case = uc.DocumentListUseCase(repo) request_object = ro.DocumentListRequestObject.from_dict({'filters': 5}) response_object = document_list_use_case.execute(request_object) assert bool(response_object) is False assert response_object.value == { 'type': res.ResponseFailure.PARAMETERS_ERROR, 'message': "filters: Is not iterable" }
def test_document_list_without_parameters(domain_documents): repo = mock.Mock() repo.list.return_value = domain_documents document_list_use_case = uc.DocumentListUseCase(repo) request_object = ro.DocumentListRequestObject.from_dict({}) response_object = document_list_use_case.execute(request_object) assert bool(response_object) is True repo.list.assert_called_with(filters=None) assert response_object.value == domain_documents
def test_document_list_handles_generic_error(): repo = mock.Mock() repo.list.side_effect = Exception('Just an error message') document_list_use_case = uc.DocumentListUseCase(repo) request_object = ro.DocumentListRequestObject.from_dict({}) response_object = document_list_use_case.execute(request_object) assert bool(response_object) is False assert response_object.value == { 'type': res.ResponseFailure.SYSTEM_ERROR, 'message': "Exception: Just an error message" }
def test_document_list_with_filters(domain_documents): repo = mock.Mock() repo.list.return_value = domain_documents document_list_use_case = uc.DocumentListUseCase(repo) qry_filters = {'a': 5} request_object = ro.DocumentListRequestObject.from_dict( {'filters': qry_filters}) response_object = document_list_use_case.execute(request_object) assert bool(response_object) is True repo.list.assert_called_with(filters=qry_filters) assert response_object.value == domain_documents
def documents(): qrystr_params = { 'filters': {}, } for arg, values in request.args.items(): if arg.startswith('filter_'): qrystr_params['filters'][arg.replace('filter_', '')] = values request_object = req.DocumentListRequestObject.from_dict(qrystr_params) repo = MongoDBRepo() use_case = uc.DocumentListUseCase(repo) response = use_case.execute(request_object) return Response(json.dumps(response.value, cls=ser.DocumentEncoder), mimetype='application/json', status=STATUS_CODES[response.type])