-
Notifications
You must be signed in to change notification settings - Fork 275
/
OneToManySpecs.scala
67 lines (53 loc) · 1.94 KB
/
OneToManySpecs.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
58
59
60
61
62
63
64
65
66
67
/*
* Copyright 2009-2010 WorldWide Conferencing, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.liftweb {
package mapper {
import org.specs._
import _root_.org.specs.runner.{JUnit3, ConsoleRunner}
class OneToManySpecsAsTest extends JUnit3(OneToManySpecs)
object OneToManySpecsRunner extends ConsoleRunner(OneToManySpecs)
object OneToManySpecs extends Specification {
val provider = DbProviders.H2MemoryProvider
private def ignoreLogger(f: => AnyRef): Unit = ()
def setupDB {
MapperRules.createForeignKeys_? = c => false
provider.setupDB
Schemifier.destroyTables_!!(ignoreLogger _, Contact, Phone)
Schemifier.schemify(true, ignoreLogger _, Contact, Phone)
}
"OneToMany" should {
"detect all MappedOneToMany fields" in {
setupDB
val contact = Contact.create
val fields = contact.oneToManyFields
fields.length must_== 1
fields(0).asInstanceOf[Any] must_== contact.phones
}
}
}
class Contact extends LongKeyedMapper[Contact] with IdPK with OneToMany[Long, Contact] {
def getSingleton = Contact
object phones extends MappedOneToMany(Phone, Phone.contact)
}
object Contact extends Contact with LongKeyedMetaMapper[Contact]
class Phone extends LongKeyedMapper[Phone] with IdPK {
def getSingleton = Phone
object contact extends LongMappedMapper(this, Contact)
object number extends MappedString(this, 10)
}
object Phone extends Phone with LongKeyedMetaMapper[Phone]
}
}