Skip to content

Commit

Permalink
first cut at a scaffolding template for testing CRUD generated contro…
Browse files Browse the repository at this point in the history
…llers
  • Loading branch information
graemerocher committed Apr 11, 2011
1 parent fcd7390 commit 603d31a
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,24 @@ class DefaultGrailsTemplateGenerator implements GrailsTemplateGenerator, Resourc
}
}

void generateTest(GrailsDomainClass domainClass, String destDir) {
File destFile = new File("$destDir/${domainClass.packageName.replace('.','/')}/${domainClass.shortName}ControllerTests.groovy")
def templateText = getTemplateText("Test.groovy")
def t = engine.createTemplate(templateText)

def binding = [packageName: domainClass.packageName,
domainClass: domainClass,
className: domainClass.shortName,
propertyName: domainClass.logicalPropertyName]

if(canWrite(destFile)) {
destFile.withWriter {
t.make(binding).writeTo(it)
}
}

}

void generateView(GrailsDomainClass domainClass, String viewName, Writer out) {
def templateText = getTemplateText("${viewName}.gsp")

Expand Down
1 change: 1 addition & 0 deletions grails-plugin-scaffolding/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
dependencies {
compile project(":grails-crud")
runtime project(":grails-resources")
}
jar.appendix = 'plugin-scaffolding'
50 changes: 25 additions & 25 deletions grails-resources/src/grails/templates/scaffolding/Test.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class ${className}ControllerTests {
void testCreate() {
def model = controller.create()

assert model.${propertyname}Instance != null
assert model.${propertyName}Instance != null


}
Expand All @@ -48,7 +48,7 @@ class ${className}ControllerTests {
controller.save()

assert controller.modelAndView != null
assert controller.modelAndView.model.${propertyname}Instance != null
assert controller.modelAndView.model.${propertyName}Instance != null
assert controller.modelAndView.viewName == '/${propertyName}/create'

// TODO: Populate valid properties
Expand All @@ -69,38 +69,38 @@ class ${className}ControllerTests {
assert response.redirectedUrl == '/${propertyName}/list'


def ${propertyname} = new ${className}()
def ${propertyName} = new ${className}()

// TODO: populate domain properties

assert ${propertyname}.save() != null
assert ${propertyName}.save() != null

params.id = ${propertyname}.id
params.id = ${propertyName}.id

def model = controller.show()

assert model.${propertyname}Instance == ${propertyname}
assert model.${propertyName}Instance == ${propertyName}
}

@Test
void testEdit() {
controller.edit()

assert flash.message != null
assert response.redirectedUrl == '/${propertyname}/list'
assert response.redirectedUrl == '/${propertyName}/list'


def ${propertyname} = new ${className}()
def ${propertyName} = new ${className}()

// TODO: populate valid domain properties

assert ${propertyname}.save() != null
assert ${propertyName}.save() != null

params.id = ${propertyname}.id
params.id = ${propertyName}.id

def model = controller.edit()

assert model.${propertyname}Instance == ${propertyname}
assert model.${propertyName}Instance == ${propertyName}
}

@Test
Expand All @@ -109,32 +109,32 @@ class ${className}ControllerTests {
controller.update()

assert flash.message != null
assert response.redirectedUrl == '/${propertyname}/list'
assert response.redirectedUrl == '/${propertyName}/list'

response.reset()


def ${propertyname} = new ${className}()
def ${propertyName} = new ${className}()

// TODO: populate valid domain properties

assert ${propertyname}.save() != null
assert ${propertyName}.save() != null

// test invalid parameters in update
params.id = ${propertyname}.id
params.id = ${propertyName}.id

controller.update()

assert controller.modelAndView != null
assert controller.modelAndView.viewName == "/${propertyname}/edit"
assert controller.modelAndView.model.${propertyname}Instance != null
assert controller.modelAndView.viewName == "/${propertyName}/edit"
assert controller.modelAndView.model.${propertyName}Instance != null

${propertyname}.clearErrors()
${propertyName}.clearErrors()

// TODO: populate valid domain form parameter
controller.update()

assert response.redirectedUrl == "/${propertyname}/show/\$${propertyname}.id"
assert response.redirectedUrl == "/${propertyName}/show/\$${propertyName}.id"
assert flash.message != null
}

Expand All @@ -143,23 +143,23 @@ class ${className}ControllerTests {
controller.delete()

assert flash.message != null
assert response.redirectedUrl == '/${propertyname}/list'
assert response.redirectedUrl == '/${propertyName}/list'

response.reset()

def ${propertyname} = new ${className}()
def ${propertyName} = new ${className}()

// TODO: populate valid domain properties
assert ${propertyname}.save() != null
assert ${propertyName}.save() != null
assert ${className}.count() == 1

params.id = ${propertyname}.id
params.id = ${propertyName}.id

controller.delete()

assert ${className}.count() == 0
assert ${className}.get(${propertyname}.id) == null
assert response.redirectedUrl == '/${propertyname}/list'
assert ${className}.get(${propertyName}.id) == null
assert response.redirectedUrl == '/${propertyName}/list'


}
Expand Down

0 comments on commit 603d31a

Please sign in to comment.