| package com.intellij.tasks.integration; |
| |
| import com.intellij.tasks.Task; |
| import com.intellij.tasks.TaskTestUtil; |
| import com.intellij.tasks.generic.GenericRepository; |
| import com.intellij.tasks.generic.GenericRepositoryType; |
| import org.jetbrains.annotations.NotNull; |
| |
| import static com.intellij.tasks.TaskTestUtil.TaskBuilder; |
| import static com.intellij.tasks.TaskTestUtil.assertTasksEqual; |
| |
| /** |
| * @author Mikhail Golubev |
| */ |
| public class SprintlyIntegrationTest extends GenericSubtypeTestCase { |
| private static final String TASK_LIST_RESPONSE = "[\n" + |
| " {\n" + |
| " \"number\" : 1,\n" + |
| " \"progress\" : {\n" + |
| " \"started_at\" : \"2013-09-03T16:12:51+00:00\",\n" + |
| " \"triaged_at\" : \"2013-09-03T16:12:35+00:00\"\n" + |
| " },\n" + |
| " \"status\" : \"in-progress\",\n" + |
| " \"last_modified\" : \"2013-09-03T16:12:51+00:00\",\n" + |
| " \"score\" : \"~\",\n" + |
| " \"description\" : \"These SEGFAULTs oppress me\",\n" + |
| " \"tags\" : [\n" + |
| " \"bar\",\n" + |
| " \"tag\",\n" + |
| " \"foo\"\n" + |
| " ],\n" + |
| " \"email\" : {\n" + |
| " \"files\" : \"files-505027@items.sprint.ly\",\n" + |
| " \"discussion\" : \"discussion-505027@items.sprint.ly\"\n" + |
| " },\n" + |
| " \"created_at\" : \"2013-09-03T16:10:43+00:00\",\n" + |
| " \"assigned_to\" : {\n" + |
| " \"last_login\" : \"2013-09-03T16:02:32+00:00\",\n" + |
| " \"email\" : \"qsolo825@gmail.com\",\n" + |
| " \"created_at\" : \"2013-09-03T16:02:30+00:00\",\n" + |
| " \"id\" : 17259,\n" + |
| " \"last_name\" : \"Golubev\",\n" + |
| " \"first_name\" : \"Mikhail\"\n" + |
| " },\n" + |
| " \"type\" : \"defect\",\n" + |
| " \"product\" : {\n" + |
| " \"name\" : \"My Enormous Project\",\n" + |
| " \"id\" : 14182,\n" + |
| " \"archived\" : false\n" + |
| " },\n" + |
| " \"title\" : \"Nasty Bug!\",\n" + |
| " \"short_url\" : \"http://sprint.ly/i/14182/1/\",\n" + |
| " \"created_by\" : {\n" + |
| " \"last_login\" : \"2013-09-03T16:02:32+00:00\",\n" + |
| " \"email\" : \"qsolo825@gmail.com\",\n" + |
| " \"created_at\" : \"2013-09-03T16:02:30+00:00\",\n" + |
| " \"id\" : 17259,\n" + |
| " \"last_name\" : \"Golubev\",\n" + |
| " \"first_name\" : \"Mikhail\"\n" + |
| " }\n" + |
| " },\n" + |
| " {\n" + |
| " \"number\" : 2,\n" + |
| " \"progress\" : {\n" + |
| " \"triaged_at\" : \"2013-09-03T16:14:08+00:00\"\n" + |
| " },\n" + |
| " \"status\" : \"backlog\",\n" + |
| " \"last_modified\" : \"2013-09-04T10:18:02+00:00\",\n" + |
| " \"score\" : \"~\",\n" + |
| " \"description\" : \"Finish Sprint.ly connector\",\n" + |
| " \"tags\" : [\n" + |
| " \"foo\"\n" + |
| " ],\n" + |
| " \"email\" : {\n" + |
| " \"files\" : \"files-505035@items.sprint.ly\",\n" + |
| " \"discussion\" : \"discussion-505035@items.sprint.ly\"\n" + |
| " },\n" + |
| " \"created_at\" : \"2013-09-03T16:13:54+00:00\",\n" + |
| " \"assigned_to\" : {\n" + |
| " \"last_login\" : \"2013-09-03T16:02:32+00:00\",\n" + |
| " \"email\" : \"qsolo825@gmail.com\",\n" + |
| " \"created_at\" : \"2013-09-03T16:02:30+00:00\",\n" + |
| " \"id\" : 17259,\n" + |
| " \"last_name\" : \"Golubev\",\n" + |
| " \"first_name\" : \"Mikhail\"\n" + |
| " },\n" + |
| " \"type\" : \"task\",\n" + |
| " \"product\" : {\n" + |
| " \"name\" : \"My Enormous Project\",\n" + |
| " \"id\" : 14182,\n" + |
| " \"archived\" : false\n" + |
| " },\n" + |
| " \"title\" : \"Some task\",\n" + |
| " \"short_url\" : \"http://sprint.ly/i/14182/2/\",\n" + |
| " \"created_by\" : {\n" + |
| " \"last_login\" : \"2013-09-03T16:02:32+00:00\",\n" + |
| " \"email\" : \"qsolo825@gmail.com\",\n" + |
| " \"created_at\" : \"2013-09-03T16:02:30+00:00\",\n" + |
| " \"id\" : 17259,\n" + |
| " \"last_name\" : \"Golubev\",\n" + |
| " \"first_name\" : \"Mikhail\"\n" + |
| " }\n" + |
| " }\n" + |
| "]\n"; |
| |
| public static final String SINGLE_TASK_RESPONSE = "{\n" + |
| " \"number\" : 1,\n" + |
| " \"progress\" : {\n" + |
| " \"started_at\" : \"2013-09-03T16:12:51+00:00\",\n" + |
| " \"triaged_at\" : \"2013-09-03T16:12:35+00:00\"\n" + |
| " },\n" + |
| " \"status\" : \"in-progress\",\n" + |
| " \"last_modified\" : \"2013-09-04T13:53:14+00:00\",\n" + |
| " \"score\" : \"~\",\n" + |
| " \"description\" : \"This is this horrible bug's description\",\n" + |
| " \"tags\" : [\n" + |
| " \"bar\",\n" + |
| " \"tag\",\n" + |
| " \"foo\"\n" + |
| " ],\n" + |
| " \"email\" : {\n" + |
| " \"files\" : \"files-505027@items.sprint.ly\",\n" + |
| " \"discussion\" : \"discussion-505027@items.sprint.ly\"\n" + |
| " },\n" + |
| " \"created_at\" : \"2013-09-03T16:10:43+00:00\",\n" + |
| " \"assigned_to\" : {\n" + |
| " \"last_login\" : \"2013-09-03T16:02:32+00:00\",\n" + |
| " \"email\" : \"qsolo825@gmail.com\",\n" + |
| " \"created_at\" : \"2013-09-03T16:02:30+00:00\",\n" + |
| " \"id\" : 17259,\n" + |
| " \"last_name\" : \"Golubev\",\n" + |
| " \"first_name\" : \"Mikhail\"\n" + |
| " },\n" + |
| " \"type\" : \"defect\",\n" + |
| " \"product\" : {\n" + |
| " \"name\" : \"My Enormous Project\",\n" + |
| " \"id\" : 14182,\n" + |
| " \"archived\" : false\n" + |
| " },\n" + |
| " \"title\" : \"Nasty Bug!\",\n" + |
| " \"short_url\" : \"http://sprint.ly/i/14182/1/\",\n" + |
| " \"created_by\" : {\n" + |
| " \"last_login\" : \"2013-09-03T16:02:32+00:00\",\n" + |
| " \"email\" : \"qsolo825@gmail.com\",\n" + |
| " \"created_at\" : \"2013-09-03T16:02:30+00:00\",\n" + |
| " \"id\" : 17259,\n" + |
| " \"last_name\" : \"Golubev\",\n" + |
| " \"first_name\" : \"Mikhail\"\n" + |
| " }\n" + |
| "}\n"; |
| |
| public void testParsingTaskList() throws Exception { |
| Task[] tasks = myRepository.getActiveResponseHandler().parseIssues(TASK_LIST_RESPONSE, 50); |
| assertTasksEqual(new Task[]{ |
| new TaskBuilder("1", "Nasty Bug!", myRepository) |
| .withDescription("These SEGFAULTs oppress me") |
| .withIssueUrl("http://sprint.ly/i/14182/1/") |
| .withUpdated("2013-09-03 16:12:51") |
| .withCreated("2013-09-03 16:10:43"), |
| new TaskBuilder("2", "Some task", myRepository) |
| .withDescription("Finish Sprint.ly connector") |
| .withIssueUrl("http://sprint.ly/i/14182/2/") |
| .withUpdated("2013-09-04 10:18:02") |
| .withCreated("2013-09-03 16:13:54") |
| }, tasks); |
| } |
| |
| public void testParsingSingleTask() throws Exception { |
| Task task = myRepository.getActiveResponseHandler().parseIssue(SINGLE_TASK_RESPONSE); |
| assertTasksEqual( |
| new TaskBuilder("1", "Nasty Bug!", myRepository) |
| .withDescription("This is this horrible bug's description") |
| .withIssueUrl("http://sprint.ly/i/14182/1/") |
| .withUpdated("2013-09-04 13:53:14") |
| .withCreated("2013-09-03 16:10:43"), |
| task); |
| } |
| |
| @NotNull |
| @Override |
| protected GenericRepository createRepository(GenericRepositoryType genericType) { |
| return (GenericRepository)genericType.new SprintlyRepository().createRepository(); |
| } |
| } |