Mercury-IM/persistence-room/src/androidTest/java/org/mercury_im/messenger/persistence/room/ExampleInstrumentedTest.java

112 lines
4.3 KiB
Java

package org.mercury_im.messenger.persistence.room;
import android.util.Log;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mercury_im.messenger.persistence.room.model.RoomAccountModel;
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
import org.mercury_im.messenger.persistence.room.model.RoomContactModel;
import org.mercury_im.messenger.persistence.room.model.RoomEntityModel;
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest extends AbstractDatabaseTest {
@Test
public void testUpsertContact1() {
RoomAccountModel accountModel = new RoomAccountModel();
accountModel.setJid(TEST_JID_JULIET);
accountRepository.insertAccount(accountModel).test().assertValue(1L).dispose();
RoomContactModel contactModel = new RoomContactModel();
RoomEntityModel entityModel = new RoomEntityModel();
entityModel.setAccountId(1);
entityModel.setJid(TEST_JID_ROMEO);
contactModel.setEntity(entityModel);
rosterRepository.upsertContact(contactModel).test().assertValue(1L).dispose();
rosterRepository.maybeGetContact(1L).subscribe(contact -> {
System.out.println(contact.getEntity().getAccountId() + " " + contact.getEntity().getJid().toString());
}).dispose();
rosterRepository.upsertContact(contactModel).test().assertValue(1L).dispose();
rosterRepository.maybeGetContact(1L).subscribe(contact -> {
System.out.println(contact.getEntity().getAccountId() + " " + contact.getEntity().getJid().toString());
}).dispose();
}
@Test
public void testGetOrCreateEntity() {
RoomAccountModel accountModel = new RoomAccountModel();
accountModel.setJid(TEST_JID_JULIET);
accountRepository.insertAccount(accountModel).test().assertValue(1L).dispose();
RoomEntityModel romeo = rosterRepository.getOrCreateEntityForAccountAndJid(accountModel, TEST_JID_ROMEO).blockingGet();
RoomEntityModel mercu = rosterRepository.getOrCreateEntityForAccountAndJid(accountModel, TEST_JID_MERCUTIO).blockingGet();
}
@Test
public void testObservabilityOfChat() throws InterruptedException {
RoomAccountModel accountModel = new RoomAccountModel();
accountModel.setJid(TEST_JID_JULIET);
accountRepository.insertAccount(accountModel).test().assertValue(1L).dispose();
Observable<RoomChatModel> chat = chatRepository.getOrCreateChatWith(accountModel.getId(), TEST_JID_ROMEO);
Disposable disposable = chat.subscribe(chatModel -> Log.d(AppDatabase.TAG, "onNext: " + chatModel));
RoomChatModel chatModel = chatRepository.newChatModel();
chatModel.setId(1L);
chatModel.setPeerEntityId(1L);
chatModel.setActive(true);
chatRepository.updateChat(chatModel).blockingAwait();
chatModel.setActive(false);
chatRepository.updateChat(chatModel).blockingAwait();
chatModel.setActive(true);
chatRepository.updateChat(chatModel).blockingAwait();
Thread.sleep(100);
disposable.dispose();
Thread.sleep(100);
}
@Test
public void testUpsertContact() throws InterruptedException {
RoomAccountModel accountModel = new RoomAccountModel();
accountModel.setJid(TEST_JID_ROMEO);
accountRepository.insertAccount(accountModel).test().assertValue(1L).dispose();
RoomContactModel contact = new RoomContactModel();
contact.setRosterName("A");
RoomEntityModel entity = new RoomEntityModel();
entity.setJid(TEST_JID_JULIET);
entity.setAccountId(1L);
contact.setEntity(entity);
rosterRepository.upsertContact(contact).test().assertValue(1L).dispose();
Thread.sleep(100);
contact.setId(0);
contact.setRosterName("B");
contact.getEntity().setId(0);
contact.setEntityId(0);
rosterRepository.upsertContact(contact).test().assertValue(1L).dispose();
rosterRepository.getAllContacts().subscribe(System.out::println);
Thread.sleep(200);
}
}