@@ -248,7 +248,12 @@ class SchoolDb extends Schema {
248248 super .drop
249249 }
250250
251+ def studentTransform (s : Student ) = {
252+ new Student (s.name, s.lastName, s.age, ((s.gender % 2 ) + 1 ), s.addressId, s.isMultilingual)
253+ }
254+
251255 val beforeInsertsOfPerson = new ArrayBuffer [Person ]
256+ val transformedStudents = new ArrayBuffer [Student ]
252257 val beforeInsertsOfKeyedEntity = new ArrayBuffer [KeyedEntity [_]]
253258 val beforeInsertsOfProfessor = new ArrayBuffer [Professor ]
254259 val afterInsertsOfProfessor = new ArrayBuffer [Professor ]
@@ -259,6 +264,9 @@ class SchoolDb extends Schema {
259264 val professorsCreatedWithFactory = new ArrayBuffer [Int ]
260265
261266 override def callbacks = Seq (
267+ // We'll change the gender of z1 z2 student
268+ beforeInsert[Student ]
269+ map(s => {if (s.name == " z1" && s.lastName == " z2" ){val s2 = studentTransform(s); transformedStudents.append(s2); s2} else s}),
262270
263271 beforeInsert[Person ]
264272 map(p => {beforeInsertsOfPerson.append(p); p}),
@@ -643,10 +651,14 @@ abstract class SchoolDbTestRun extends SchoolDbTestBase {
643651 afterInsertsOfProfessor.clear
644652 beforeDeleteOfSchool.clear
645653 professorsCreatedWithFactory.clear
654+ transformedStudents.clear
646655
647656 val s1 = students.insert(new Student (" z1" , " z2" , Some (4 ), 1 , Some (4 ), Some (true )))
657+ val sOpt = from(students)(s => where(s.name === " z1" and s.lastName === " z2" ) select(s)).headOption
648658
659+ assert(sOpt.isDefined && sOpt.map(_.gender == 2 ).getOrElse(false ))
649660 assert(beforeInsertsOfPerson.exists(_ == s1))
661+ assert(transformedStudents.exists(_ == s1))
650662 assert(! beforeInsertsOfKeyedEntity.exists(_ == s1))
651663 assert(! beforeInsertsOfProfessor.exists(_ == s1))
652664 assert(! afterInsertsOfProfessor.exists(_ == s1))
0 commit comments