summaryrefslogtreecommitdiff
path: root/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/live/TrelloIntegrationTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/live/TrelloIntegrationTest.java')
-rw-r--r--plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/live/TrelloIntegrationTest.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/live/TrelloIntegrationTest.java b/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/live/TrelloIntegrationTest.java
new file mode 100644
index 000000000000..3da6ad3d82d7
--- /dev/null
+++ b/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/live/TrelloIntegrationTest.java
@@ -0,0 +1,142 @@
+package com.intellij.tasks.integration.live;
+
+import com.intellij.openapi.util.Condition;
+import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.tasks.trello.TrelloRepository;
+import com.intellij.tasks.trello.TrelloRepositoryType;
+import com.intellij.tasks.trello.model.*;
+import com.intellij.util.Function;
+import com.intellij.util.containers.ContainerUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author Mikhail Golubev
+ */
+public class TrelloIntegrationTest extends LiveIntegrationTestCase<TrelloRepository> {
+
+ private static final String BOARD_1_NAME = "Board 1";
+ private static final String BOARD_1_ID = "53c416a8a6e5a78753562043";
+
+ private static final String LIST_1_1_NAME = "List 1-1";
+ private static final String LIST_1_1_ID = "53c416a8a6e5a78753562044";
+
+ private static final String CARD_1_1_1_NAME = "Card 1-1-1";
+ private static final String CARD_1_1_1_ID = "53c416d8b4bd36fb078446e5";
+
+ @Override
+ protected TrelloRepository createRepository() throws Exception {
+ TrelloRepository repository = new TrelloRepository(new TrelloRepositoryType());
+ String token = System.getProperty("tasks.tests.trello.token");
+ if (StringUtil.isEmpty(token)) {
+ throw new AssertionError("Authorization token is not set");
+ }
+ repository.setPassword(token);
+ TrelloUser user = repository.fetchUserByToken();
+ assertNotNull(user);
+ repository.setCurrentUser(user);
+ return repository;
+ }
+
+ // TODO Check closed tasks exclusion
+ // TODO Check various cards visibility corner cases
+
+ public void testFetchBoard() throws Exception {
+ TrelloBoard board = myRepository.fetchBoardById(BOARD_1_ID);
+ assertNotNull(board);
+ assertEquals(BOARD_1_NAME, board.getName());
+ }
+
+ public void testFetchList() throws Exception {
+ TrelloList list = myRepository.fetchListById(LIST_1_1_ID);
+ assertNotNull(list);
+ assertEquals(LIST_1_1_NAME, list.getName());
+ }
+
+ public void testFetchCard() throws Exception {
+ TrelloCard card = myRepository.fetchCardById(CARD_1_1_1_ID);
+ assertNotNull(card);
+ assertEquals(CARD_1_1_1_NAME, card.getName());
+ }
+
+ public void testFetchBoardsOfUser() throws Exception {
+ List<TrelloBoard> boards = myRepository.fetchUserBoards();
+ assertEquals(2, boards.size());
+ assertObjectsNamed("All boards of the user should be included", boards, "Board 1", "Board 2");
+ }
+
+ public void testFetchListsOfBoard() throws Exception {
+ TrelloBoard selectedBoard = myRepository.fetchBoardById(BOARD_1_ID);
+ assertNotNull(selectedBoard);
+ myRepository.setCurrentBoard(selectedBoard);
+ List<TrelloList> lists = myRepository.fetchBoardLists();
+ assertEquals(3, lists.size());
+ assertObjectsNamed("All lists of the board should be included", lists, "List 1-1", "List 1-2", "List 1-3");
+ }
+
+ @NotNull
+ private List<TrelloCard> fetchCards(@Nullable String boardId, @Nullable String listId, boolean withClosed) throws Exception {
+ if (boardId != null) {
+ TrelloBoard selectedBoard = myRepository.fetchBoardById(BOARD_1_ID);
+ assertNotNull(selectedBoard);
+ myRepository.setCurrentBoard(selectedBoard);
+ }
+ if (listId != null) {
+ TrelloList selectedList = myRepository.fetchListById(LIST_1_1_ID);
+ assertNotNull(selectedList);
+ myRepository.setCurrentList(selectedList);
+ }
+ return myRepository.fetchCards(100, withClosed);
+ }
+
+ public void testFetchingCardsOfUser() throws Exception {
+ myRepository.setIncludeAllCards(true);
+ List<TrelloCard> cards = fetchCards(null, null, true);
+ assertObjectsNamed("All cards assigned to user should be included", cards, "Card 1-1-1");
+ }
+
+ public void testFetchingCardsOfBoard() throws Exception {
+ myRepository.setIncludeAllCards(true);
+ List<TrelloCard> cards = fetchCards(BOARD_1_ID, null, true);
+ assertObjectsNamed("All cards of the board should be included",
+ cards, "Card 1-1-1", "Card 1-1-2", "Card 1-2-1", "Card 1-3-1", "Archived Card");
+ }
+
+ public void testCardsFilteringByMembership() throws Exception {
+ myRepository.setIncludeAllCards(true);
+ List<TrelloCard> allCards = fetchCards(BOARD_1_ID, LIST_1_1_ID, true);
+ assertObjectsNamed("All cards of the list should be included", allCards, "Card 1-1-1", "Card 1-1-2", "Archived Card");
+
+ myRepository.setIncludeAllCards(false);
+ List<TrelloCard> assignedCards = fetchCards(BOARD_1_ID, LIST_1_1_ID, true);
+ assertObjectsNamed("Only cards of the list assigned to user should be included", assignedCards, "Card 1-1-1");
+ }
+
+ public void testCardsFilteringByStatus() throws Exception {
+ myRepository.setIncludeAllCards(true);
+ List<TrelloCard> allCards = fetchCards(BOARD_1_ID, LIST_1_1_NAME, true);
+ assertObjectsNamed("All cards of the list should be included", allCards, "Card 1-1-1", "Card 1-1-2", "Archived Card");
+
+ TrelloCard card = ContainerUtil.find(allCards, new Condition<TrelloCard>() {
+ @Override
+ public boolean value(TrelloCard card) {
+ return card.getName().equals("Archived Card");
+ }
+ });
+ assertNotNull(card);
+ assertTrue(card.isClosed());
+ assertFalse(card.isVisible());
+ }
+
+ static void assertObjectsNamed(@NotNull String message, @NotNull Collection<? extends TrelloModel> objects, @NotNull String... names) {
+ assertEquals(message, ContainerUtil.newHashSet(names), ContainerUtil.map2Set(objects, new Function<TrelloModel, String>() {
+ @Override
+ public String fun(TrelloModel model) {
+ return model.getName();
+ }
+ }));
+ }
+}