I am using slick 3 and I am trying to perform some integration tests with some inserts, some code that uses the db and then I want to rollback all the insert or deletion at the end of the test itself but I cannot find any documentation about it.
Is it possible? How can I achieve it?
2 Answers
Answers 1
I can advice to drop and create table schema before and after test using BeforeAndAfter
scala-test trait with next code:
def createTable(): Future[Unit] = { db.run(DBIO.seq( MTable.getTables.map(tables => if (!tables.exists(_.name.name == table.baseTableRow.tableName)) db.run(table.schema.create) ) )) } def dropTable(): Future[Unit] = db.run(table.schema.drop)
Answers 2
You need to use . transactionally
around the DBIOAction
eg
val a = (for { ns <- coffees.filter(_.name.startsWith("ESPRESSO")).map(_.name).result _ <- DBIO.seq(ns.map(n => coffees.filter(_.name === n).delete): _*) } yield ()).transactionally val f: Future[Unit] = db.run(a)
For more see http://slick.typesafe.com/doc/3.1.1/dbio.html#transactions-and-pinned-sessions
0 comments:
Post a Comment