### Question:
ProjectService extends AbstractService { public Project getProjectByUri(final String uri) { notEmpty(uri, "uri"); try { return restTemplate.getForObject(uri, Project.class); } catch (GoodDataRestException e) { if (HttpStatus.NOT_FOUND.value() == e.getStatusCode()) { throw new ProjectNotFoundException(uri, e); } else { throw e; } } catch (RestClientException e) { throw new GoodDataException("Unable to get project " + uri, e); } } ProjectService(final RestTemplate restTemplate, final AccountService accountService,
                          final GoodDataSettings settings); @Deprecated Collection<Project> getProjects(); PageBrowser<Project> listProjects(); PageBrowser<Project> listProjects(final PageRequest startPage); FutureResult<Project> createProject(final Project project); Project getProjectByUri(final String uri); Project getProjectById(String id); void removeProject(final Project project); Collection<ProjectTemplate> getProjectTemplates(final Project project); Set<ProjectValidationType> getAvailableProjectValidationTypes(final Project project); FutureResult<ProjectValidationResults> validateProject(final Project project); FutureResult<ProjectValidationResults> validateProject(final Project project, ProjectValidationType... validations); FutureResult<ProjectValidationResults> validateProject(final Project project, Set<ProjectValidationType> validations); PageBrowser<User> listUsers(final Project project); PageBrowser<User> listUsers(final Project project, final PageRequest startPage); Set<Role> getRoles(final Project project); Role getRoleByUri(String uri); CreatedInvitations sendInvitations(final Project project, final Invitation... invitations); User getUser(final Project project, final Account account); User addUserToProject(final Project project, final Account account, final Role... userRoles); void updateUserInProject(final Project project, final User... users); static final UriTemplate PROJECT_TEMPLATE; static final UriTemplate PROJECT_USERS_TEMPLATE; static final UriTemplate PROJECT_USER_TEMPLATE; static final UriTemplate LIST_PROJECTS_TEMPLATE; }### Answer:
@Test(expectedExceptions = IllegalArgumentException.class) public void testGetProjectByUriWithNullUri() { service.getProjectByUri(null); }
@Test public void testGetProjectByUri() { when(restTemplate.getForObject(URI, Project.class)).thenReturn(project); final Project result = service.getProjectByUri(URI); assertThat(result, is(project)); }
@Test(expectedExceptions = ProjectNotFoundException.class) public void testGetProjectByUriNotFound() { when(restTemplate.getForObject(URI, Project.class)).thenThrow(new GoodDataRestException(404, "", "", "", "")); service.getProjectByUri(URI); }
@Test(expectedExceptions = GoodDataRestException.class) public void testGetProjectByUriServerError() { when(restTemplate.getForObject(URI, Project.class)).thenThrow(new GoodDataRestException(500, "", "", "", "")); service.getProjectByUri(URI); }
@Test(expectedExceptions = GoodDataException.class) public void testGetProjectByUriClientError() { when(restTemplate.getForObject(URI, Project.class)).thenThrow(new RestClientException("")); service.getProjectByUri(URI); }