def test_request_with_valid_params_calls_repo_with_filt(books): mock_repo = mock.Mock() mock_repo.list.return_value = books use_case = uc.BookListUseCase(mock_repo) filters = {'title__eq': 'Moby Dick'} request = req.BookListRequest.from_dict({'filters': filters}) response = use_case.execute(request) assert bool(response) is True mock_repo.list.assert_called_with(filters=filters)
def test_book_list_uc_bools_to_false_with_invalid_req(books): mock_repo = mock.Mock() mock_repo.list.return_value = books use_case = uc.BookListUseCase(mock_repo) filters = {'bad_request': 'Moby Dick'} request = req.BookListRequest.from_dict({'filters': filters}) response = use_case.execute(request) assert bool(request) is False assert bool(response) is False
def test_book_list_uc_executes_with_empty_request(books): mock_repo = mock.Mock() mock_repo.list.return_value = books use_case = uc.BookListUseCase(mock_repo) request = req.BookListRequest() response = use_case.execute(request) assert response.value == books assert bool(response) is True mock_repo.list.assert_called_with(filters=None)
def test_use_case_catches_generic_error(books): mock_repo = mock.Mock() mock_repo.list.side_effect = Exception('generic exception') use_case = uc.BookListUseCase(mock_repo) filters = {'title__eq': 'Moby Dick'} request = req.BookListRequest.from_dict({'filters': filters}) response = use_case.execute(request) assert bool(response) is False assert response.type == res.ResponseFailure.SYSTEM_ERROR assert response.message == 'Exception: generic exception'
def book(): query_string = {'filters': {}} for arg, values in request.args.items(): query_string['filters'][arg.replace('filter_', '')] = values request_object = req.BookListRequest.from_dict(query_string) repo = mr.MemRepo(book_list) use_case = uc.BookListUseCase(repo) response_object = use_case.execute(request_object) return Response(json.dumps(response_object.value, cls=ser.BookJsonEncoder), mimetype='application/json', status=STATUS_CODES[response_object.type])
def test_book_list_uc_initiates(books): mock_repo = mock.Mock() mock_repo.list.return_value = books use_case = uc.BookListUseCase(mock_repo) assert use_case.repo == mock_repo