Skip to content

Commit bf2800d

Browse files
committed
Added test for create action
1 parent 21ba4c4 commit bf2800d

File tree

5 files changed

+66
-15
lines changed

5 files changed

+66
-15
lines changed

springfox-grails/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ dependencies {
5555
provided "org.springframework:spring-context:$spring"
5656
provided "org.grails:grails-core:$grails"
5757
provided "org.grails:grails-web-url-mappings:$grails"
58+
provided "org.grails:grails-web-url-mappings:$grails"
59+
provided 'javax.servlet:javax.servlet-api:3.1.0'
5860

5961
compile "com.google.guava:guava:${guava}"
6062
compile "com.fasterxml:classmate:${classmate}"

springfox-grails/src/test/groovy/springfox/documentation/grails/AController.groovy

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
package springfox.documentation.grails
22

3-
import grails.web.Action
3+
import grails.rest.RestfulController
44

5-
6-
class AController {
7-
8-
@Action
9-
def index() {
10-
}
11-
12-
@Action
13-
def show() {
5+
class AController extends RestfulController<ADomain> {
6+
AController(Class<ADomain> resource) {
7+
super(resource, false)
148
}
159

1610
def nonAction() {

springfox-grails/src/test/groovy/springfox/documentation/grails/ActionsSpec.groovy

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@ class ActionsSpec extends Specification implements GrailsControllerSupport {
1717
when:
1818
def handlerMethods = Actions.actionsToHandler(controller)
1919
then:
20-
handlerMethods.size() == 2
20+
handlerMethods.size() == 8
2121
handlerMethods.containsKey("index")
2222
handlerMethods.containsKey("show")
23-
and:
24-
handlerMethods["index"].method.name == "index"
25-
handlerMethods["show"].method.name == "show"
23+
handlerMethods.containsKey("create")
24+
handlerMethods.containsKey("update")
25+
handlerMethods.containsKey("save")
26+
handlerMethods.containsKey("edit")
27+
handlerMethods.containsKey("patch")
28+
handlerMethods.containsKey("delete")
2629
}
2730
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package springfox.documentation.grails
2+
3+
import com.fasterxml.classmate.TypeResolver
4+
import grails.core.GrailsControllerClass
5+
import grails.core.GrailsDomainClass
6+
import grails.core.GrailsDomainClassProperty
7+
import org.springframework.http.MediaType
8+
import org.springframework.web.bind.annotation.RequestMethod
9+
import spock.lang.Specification
10+
11+
class CreateActionSpecificationFactorySpec extends Specification {
12+
def controller = Mock(GrailsControllerClass)
13+
def domain = Mock(GrailsDomainClass)
14+
def identifierProperty = Mock(GrailsDomainClassProperty)
15+
16+
def setup() {
17+
controller.clazz >> AController
18+
domain.clazz >> ADomain
19+
domain.identifier >> identifierProperty
20+
domain.identifier.type >> Integer
21+
}
22+
23+
def "Create action produces action specification" () {
24+
given:
25+
def resolver = new TypeResolver()
26+
def sut = new CreateActionSpecificationFactory(resolver)
27+
when:
28+
def spec = sut.create(new GrailsActionContext(controller, domain, "create"))
29+
then:
30+
spec.consumes == [MediaType.APPLICATION_JSON] as Set
31+
spec.produces == [MediaType.APPLICATION_JSON] as Set
32+
spec.supportedMethods == [RequestMethod.PUT, RequestMethod.POST] as Set
33+
spec.parameters.size() == 1
34+
spec.parameters[0].parameterType == resolver.resolve(ADomain)
35+
spec.parameters[0].parameterIndex == 1
36+
spec.parameters[0].defaultName().isPresent()
37+
spec.parameters[0].defaultName().get() == "body"
38+
spec.returnType == resolver.resolve(ADomain)
39+
spec.handlerMethod.method == AController.methods.find {it.name == "create" }
40+
}
41+
42+
def "Index action throws exception when action is not found" () {
43+
given:
44+
def resolver = new TypeResolver()
45+
def sut = new CreateActionSpecificationFactory(resolver)
46+
when:
47+
sut.create(new GrailsActionContext(controller, domain, "unknown"))
48+
then:
49+
def exception = thrown(NullPointerException)
50+
exception.message.contains("Handler method is null")
51+
}
52+
}

springfox-grails/src/test/groovy/springfox/documentation/grails/ShowActionSpecificationFactorySpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class ShowActionSpecificationFactorySpec extends Specification {
4242
def "Index action throws exception when action is not found" () {
4343
given:
4444
def resolver = new TypeResolver()
45-
def sut = new IndexActionSpecificationFactory(resolver)
45+
def sut = new ShowActionSpecificationFactory(resolver)
4646
when:
4747
sut.create(new GrailsActionContext(controller, domain, "unknown"))
4848
then:

0 commit comments

Comments
 (0)