Let's say that we have two domain classes Book.groovy
and Library.groovy
.
// Book.groovy
package com.example.book
class Book {
static constraint = {
name blank: false, size: 2..255, unique: true
}
static belongsTo = [lib: Library]
String name
}
// Library.groovy
package com.example.library
class Library {
static hasMany = [book: Book, branch: Branch]
static constraints = {
name blank: false
place blank: false
}
String name
String place
}
To unit test Book
class we need to create an object of Library
class since Book
'belongsTo'
library
with a back reference.
So our unit test will be:
// BookUnitTests.groovy
package com.example.book
import grails.test.*
import com.example.library.*
class BookUnitTests extends GrailsUnitTestCase {
def b // book
def lib // library
protected void setUp() {
super.setUp()
lib = new Library(name: "My Library", place: "XYZ Ave")
mockForConstraintsTests(Book)
}
protected void tearDown() {
super.tearDown()
}
void testPass() {
b = new Book(name: "MyBook", lib: lib) // pass the Library object to which the book belongs to.
assert b.validate()
}
}