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
path: root/app
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-12-27 00:48:13 +0300
committerStefan Niedermann <info@niedermann.it>2020-12-27 00:48:13 +0300
commit39cad88b6029b466300d8c3c9e41be1db0f8ed54 (patch)
treed6933d5d7919ddcadee046622fd27f6359fe9692 /app
parent264d34940cb5e26673111c55b0bf976572bfba46 (diff)
Add DataBaseAdapterTest
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app')
-rw-r--r--app/src/androidTest/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapterTest.java81
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java21
2 files changed, 91 insertions, 11 deletions
diff --git a/app/src/androidTest/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapterTest.java b/app/src/androidTest/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapterTest.java
new file mode 100644
index 000000000..0ea8d0f7e
--- /dev/null
+++ b/app/src/androidTest/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapterTest.java
@@ -0,0 +1,81 @@
+package it.niedermann.nextcloud.deck.persistence.sync.adapters.db;
+
+import android.content.Context;
+
+import androidx.room.Room;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
+
+import it.niedermann.nextcloud.deck.model.Account;
+import it.niedermann.nextcloud.deck.model.Board;
+import it.niedermann.nextcloud.deck.model.User;
+import it.niedermann.nextcloud.deck.model.full.FullBoard;
+import it.niedermann.nextcloud.deck.model.interfaces.AbstractRemoteEntity;
+
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DeckDatabaseTestUtil.createAccount;
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DeckDatabaseTestUtil.createBoard;
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DeckDatabaseTestUtil.createUser;
+import static org.junit.Assert.assertEquals;
+
+@RunWith(AndroidJUnit4.class)
+public class DataBaseAdapterTest {
+
+ private DeckDatabase db;
+ private DataBaseAdapter adapter;
+
+ @Before
+ public void createAdapter() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
+ final Constructor<DataBaseAdapter> constructor = DataBaseAdapter.class.getDeclaredConstructor(Context.class, DeckDatabase.class);
+ if (Modifier.isPrivate(constructor.getModifiers())) {
+ constructor.setAccessible(true);
+ db = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), DeckDatabase.class).build();
+ adapter = constructor.newInstance(ApplicationProvider.getApplicationContext(), db);
+ }
+ }
+
+ @After
+ public void closeDb() {
+ if (db != null) {
+ db.close();
+ }
+ }
+
+ @Test
+ public void testCreate() {
+ final Account account = createAccount(db.getAccountDao());
+ final User user = createUser(db.getUserDao(), account);
+ final Board board = createBoard(db.getBoardDao(), account, user);
+ final FullBoard fetchedBoard = adapter.getFullBoardByLocalIdDirectly(account.getId(), board.getLocalId());
+
+ assertEquals(board.getTitle(), fetchedBoard.getBoard().getTitle());
+ }
+
+ @Test
+ public void testFillSqlWithListValues() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
+ final User user1 = createUser(db.getUserDao(), createAccount(db.getAccountDao()));
+ final StringBuilder builder = new StringBuilder();
+ final List<Object> args = new ArrayList<>(1);
+ final List<? extends AbstractRemoteEntity> entities = new ArrayList<AbstractRemoteEntity>(1) {{
+ add(user1);
+ }};
+
+ Method m = DataBaseAdapter.class.getDeclaredMethod("fillSqlWithListValues", StringBuilder.class, List.class, List.class);
+ m.setAccessible(true);
+ m.invoke(adapter, builder, args, entities);
+ assertEquals("?", builder.toString());
+ assertEquals(user1.getLocalId(), args.get(0));
+ }
+
+}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
index 982844f06..c08c15cc6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
@@ -60,8 +60,12 @@ public class DataBaseAdapter {
private Context context;
public DataBaseAdapter(@NonNull Context applicationContext) {
+ this(applicationContext, DeckDatabase.getInstance(applicationContext));
+ }
+
+ private DataBaseAdapter(@NonNull Context applicationContext, @NonNull DeckDatabase db) {
this.context = applicationContext;
- this.db = DeckDatabase.getInstance(applicationContext);
+ this.db = db;
}
@NonNull
@@ -202,20 +206,15 @@ public class DataBaseAdapter {
}
@WorkerThread
- public List<FullCard> getFullCardsForStackDirectly(long accountId, long localStackId, FilterInformation filter) {
- if (filter == null) {
- return db.getCardDao().getFullCardsForStackDirectly(accountId, localStackId);
- }
- List<Object> args = new ArrayList<>();
- args.add(accountId);
- args.add(localStackId);
-
- return db.getCardDao().getFilteredFullCardsForStackDirectly(getQueryForFilter(filter, accountId, localStackId));
+ public List<FullCard> getFullCardsForStackDirectly(long accountId, long localStackId, @Nullable FilterInformation filter) {
+ return filter == null
+ ? db.getCardDao().getFullCardsForStackDirectly(accountId, localStackId)
+ : db.getCardDao().getFilteredFullCardsForStackDirectly(getQueryForFilter(filter, accountId, localStackId));
}
@AnyThread
private SimpleSQLiteQuery getQueryForFilter(FilterInformation filter, long accountId, long localStackId) {
- List<Object> args = new ArrayList<>();
+ final List<Object> args = new ArrayList<>(2);
args.add(accountId);
args.add(localStackId);
StringBuilder query = new StringBuilder("SELECT * FROM card c " +