### Question:
ProjectService extends AbstractService { public PageBrowser<Project> listProjects() { final String userId = accountService.getCurrent().getId(); return new PageBrowser<>(page -> listProjects(getProjectsUri(userId, page))); } 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 public void testListProjects() throws Exception { doReturn(new Projects(singletonList(project), new Paging(""))).when(restTemplate) .getForObject(new URI(LIST_PROJECTS_TEMPLATE.expand(ACCOUNT_ID) + "?limit=100"), Projects.class); final Collection<Project> result = service.listProjects().getPageItems(); assertThat(result, hasSize(1)); assertThat(result, hasItem(project)); }
@Test public void testListProjectsWithPage() throws Exception { doReturn(new Projects(singletonList(project), new Paging(""))).when(restTemplate) .getForObject(new URI(LIST_PROJECTS_TEMPLATE.expand(ACCOUNT_ID) + "?offset=2&limit=100"), Projects.class); final Collection<Project> result = service.listProjects(new CustomPageRequest(2, 100)).getPageItems(); assertThat(result, hasSize(1)); assertThat(result, hasItem(project)); }
@Test(expectedExceptions = GoodDataException.class) public void testListProjectsWithClientException() throws Exception { doThrow(new GoodDataException("")).when(restTemplate) .getForObject(new URI(LIST_PROJECTS_TEMPLATE.expand(ACCOUNT_ID) + "?limit=100"), Projects.class); service.listProjects(); }