forked from slick/slick
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMutateTest.scala
57 lines (46 loc) · 1.67 KB
/
MutateTest.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package org.scalaquery.test
import org.junit.Test
import org.junit.Assert._
import org.scalaquery.ql._
import org.scalaquery.ql.TypeMapper._
import org.scalaquery.ql.extended.{ExtendedTable => Table}
import org.scalaquery.session._
import org.scalaquery.session.Database.threadLocalSession
import org.scalaquery.test.util._
import org.scalaquery.test.util.TestDB._
object MutateTest extends DBTestObject(H2Mem, Postgres, MySQL, DerbyMem, HsqldbMem, MSAccess, SQLServer)
class MutateTest(tdb: TestDB) extends DBTest(tdb) {
import tdb.driver.Implicit._
@Test def test() {
object Users extends Table[(Int,String,String)]("users") {
def id = column[Int]("id", O PrimaryKey)
def first = column[String]("first")
def last = column[String]("last")
def * = id ~ first ~ last
}
db withSession {
Users.ddl.create
Users insertAll(
(1, "Marge", "Bouvier"),
(2, "Homer", "Simpson"),
(3, "Bart", "Simpson"),
(4, "Carl", "Carlson")
)
println("Before mutating:")
Query(Users).foreach(u => println(" "+u))
val q1 = for(u <- Users if u.last === "Simpson" || u.last === "Bouvier") yield u
q1.mutate { m =>
println("***** Row: "+m.row)
if(m.row._3 == "Bouvier") m.row = m.row.copy(_3 = "Simpson")
else if(m.row._2 == "Homer") m.delete()
else if(m.row._2 == "Bart") m.insert((42, "Lisa", "Simpson"))
}
println("After mutating:")
Query(Users).foreach(u => println(" "+u))
assertEquals(
Set("Marge Simpson", "Bart Simpson", "Lisa Simpson", "Carl Carlson"),
(for(u <- Users) yield u.first ++ " " ++ u.last).list.toSet
)
}
}
}