package com.github.davidmoten.rx.jdbc; import java.util.concurrent.TimeUnit; import org.junit.Test; import rx.Observable; import rx.functions.Func2; public class DatabaseAsyncTest extends DatabaseTestBase { public DatabaseAsyncTest() { super(true); } @Test public void testDependsUsingAsynchronousQueriesWaitsForFirstByDelayingCalculation() { Database db = db().asynchronous(); Observable<Integer> insert = db.update("insert into person(name,score) values(?,?)") .parameters("JOHN", 45).count() .zipWith(Observable.interval(100, TimeUnit.MILLISECONDS), new Func2<Integer, Long, Integer>() { @Override public Integer call(Integer t1, Long t2) { return t1; } }); Observable<Integer> count = db.select("select name from person").dependsOn(insert).count(); assertIs(4, count); } }