From abf4b59500a00656a97804b02fd5a14fd6c585e0 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Fri, 29 Nov 2019 00:43:41 +0100 Subject: [PATCH] Tinker with junit database test --- .../repository/AccountRepositoryTest.java | 67 +++++++++++++++++-- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java b/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java index 01244bb..35f2549 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java @@ -1,5 +1,6 @@ package org.mercury_im.messenger.data.repository; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mercury_im.messenger.data.mapping.AccountMapping; @@ -7,41 +8,79 @@ import org.mercury_im.messenger.data.model.Models; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.IAccount; import org.mercury_im.messenger.entity.PasswordAuthentication; +import org.mercury_im.messenger.entity.chat.Chat; +import org.mercury_im.messenger.entity.chat.ChatPreferences; +import org.mercury_im.messenger.entity.chat.DirectChat; +import org.mercury_im.messenger.entity.chat.IChatPreferences; +import org.mercury_im.messenger.entity.chat.IDirectChat; +import org.mercury_im.messenger.entity.contact.IPeer; +import org.mercury_im.messenger.entity.contact.Peer; +import org.mercury_im.messenger.entity.message.IMessage; +import org.mercury_im.messenger.entity.message.IMessagePayload; +import org.mercury_im.messenger.entity.message.Message; +import org.mercury_im.messenger.entity.message.MessageDeliveryState; +import org.mercury_im.messenger.entity.message.content.MessageContent; +import org.mercury_im.messenger.entity.message.content.TextMessageContent; +import org.sqlite.SQLiteConfig; import org.sqlite.SQLiteDataSource; +import java.util.Collections; +import java.util.List; + +import io.reactivex.functions.Predicate; import io.reactivex.observers.TestObserver; import io.reactivex.schedulers.Schedulers; import io.reactivex.subscribers.TestSubscriber; import io.requery.Persistable; import io.requery.cache.EntityCacheBuilder; +import io.requery.cache.WeakEntityCache; import io.requery.meta.EntityModel; import io.requery.reactivex.ReactiveEntityStore; import io.requery.reactivex.ReactiveSupport; import io.requery.sql.Configuration; import io.requery.sql.ConfigurationBuilder; import io.requery.sql.EntityDataStore; +import io.requery.sql.SchemaModifier; +import io.requery.sql.TableCreationMode; import io.requery.sql.TransactionMode; +import static junit.framework.TestCase.assertEquals; + public class AccountRepositoryTest { ReactiveEntityStore dataStore; XmppAccountRepository accountRepository; + XmppDirectChatRepository directChatRepository; + @Before public void setup() { SQLiteDataSource dataSource = new SQLiteDataSource(); - dataSource.setUrl("jdbc:sqlite::memory:"); + dataSource.setUrl("jdbc:sqlite::memory:test"); + SQLiteConfig config = new SQLiteConfig(); + config.setDateClass("TEXT"); + dataSource.setConfig(config); + // Turn on foreign keys support. + // NOTE: Do it after setConfig, or setConfig will overwrite this setting + dataSource.setEnforceForeignKeys(true); + EntityModel model = Models.DEFAULT; Configuration configuration = new ConfigurationBuilder(dataSource, model) + .setEntityCache(new WeakEntityCache()) .useDefaultLogging() - .setTransactionMode(TransactionMode.AUTO) .build(); + + SchemaModifier modifier = new SchemaModifier(dataSource, model); + modifier.createTables(TableCreationMode.DROP_CREATE); + dataStore = ReactiveSupport.toReactiveStore(new EntityDataStore<>(configuration)); - accountRepository = new XmppAccountRepository(dataStore, Schedulers.io(), Schedulers.computation()); + accountRepository = new XmppAccountRepository(dataStore, Schedulers.io(), Schedulers.trampoline()); accountRepository.mapping = new AccountMapping(); + directChatRepository = new XmppDirectChatRepository(dataStore, Schedulers.io(), Schedulers.trampoline()); + } @Test @@ -51,9 +90,25 @@ public class AccountRepositoryTest { account.setEnabled(true); account.setAuthentication(new PasswordAuthentication("swordfish")); - TestObserver testObserver = accountRepository.insertAccount(account) - .subscribeWith(new TestObserver<>()); + Peer peer = new IPeer(); + peer.setName("Test Peer"); + peer.setAddress("peer@peer.peer"); + peer.setAccount(account); - testObserver.getEvents(); + DirectChat directChat = new IDirectChat(); + directChat.setPeer(peer); + directChat.setAccount(account); + + //Account model = accountRepository.insertAccount(account).blockingGet(); + //assertEquals(1, model.getId()); + + DirectChat model = directChatRepository.insertDirectChat(directChat) + .blockingGet(); + assertEquals(1, model.getId()); + } + + @After + public void teardown() { + dataStore.close(); } }