Mercury-IM/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java

84 lines
2.3 KiB
Java

package org.mercury_im.messenger.data.repository;
import org.junit.Test;
import org.mercury_im.messenger.data.di.DaggerInMemoryDatabaseComponent;
import org.mercury_im.messenger.data.di.InMemoryDatabaseComponent;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.entity.IAccount;
import org.mercury_im.messenger.entity.PasswordAuthentication;
import javax.inject.Inject;
import io.reactivex.disposables.CompositeDisposable;
import io.requery.Persistable;
import io.requery.reactivex.ReactiveEntityStore;
public class AccountRepositoryTest {
@Inject
ReactiveEntityStore<Persistable> dataStore;
@Inject
XmppAccountRepository accountRepository;
@Inject
XmppDirectChatRepository directChatRepository;
@Inject
XmppPeerRepository contactRepository;
@Inject
XmppMessageRepository messageRepository;
@Inject
public AccountRepositoryTest() {
InMemoryDatabaseComponent testComponent = DaggerInMemoryDatabaseComponent.builder()
.build();
testComponent.inject(this);
}
@Test
public void test() throws InterruptedException {
CompositeDisposable d = new CompositeDisposable();
d.add(accountRepository.observeAccounts()
.distinct(Account::getId)
.subscribe(a -> System.out.println("Observe: " + a.getAddress())));
Thread.sleep(100);
Account a1 = new IAccount();
a1.setAddress("a1@example.com");
a1.setAuthentication(new PasswordAuthentication("a1a1a1"));
a1.setEnabled(true);
d.add(accountRepository.insertAccount(a1).subscribe());
Thread.sleep(100);
a1.setId(1);
Account a2 = new IAccount();
a2.setAddress("a2@example.com");
a2.setAuthentication(new PasswordAuthentication("a2a2a2"));
a2.setEnabled(false);
d.add(accountRepository.insertAccount(a2).subscribe());
Thread.sleep(100);
Account a3 = new IAccount();
a3.setAddress("a3@example.com");
a3.setAuthentication(new PasswordAuthentication("a3a3a3"));
a3.setEnabled(false);
d.add(accountRepository.insertAccount(a3).subscribe());
Thread.sleep(100);
a1.setAddress("a11@example.org");
d.add(accountRepository.updateAccount(a1).subscribe());
Thread.sleep(100);
}
}