Tinker with junit database test

This commit is contained in:
Paul Schaub 2019-11-29 00:43:41 +01:00
parent 787484ebdd
commit abf4b59500
Signed by: vanitasvitae
GPG Key ID: 62BEE9264BF17311
1 changed files with 61 additions and 6 deletions

View File

@ -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<Persistable> 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<Account> 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();
}
}