package io.rx_cache2.internal.migration; import io.reactivex.Observable; import io.reactivex.observers.TestObserver; import io.rx_cache2.Migration; import io.rx_cache2.SchemeMigration; import io.rx_cache2.internal.Jolyglot$; import io.rx_cache2.internal.RxCache; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class ProvidersRxCacheMigrationsTest { @ClassRule static public TemporaryFolder temporaryFolder = new TemporaryFolder(); @Test public void _1_Populate_Mocks() { populateMocks(); } @Test public void _2_When_Migrations_Working_Request_Will_Be_Hold_Until_Finish() { int countFiles = temporaryFolder.getRoot().listFiles().length; assert countFiles > 0; ProvidersMigrations providersMigrations = new RxCache.Builder() .persistence(temporaryFolder.getRoot(), Jolyglot$.newInstance()) .using(ProvidersMigrations.class); TestObserver<List<Mock1>> testObserver = providersMigrations.getMocks(Observable.just(Arrays.asList(new Mock1()))).test(); testObserver.awaitTerminalEvent(); testObserver.assertNoErrors(); testObserver.assertValueCount(1); } private void populateMocks() { Providers providers = new RxCache.Builder() .persistence(temporaryFolder.getRoot(), Jolyglot$.newInstance()) .using(Providers.class); TestObserver<List<Mock1>> testObserver = providers.getMocks(getMocks()).test(); testObserver.awaitTerminalEvent(); assertThat(testObserver.values().get(0).size(), is(SIZE_MOCKS)); } private static int SIZE_MOCKS = 1000; private Observable<List<Mock1>> getMocks() { List<Mock1> mocks = new ArrayList<>(); for (int i = 0; i < SIZE_MOCKS; i++) { mocks.add(new Mock1()); } return Observable.just(mocks); } private interface Providers { Observable<List<Mock1>> getMocks(Observable<List<Mock1>> mocks); } @SchemeMigration({@Migration(version = 1, evictClasses = Mock1.class)}) private interface ProvidersMigrations { Observable<List<Mock1>> getMocks(Observable<List<Mock1>> mocks); } public static class Mock1 { private final String payload = "Lorem Ipsum is simply dummy text of the printing and " + "typesetting industry. Lorem Ipsum has been the industry's standard dummy text " + "ever since the 1500s, when an unknown printer took a galley of type and scrambled " + "it to make a type specimen book. It has survived not only five centuries"; public Mock1() { } public String getPayload() { return payload; } } }