GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / test / groovy / org / codehaus / groovy / grails / orm / hibernate / CascadingDeleteBehaviourTests.groovy
blob42f1efc7b1909ed73a00728e8fff7d0ff7b03d87
1 /**
2 * Class description here.
4 * @author Graeme Rocher
5 * @since 0.4
7 * Created: Jul 23, 2007
8 * Time: 4:46:49 PM
9 *
12 package org.codehaus.groovy.grails.orm.hibernate
14 import org.codehaus.groovy.grails.commons.GrailsDomainClass
16 class CascadingDeleteBehaviourTests extends AbstractGrailsHibernateTests {
20 void testDeleteToOne() {
21 def companyClass = ga.getDomainClass("Company")
22 def projectClass = ga.getDomainClass("Project")
23 def memberClass = ga.getDomainClass("Member")
24 def c = companyClass.newInstance()
25 def p = projectClass.newInstance()
26 def m = memberClass.newInstance()
27 c.save()
28 p.company = c
29 p.member = m
30 p.save()
32 session.flush()
34 p.delete()
35 session.flush() \
37 assertEquals 1, companyClass.clazz.count()
38 assertEquals 0, memberClass.clazz.count()
39 assertEquals 0, projectClass.clazz.count()
43 void testDeleteToManyUnidirectional() {
44 def companyClass = ga.getDomainClass("Company")
45 def locationClass = ga.getDomainClass("Location")
46 def personClass = ga.getDomainClass("Person")
48 def c = companyClass.newInstance()
50 c.addToLocations(locationClass.newInstance())
51 c.addToPeople(personClass.newInstance())
52 c.save()
53 session.flush()
55 assertEquals 1, companyClass.clazz.count()
56 assertEquals 1, locationClass.clazz.count()
57 assertEquals 1, personClass.clazz.count()
59 c.delete()
60 session.flush()
62 assertEquals 0, companyClass.clazz.count()
63 assertEquals 1, locationClass.clazz.count()
64 assertEquals 0, personClass.clazz.count()
68 void testDomainModel() {
69 GrailsDomainClass companyClass = ga.getDomainClass("Company")
70 GrailsDomainClass memberClass = ga.getDomainClass("Member")
71 GrailsDomainClass projectClass = ga.getDomainClass("Project")
72 GrailsDomainClass locationClass = ga.getDomainClass("Location")
73 GrailsDomainClass personClass = ga.getDomainClass("Person")
76 assert !companyClass.isOwningClass(memberClass.clazz)
77 assert !companyClass.isOwningClass(projectClass.clazz)
78 assert !companyClass.isOwningClass(locationClass.clazz)
79 assert !companyClass.isOwningClass(personClass.clazz)
81 assert !projectClass.isOwningClass(companyClass.clazz)
82 assert !projectClass.isOwningClass(memberClass.clazz)
83 assert !projectClass.isOwningClass(locationClass.clazz)
84 assert !projectClass.isOwningClass(personClass.clazz)
86 assert memberClass.isOwningClass(projectClass.clazz)
87 assert !memberClass.isOwningClass(companyClass.clazz)
88 assert !memberClass.isOwningClass(personClass.clazz)
89 assert !memberClass.isOwningClass(locationClass.clazz)
91 assert personClass.isOwningClass(companyClass.clazz)
92 assert !personClass.isOwningClass(locationClass.clazz)
93 assert !personClass.isOwningClass(memberClass.clazz)
94 assert !personClass.isOwningClass(projectClass.clazz)
99 void onSetUp() {
100 this.gcl.parseClass('''
101 class Company {
102 Long id
103 Long version
105 static hasMany = [locations:Location, people:Person]
106 Set locations
107 Set people
109 class Person {
110 Long id
111 Long version
112 static belongsTo = Company
114 class Location {
115 Long id
116 Long version
118 class Project {
119 Long id
120 Long version
122 Company company
123 Member member
125 class Member {
126 Long id
127 Long version
129 static belongsTo = Project