def test_search_projects_with_pagination(paginated_collection, paginated_session): # Given common_name = "same name" same_name_projects_data = ProjectDataFactory.create_batch(35, name=common_name) more_data = ProjectDataFactory.create_batch(35, name="some other name") per_page = 10 paginated_session.set_response({ 'projects': same_name_projects_data }) search_params = {'status': { 'value': common_name, 'search_method': 'EXACT'}} # When projects = list(paginated_collection.search(per_page=per_page, search_params=search_params)) # Then assert 4 == paginated_session.num_calls expected_first_call = FakeCall(method='POST', path='/projects/search', params={'per_page': per_page}, json={'search_params': search_params} ) expected_last_call = FakeCall(method='POST', path='/projects/search', params={'page': 4, 'per_page': per_page}, json={'search_params': search_params}) assert expected_first_call == paginated_session.calls[0] assert expected_last_call == paginated_session.last_call project_ids = [str(p.uid) for p in projects] expected_ids = [p['id'] for p in same_name_projects_data] assert project_ids == expected_ids
def test_search_projects(collection, session): # Given projects_data = ProjectDataFactory.create_batch(2) project_name_to_match = projects_data[0]['name'] expected_response = list( filter(lambda p: p["name"] == project_name_to_match, projects_data)) session.set_response({'projects': expected_response}) search_params = { 'name': { 'value': project_name_to_match, 'search_method': 'EXACT' } } # When projects = list(collection.search(search_params=search_params)) # Then assert 1 == session.num_calls expected_call = FakeCall(method='POST', path='/projects/search', params={'per_page': 100}, json={'search_params': search_params}) assert expected_call == session.last_call assert len(expected_response) == len(projects)
def test_list_projects_filters_non_projects(collection, session): # Given projects_data = ProjectDataFactory.create_batch(5) projects_data.append({'foo': 'not a project'}) session.set_response({'projects': projects_data}) # Then with pytest.raises(RuntimeError): # When projects = list(collection.list())
def test_list_projects(collection, session): # Given projects_data = ProjectDataFactory.create_batch(5) session.set_response({'projects': projects_data}) # When projects = list(collection.list()) # Then assert 1 == session.num_calls expected_call = FakeCall(method='GET', path='/projects', params={'per_page': 1000}) assert expected_call == session.last_call assert 5 == len(projects)
def test_list_projects_filters_non_projects(collection, session): # Given projects_data = ProjectDataFactory.create_batch(5) projects_data.append({'foo': 'not a project'}) session.set_response({'projects': projects_data}) # When projects = list(collection.list()) # Then assert 1 == session.num_calls expected_call = FakeCall(method='GET', path='/projects') assert expected_call == session.last_call assert 5 == len(projects) # The non-project data is filtered out