GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / groovy / org / codehaus / groovy / grails / orm / hibernate / BidirectionalOnetoManyWithInheritanceRelationshipManagementTests.groovy
blob5853f78d0ffe677261275e2d87b8f64cb8132839
1 package org.codehaus.groovy.grails.orm.hibernate
3 import org.codehaus.groovy.grails.commons.GrailsDomainClass
5 /**
6 * Longest class name in history!
8 * @author Graeme Rocher
9 * @since 1.0
11 * Created: Mar 13, 2008
13 class BidirectionalOnetoManyWithInheritanceRelationshipManagementTests extends AbstractGrailsHibernateTests {
15 protected void onSetUp() {
16 gcl.parseClass '''
17 class BidirectionalOnetoManyManySide {
18 Long id
19 Long version
20 Set oneSides
21 static hasMany = [oneSides:BidirectionalOnetoManyOneSide]
23 class BidirectionalOnetoManySubManySide extends BidirectionalOnetoManyManySide {
26 class BidirectionalOnetoManyOneSide {
27 Long id
28 Long version
29 BidirectionalOnetoManyManySide manySide
30 static belongsTo = [manySide:BidirectionalOnetoManyManySide]
33 '''
38 void testRelationshipManagementMethods() {
39 GrailsDomainClass manySideClass = ga.getDomainClass("BidirectionalOnetoManyManySide")
40 GrailsDomainClass oneSideClass = ga.getDomainClass("BidirectionalOnetoManyOneSide")
41 GrailsDomainClass subManySideClass = ga.getDomainClass("BidirectionalOnetoManySubManySide")
43 def collection = subManySideClass.getPropertyByName("oneSides")
45 assert collection
47 assertTrue collection.isBidirectional()
48 def otherSide = collection.getOtherSide()
50 assert otherSide
53 def manySide = manySideClass.newInstance()
54 def oneSide1 = oneSideClass.newInstance()
56 manySide.addToOneSides(oneSide1)
57 manySide.save(flush:true) // OK
58 assertTrue "1", manySide.oneSides?.size() == 1 // OK
59 assertTrue "2", oneSide1.manySide != null // OK
60 assertTrue "3", oneSide1.manySide?.id == manySide.id // OK
62 def subManySide = subManySideClass.newInstance()
63 def oneSide2 = oneSideClass.newInstance()
65 subManySide.addToOneSides(oneSide2)
66 assertTrue "4", subManySide.oneSides?.size() == 1 // OK
67 assertTrue "5", oneSide2.manySide != null // NG
68 assertTrue "6", oneSide2.manySide?.id == subManySide.id
69 subManySide.save(flush:true)