Skip to content

Commit 37c55bf

Browse files
committed
Added test for method backed spec
1 parent 978dfd6 commit 37c55bf

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
package springfox.documentation.grails
22

33
import grails.rest.RestfulController
4+
import grails.web.Action
45

56
class AController extends RestfulController<ADomain> {
67
AController(Class<ADomain> resource) {
78
super(resource, false)
89
}
910

11+
@Action
12+
ADomain other(Integer first, ADomain domain) {
13+
14+
}
15+
16+
1017
def nonAction() {
1118

1219
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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 grails.web.mapping.LinkGenerator
8+
import grails.web.mapping.UrlMapping
9+
import grails.web.mapping.UrlMappings
10+
import org.springframework.web.bind.annotation.RequestMethod
11+
import spock.lang.Specification
12+
13+
class MethodBackedActionSpecificationFactorySpec extends Specification {
14+
def resolver = new TypeResolver()
15+
def controller = Mock(GrailsControllerClass)
16+
def domain = Mock(GrailsDomainClass)
17+
def identifierProperty = Mock(GrailsDomainClassProperty)
18+
def links = Mock(LinkGenerator)
19+
def urlMappings = Mock(UrlMappings)
20+
GrailsActionAttributes actionAttributes
21+
22+
def setup() {
23+
controller.clazz >> AController
24+
controller.name >> "A"
25+
domain.clazz >> ADomain
26+
domain.identifier >> identifierProperty
27+
domain.identifier.type >> Integer
28+
actionAttributes = new GrailsActionAttributes(links, urlMappings)
29+
}
30+
31+
def "Resolves all method backed actions"() {
32+
given:
33+
def sut = new MethodBackedActionSpecificationFactory(resolver, actionAttributes)
34+
and:
35+
urlMappings.urlMappings >> [otherMapping(Mock(UrlMapping))]
36+
when:
37+
def spec = sut.create(new GrailsActionContext(controller, domain, "other"))
38+
then:
39+
spec.consumes == [] as Set
40+
spec.produces == [] as Set
41+
spec.supportedMethods == [RequestMethod.POST] as Set
42+
spec.parameters.size() == 2
43+
spec.parameters[0].parameterType == resolver.resolve(Integer)
44+
spec.parameters[0].parameterIndex == 0
45+
spec.parameters[0].defaultName().isPresent()
46+
spec.parameters[0].defaultName().get() == "first"
47+
48+
spec.parameters[1].parameterType == resolver.resolve(ADomain)
49+
spec.parameters[1].parameterIndex == 1
50+
spec.parameters[1].defaultName().isPresent()
51+
spec.parameters[1].defaultName().get() == "domain"
52+
spec.returnType == resolver.resolve(ADomain)
53+
spec.handlerMethod.method == AController.methods.find {it.name == "other" }
54+
}
55+
56+
def otherMapping(UrlMapping urlMapping) {
57+
urlMapping.controllerName >> "A"
58+
urlMapping.actionName >> "other"
59+
urlMapping.httpMethod >> "POST"
60+
urlMapping
61+
urlMapping
62+
}
63+
}

0 commit comments

Comments
 (0)