Groovy for Domain-specific Languages - Second Edition

(nextflipdebug2) #1
Chapter 9

[ 231 ]

void "belongsTo causes cascaded delete"() {
given:
def addr = new Address(street:"1 Rock Road", city:"Bedrock")
def id = new Identity(email:"email", password:"password")
def fred = new CustomerHasIdentity(firstName:"Fred",
lastName:"Flintstone",
address:addr,identity:id)


addr.save(flush:true, failOnError: true)


expect: "Only an address is saved"
CustomerHasIdentity.count() == 0
Address.count() == 1
Identity.count() == 0


when:
fred.save(flush:true, failOnError: true)


then: "Customer is save and save was cascaded to Identity"
CustomerHasIdentity.count() == 1
Address.count() == 1
Identity.count() == 1


when:
fred.delete(flush:true, failOnError: true)


then: "Customer deleted an delete was cascaded to identity"
CustomerHasIdentity.count() == 0
Address.count() == 1
Identity.count() == 0


when:
addr.delete(flush:true, failOnError: true)


then: "Now everything is deleted"
CustomerHasIdentity.count() == 0
Address.count() == 0
Identity.count() == 0
}

Free download pdf