Skip to content

Commit 59784f2

Browse files
committed
Fixed the Action resolver test to test the right thing
1 parent 0cab0d9 commit 59784f2

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

springfox-grails/src/main/java/springfox/documentation/grails/ActionSpecificationResolver.java

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

3-
import grails.core.GrailsClass;
43
import org.springframework.beans.factory.annotation.Autowired;
54
import org.springframework.stereotype.Component;
65

@@ -18,17 +17,18 @@ public ActionSpecificationResolver(
1817
}
1918

2019
ActionSpecification resolve(GrailsActionContext context) {
21-
if (isRestfulController(context.getController())) {
20+
if (isRestfulController(context)) {
2221
return restfulActions.create(context);
2322
}
2423
return methodBackedActions.create(context);
2524
}
2625

2726
@SuppressWarnings({"unchecked", "squid:S1166"})
28-
private boolean isRestfulController(GrailsClass controllerClazz) {
27+
private boolean isRestfulController(GrailsActionContext context) {
2928
try {
3029
Class<?> restfulController = Class.forName("grails.rest.RestfulController");
31-
return restfulController.isAssignableFrom(controllerClazz.getClazz());
30+
return restfulController.isAssignableFrom(context.getController().getClazz())
31+
&& restfulActions.canHandle(context.getAction());
3232
} catch (ClassNotFoundException e) {
3333
return false;
3434
}

springfox-grails/src/main/java/springfox/documentation/grails/RestfulActionSpecificationFactory.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@ public RestfulActionSpecificationFactory(TypeResolver resolver) {
2020
@Override
2121
public ActionSpecification create(GrailsActionContext context) {
2222
Preconditions.checkArgument(
23-
factoryLookup.containsKey(context.getAction()),
23+
canHandle(context.getAction()),
2424
String.format("Action %s is not a restful action", context.getAction()));
2525

2626
return factoryLookup.get(context.getAction()).create(context);
2727
}
2828

29+
public boolean canHandle(String action) {
30+
return factoryLookup.containsKey(action);
31+
}
32+
2933
private static Map<String, ActionSpecificationFactory> restfulActions(TypeResolver resolver) {
3034
LinkedHashMap<String, ActionSpecificationFactory> map = new LinkedHashMap<>(8);
3135
map.put("index", new IndexActionSpecificationFactory(resolver));

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import grails.web.mapping.LinkGenerator
88
import grails.web.mapping.UrlMapping
99
import grails.web.mapping.UrlMappings
1010
import spock.lang.Specification
11+
import spock.lang.Unroll
1112

1213
class ActionSpecificationResolverSpec extends Specification {
1314
def resolver = new TypeResolver()
@@ -27,13 +28,16 @@ class ActionSpecificationResolverSpec extends Specification {
2728
actionAttributes = new GrailsActionAttributes(links, urlMappings)
2829
}
2930

30-
def "Resolves restful and method backed actions"() {
31+
@Unroll
32+
def "Resolves action #action"() {
3133
given:
32-
def sut = new MethodBackedActionSpecificationFactory(resolver, actionAttributes)
34+
def sut = new ActionSpecificationResolver(
35+
new RestfulActionSpecificationFactory(resolver),
36+
new MethodBackedActionSpecificationFactory(resolver, actionAttributes))
3337
and:
3438
urlMappings.urlMappings >> [otherMapping(Mock(UrlMapping))]
3539
when:
36-
def spec = sut.create(new GrailsActionContext(controller, domain, action))
40+
def spec = sut.resolve(new GrailsActionContext(controller, domain, action))
3741
then:
3842
spec != null
3943
spec.handlerMethod.method.name == action

0 commit comments

Comments
 (0)