Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/test/java/it/niedermann/nextcloud/deck/database/DataBaseAdapterTest.java')
-rw-r--r--app/src/test/java/it/niedermann/nextcloud/deck/database/DataBaseAdapterTest.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/app/src/test/java/it/niedermann/nextcloud/deck/database/DataBaseAdapterTest.java b/app/src/test/java/it/niedermann/nextcloud/deck/database/DataBaseAdapterTest.java
index 50c093ebf..8e1018b96 100644
--- a/app/src/test/java/it/niedermann/nextcloud/deck/database/DataBaseAdapterTest.java
+++ b/app/src/test/java/it/niedermann/nextcloud/deck/database/DataBaseAdapterTest.java
@@ -1,13 +1,17 @@
package it.niedermann.nextcloud.deck.database;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static java.lang.reflect.Modifier.isProtected;
import static it.niedermann.nextcloud.deck.database.DeckDatabaseTestUtil.createAccount;
import static it.niedermann.nextcloud.deck.database.DeckDatabaseTestUtil.createBoard;
+import static it.niedermann.nextcloud.deck.database.DeckDatabaseTestUtil.createCard;
+import static it.niedermann.nextcloud.deck.database.DeckDatabaseTestUtil.createStack;
import static it.niedermann.nextcloud.deck.database.DeckDatabaseTestUtil.createUser;
import android.content.Context;
+import androidx.annotation.NonNull;
import androidx.room.Room;
import androidx.test.core.app.ApplicationProvider;
@@ -25,8 +29,15 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Objects;
import java.util.concurrent.ExecutorService;
+import it.niedermann.nextcloud.deck.TestUtil;
+import it.niedermann.nextcloud.deck.model.Card;
+import it.niedermann.nextcloud.deck.model.Stack;
+import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.model.interfaces.IRemoteEntity;
@RunWith(RobolectricTestRunner.class)
@@ -111,4 +122,50 @@ public class DataBaseAdapterTest {
assertEquals(leet + 1, args.get(1));
}
+ @Test
+ public void testSearchCards() throws InterruptedException {
+ final var account = createAccount(db.getAccountDao());
+ final var user = createUser(db.getUserDao(), account);
+ final var board = createBoard(db.getBoardDao(), account, user);
+
+ final var stack1 = createStack(db.getStackDao(), account, board);
+ final var stack2 = createStack(db.getStackDao(), account, board);
+ final var card1_1 = createCard(db.getCardDao(), account, stack1, "Foo", "Hello world");
+ final var card1_2 = createCard(db.getCardDao(), account, stack1, "Bar", "Hello Bar");
+ final var card1_3 = createCard(db.getCardDao(), account, stack2, "Baz", "");
+ final var card2_1 = createCard(db.getCardDao(), account, stack2, "Qux", "Hello Foo");
+ final var card2_2 = createCard(db.getCardDao(), account, stack2, "Lorem", "Ipsum");
+
+ var result = TestUtil.getOrAwaitValue(adapter.searchCards(account.getId(), board.getLocalId(), "Hello", 3));
+ assertEquals(2, result.size());
+ assertEquals(2, countCardsOf(result, stack1));
+ assertEquals(1, countCardsOf(result, stack2));
+ assertTrue(containsCard(result, stack1, card1_1));
+ assertTrue(containsCard(result, stack1, card1_2));
+ assertTrue(containsCard(result, stack2, card2_1));
+ }
+
+ private int countCardsOf(@NonNull Map<Stack, List<FullCard>> map, @NonNull Stack stackToFind) {
+ for (final var stack : map.keySet()) {
+ if (Objects.equals(stack.getLocalId(), stackToFind.getLocalId())) {
+ //noinspection ConstantConditions
+ return map.get(stack).size();
+ }
+ }
+ throw new NoSuchElementException();
+ }
+
+ private boolean containsCard(@NonNull Map<Stack, List<FullCard>> map, @NonNull Stack stackToFind, @NonNull Card cardToFind) {
+ for (final var stack : map.keySet()) {
+ if (Objects.equals(stack.getLocalId(), stackToFind.getLocalId())) {
+ //noinspection ConstantConditions
+ for (final var fullCard : map.get(stack)) {
+ if (Objects.equals(fullCard.getLocalId(), cardToFind.getLocalId())) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
}