package org.jooby.issues;
import static org.junit.Assert.assertEquals;
import org.jooby.rx.Rx;
import org.jooby.rx.RxJdbc;
import org.jooby.test.ServerFeature;
import org.junit.Test;
import com.github.davidmoten.rx.jdbc.Database;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValueFactory;
public class Issue351 extends ServerFeature {
{
use(ConfigFactory.empty()
.withValue("db", ConfigValueFactory.fromAnyRef("mem")));
use(new RxJdbc());
onStart(r -> {
Database db = r.require(Database.class);
db.update("create table something (id int primary key, name varchar(100))")
.execute();
db.update("insert into something (id, name) values (?, ?)")
.parameters(1, "jooby")
.execute();
});
get("/351/reactive", req ->
req.require(Database.class)
.select("select name from something where id = :id")
.parameter("id", 1)
.getAs(String.class)
).map(Rx.rx());
get("/351/blocking", req -> {
return req.require(Database.class)
.select("select name from something where id = :id")
.parameter("id", 1)
.getAs(String.class)
.toBlocking()
.single();
});
get("/db", req -> {
assertEquals(req.require(Database.class), req.require(Database.class));
return "OK";
});
}
@Test
public void rxjdbc() throws Exception {
request().get("/351/reactive")
.expect("jooby");
}
@Test
public void rxjdbcBlocking() throws Exception {
request().get("/351/blocking")
.expect("jooby");
}
@Test
public void singletondb() throws Exception {
request().get("/db")
.expect("OK");
}
}