blob: db5a202ebe8e5e9e225f8539d99d52b5063b2371 [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.tasks.integration;
import com.intellij.tasks.Task;
import com.intellij.tasks.generic.GenericRepository;
import com.intellij.tasks.generic.GenericRepositoryType;
import com.intellij.tasks.generic.GenericTask;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.List;
import static com.intellij.tasks.TaskTestUtil.TaskBuilder;
import static com.intellij.tasks.TaskTestUtil.assertTasksEqual;
/**
* @author Mikhail Golubev
*/
public class AsanaIntegrationTest extends GenericSubtypeTestCase {
private static final String TASK_LIST_RESPONSE = "{\n" +
" \"data\": [\n" +
" {\n" +
" \"id\": 5479650606120,\n" +
" \"name\": \"Task #1\"\n" +
" },\n" +
" {\n" +
" \"id\": 5202014833559,\n" +
" \"name\": \"Task #2\"\n" +
" }\n" +
" ]\n" +
"}";
private static final String SINGLE_TASK_RESPONSE = "{\n" +
" \"data\": {\n" +
" \"id\": 7119324862208,\n" +
" \"created_at\": \"2013-08-02T12:13:20.372Z\",\n" +
" \"modified_at\": \"2013-08-21T16:36:36.290Z\",\n" +
" \"name\": \"Task #2\",\n" +
" \"notes\": \"This is task #2 description\",\n" +
" \"assignee\": {\n" +
" \"id\": 5202009297038,\n" +
" \"name\": \"someuser\"\n" +
" },\n" +
" \"completed\": true,\n" +
" \"assignee_status\": \"inbox\",\n" +
" \"completed_at\": \"2013-08-21T16:36:35.574Z\",\n" +
" \"due_on\": null,\n" +
" \"projects\": [\n" +
" {\n" +
" \"id\": 7119324862204,\n" +
" \"name\": \"someproject\"\n" +
" }\n" +
" ],\n" +
" \"tags\": [],\n" +
" \"workspace\": {\n" +
" \"id\": 5202014679955,\n" +
" \"name\": \"someworkspace\"\n" +
" },\n" +
" \"parent\": null,\n" +
" \"followers\": [\n" +
" {\n" +
" \"id\": 5202009297038,\n" +
" \"name\": \"someuser\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";
@NotNull
@Override
protected GenericRepository createRepository(GenericRepositoryType genericType) {
return (GenericRepository)genericType.new AsanaRepository().createRepository();
}
public void testParsingTaskList() throws Exception {
Task[] tasks = myRepository.getActiveResponseHandler().parseIssues(TASK_LIST_RESPONSE, 50);
List<Task> expected = ContainerUtil.<Task>newArrayList(
new GenericTask("5479650606120", "Task #1", myRepository),
new GenericTask("5202014833559", "Task #2", myRepository)
);
assertTasksEqual(expected, Arrays.asList(tasks));
}
public void testParsingSingleTask() throws Exception {
Task task = myRepository.getActiveResponseHandler().parseIssue(SINGLE_TASK_RESPONSE);
assertNotNull(task);
assertTasksEqual(
new TaskBuilder("7119324862208", "Task #2", myRepository)
.withDescription("This is task #2 description")
.withClosed(true)
.withCreated("2013-08-02T12:13:20.372Z")
.withUpdated("2013-08-21T16:36:36.290Z"),
task);
}
}