Skip to content

Commit 94e0ba8

Browse files
committed
fix tests
1 parent c9030fb commit 94e0ba8

File tree

7 files changed

+31
-51
lines changed

7 files changed

+31
-51
lines changed

Diff for: src/main/java/graphql/annotations/annotationTypes/directives/definition/DirectiveWiring.java

-16
This file was deleted.

Diff for: src/main/java/graphql/annotations/annotationTypes/directives/definition/GraphQLDirectiveDefinition.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
/**
1212
* You should put this annotation on top of a directive method you created, or a directive java annotation you created
1313
*/
14-
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
14+
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE, ElementType.TYPE})
1515
@Retention(RetentionPolicy.RUNTIME)
1616
public @interface GraphQLDirectiveDefinition {
1717
Class<? extends AnnotationsDirectiveWiring> wiring();

Diff for: src/main/java/graphql/annotations/processor/GraphQLAnnotations.java

+12-10
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import graphql.annotations.annotationTypes.directives.definition.GraphQLDirectiveDefinition;
1818
import graphql.annotations.annotationTypes.GraphQLName;
19-
import graphql.annotations.annotationTypes.directives.definition.DirectiveWiring;
2019
import graphql.annotations.processor.directives.CommonPropertiesCreator;
2120
import graphql.annotations.processor.directives.DirectiveArgumentCreator;
2221
import graphql.annotations.processor.directives.DirectiveCreator;
@@ -35,6 +34,7 @@
3534
import graphql.schema.GraphQLInterfaceType;
3635
import graphql.schema.GraphQLObjectType;
3736

37+
import java.lang.annotation.Retention;
3838
import java.lang.reflect.Method;
3939
import java.util.Arrays;
4040
import java.util.HashSet;
@@ -142,13 +142,14 @@ public GraphQLObjectType object(Class<?> object, DirectiveAndWiring... directive
142142
}
143143

144144
public GraphQLDirective directive(Class<?> object) throws GraphQLAnnotationsException {
145+
if (!object.isAnnotationPresent(GraphQLDirectiveDefinition.class)){
146+
throw new GraphQLAnnotationsException(String.format("The supplied class %s is not annotated with a GraphQLDirectiveDefinition annotation", object.getSimpleName()), null);
147+
}
148+
145149
try {
146150
GraphQLDirective directive = this.directiveCreator.getDirective(object);
147-
DirectiveWiring annotation = object.getAnnotation(DirectiveWiring.class);
148-
if (annotation==null){
149-
throw new GraphQLAnnotationsException(String.format("No wiring is provided to directive class %s", object.getSimpleName()), null);
150-
}
151-
this.getContainer().getDirectiveRegistry().put(directive.getName(), new DirectiveAndWiring(directive, annotation.value()));
151+
GraphQLDirectiveDefinition annotation = object.getAnnotation(GraphQLDirectiveDefinition.class);
152+
this.getContainer().getDirectiveRegistry().put(directive.getName(), new DirectiveAndWiring(directive, annotation.wiring()));
152153
return directive;
153154
} catch (GraphQLAnnotationsException e) {
154155
this.getContainer().getProcessing().clear();
@@ -159,12 +160,13 @@ public GraphQLDirective directive(Class<?> object) throws GraphQLAnnotationsExce
159160

160161
//todo: add tests
161162
public GraphQLDirective directiveViaAnnotation(Class<?> annotationClass) {
163+
if (!annotationClass.isAnnotationPresent(GraphQLDirectiveDefinition.class) || !annotationClass.isAnnotationPresent(Retention.class)){
164+
throw new GraphQLAnnotationsException(String.format("The supplied class %s is not annotated with a GraphQLDirectiveDefinition and/or Retention annotation", annotationClass.getSimpleName()), null);
165+
}
166+
162167
try {
163168
GraphQLDirective directive = this.directiveCreator.getDirective(annotationClass);
164169
GraphQLDirectiveDefinition annotation = annotationClass.getAnnotation(GraphQLDirectiveDefinition.class);
165-
if (annotation==null){
166-
throw new GraphQLAnnotationsException(String.format("No wiring is provided to directive class %s", annotationClass.getSimpleName()), null);
167-
}
168170
this.getContainer().getDirectiveRegistry().put(directive.getName(), new DirectiveAndWiring(directive, annotation.wiring()));
169171
return directive;
170172
} catch (GraphQLAnnotationsException e) {
@@ -178,7 +180,7 @@ public GraphQLDirective directiveViaAnnotation(Class<?> annotationClass) {
178180
public Set<GraphQLDirective> directives(Class<?> directivesDeclarationClass) {
179181
Method[] methods = directivesDeclarationClass.getMethods();
180182
Set<GraphQLDirective> directiveSet = new HashSet<>();
181-
Arrays.stream(methods).filter(method -> method.isAnnotationPresent(GraphQLDirectiveDefinition.class))
183+
Arrays.stream(methods).sequential().filter(method -> method.isAnnotationPresent(GraphQLDirectiveDefinition.class))
182184
.forEach(method -> {
183185
try {
184186
DirectiveAndWiring directive = this.directiveCreator.getDirective(method);

Diff for: src/main/java/graphql/annotations/processor/directives/DirectiveCreator.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import graphql.introspection.Introspection;
2323
import graphql.schema.GraphQLDirective;
2424

25+
import java.lang.annotation.Retention;
26+
import java.lang.annotation.RetentionPolicy;
2527
import java.lang.reflect.AnnotatedElement;
2628
import java.lang.reflect.Method;
2729
import java.util.Arrays;
@@ -73,7 +75,7 @@ public DirectiveAndWiring getDirective(Method directiveMethod){
7375
}
7476

7577
private void buildArguments(GraphQLDirective.Builder builder, Class<?> annotatedClass) {
76-
if (annotatedClass.isAnnotationPresent(GraphQLDirectiveDefinition.class)){
78+
if (annotatedClass.isAnnotationPresent(Retention.class)){
7779
Arrays.stream(annotatedClass.getDeclaredMethods())
7880
.filter(method -> !method.isSynthetic())
7981
.forEach(method -> builder.argument(directiveArgumentCreator.getArgument(method)));

Diff for: src/test/java/graphql/annotations/AnnotationsSchemaCreatorTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
import graphql.annotations.annotationTypes.GraphQLDescription;
1818
import graphql.annotations.annotationTypes.GraphQLField;
1919
import graphql.annotations.annotationTypes.GraphQLName;
20+
import graphql.annotations.annotationTypes.directives.definition.GraphQLDirectiveDefinition;
2021
import graphql.annotations.directives.AnnotationsDirectiveWiring;
2122
import graphql.annotations.directives.AnnotationsWiringEnvironment;
2223
import graphql.annotations.annotationTypes.directives.definition.DirectiveLocations;
23-
import graphql.annotations.annotationTypes.directives.definition.DirectiveWiring;
2424
import graphql.annotations.processor.GraphQLAnnotations;
2525
import graphql.introspection.Introspection;
2626
import graphql.schema.GraphQLDirective;
@@ -119,9 +119,9 @@ public GraphQLFieldDefinition onField(AnnotationsWiringEnvironment environment)
119119

120120
@GraphQLName("testDirective")
121121
@DirectiveLocations({Introspection.DirectiveLocation.FIELD_DEFINITION})
122-
@DirectiveWiring(GeneralWiring.class)
122+
@GraphQLDirectiveDefinition(wiring = GeneralWiring.class)
123123
public static class DirectiveDefinitionTest {
124-
private boolean isActive = true;
124+
public boolean isActive = true;
125125
}
126126

127127
@Test
@@ -138,7 +138,7 @@ public void build_Directive_SchemaIsCreatedWithDirective() {
138138

139139
@GraphQLName("secondDirective")
140140
@DirectiveLocations(Introspection.DirectiveLocation.FIELD)
141-
@DirectiveWiring(GeneralWiring.class)
141+
@GraphQLDirectiveDefinition(wiring = GeneralWiring.class)
142142
public static class SecondDirective {
143143

144144
}

Diff for: src/test/java/graphql/annotations/GraphQLDirectiveCreationTest.java

+10-17
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@
1919
import graphql.annotations.annotationTypes.GraphQLName;
2020
import graphql.annotations.directives.AnnotationsDirectiveWiring;
2121
import graphql.annotations.annotationTypes.directives.definition.DirectiveLocations;
22-
import graphql.annotations.annotationTypes.directives.definition.DirectiveWiring;
2322
import graphql.annotations.processor.GraphQLAnnotations;
23+
import graphql.annotations.processor.exceptions.GraphQLAnnotationsException;
2424
import graphql.introspection.Introspection;
2525
import graphql.schema.GraphQLArgument;
2626
import graphql.schema.GraphQLDirective;
2727
import org.testng.annotations.BeforeMethod;
2828
import org.testng.annotations.Test;
2929

30+
import java.lang.annotation.Retention;
31+
import java.lang.annotation.RetentionPolicy;
3032
import java.util.Set;
3133

3234
import static graphql.Scalars.GraphQLBoolean;
@@ -54,7 +56,7 @@ public static class GeneralWiring implements AnnotationsDirectiveWiring {
5456
@GraphQLName("upper")
5557
@GraphQLDescription("makes string upper case")
5658
@DirectiveLocations({Introspection.DirectiveLocation.FIELD_DEFINITION, Introspection.DirectiveLocation.INTERFACE})
57-
@DirectiveWiring(GeneralWiring.class)
59+
@GraphQLDirectiveDefinition(wiring = GeneralWiring.class)
5860
public static class UpperDirective {
5961
private boolean isActive = true;
6062
@GraphQLName("suffixToAdd")
@@ -121,8 +123,8 @@ public void directive_suppliedDirectiveMethodContainer_returnCorrectDirective()
121123
// Act
122124
Set<GraphQLDirective> directive = this.graphQLAnnotations.directives(DirectivesMethodsContainer.class);
123125

124-
GraphQLDirective upper = (GraphQLDirective) directive.toArray()[1];
125-
GraphQLDirective suffix = (GraphQLDirective) directive.toArray()[0];
126+
GraphQLDirective upper = (GraphQLDirective) directive.toArray()[0];
127+
GraphQLDirective suffix = (GraphQLDirective) directive.toArray()[1];
126128

127129
// Assert
128130
assertEquals(upper.getName(), "upper");
@@ -151,13 +153,15 @@ public void directive_suppliedDirectiveMethodContainer_returnCorrectDirective()
151153
@GraphQLDescription("the upper")
152154
@GraphQLDirectiveDefinition(wiring = Wiring.class)
153155
@DirectiveLocations({Introspection.DirectiveLocation.FIELD_DEFINITION, Introspection.DirectiveLocation.INTERFACE})
156+
@Retention(RetentionPolicy.RUNTIME)
154157
@interface UpperAnnotation {
155158
@GraphQLName("isActive")
156159
@GraphQLDescription("is active")
157160
boolean isActive() default true;
158161
}
159162

160163
@GraphQLName("bla")
164+
@Retention(RetentionPolicy.RUNTIME)
161165
@interface NoDirectiveAnnotation {
162166
boolean isActive() default true;
163167
}
@@ -179,21 +183,10 @@ public void directive_suppliedDirectiveAnnotation_returnCorrectDirective() {
179183
assertEquals(true,isActive.getDefaultValue());
180184
}
181185

182-
@Test
183-
public void directive_suppliedNoDirectiveAnnotation_returnNull() {
186+
@Test(expectedExceptions = GraphQLAnnotationsException.class)
187+
public void directive_suppliedNoDirectiveAnnotation_throwException() {
184188
// Act
185189
GraphQLDirective upper = this.graphQLAnnotations.directiveViaAnnotation(NoDirectiveAnnotation.class);
186-
187-
// Assert
188-
assertEquals(upper.getName(), "upper");
189-
assertEquals(upper.getDescription(), "the upper");
190-
assertArrayEquals(upper.validLocations().toArray(), new Introspection.DirectiveLocation[]{Introspection.DirectiveLocation.FIELD_DEFINITION,
191-
Introspection.DirectiveLocation.INTERFACE});
192-
GraphQLArgument isActive = upper.getArgument("isActive");
193-
assertNotNull(isActive);
194-
assertEquals(isActive.getName(), "isActive");
195-
assertEquals(isActive.getType(), GraphQLBoolean);
196-
assertEquals(true,isActive.getDefaultValue());
197190
}
198191

199192

Diff for: src/test/java/graphql/annotations/GraphQLDirectivesTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import graphql.annotations.directives.AnnotationsWiringEnvironment;
2525
import graphql.annotations.annotationTypes.directives.activation.Directive;
2626
import graphql.annotations.annotationTypes.directives.definition.DirectiveLocations;
27-
import graphql.annotations.annotationTypes.directives.definition.DirectiveWiring;
2827
import graphql.annotations.processor.DirectiveAndWiring;
2928
import graphql.annotations.processor.GraphQLAnnotations;
3029
import graphql.annotations.processor.exceptions.GraphQLAnnotationsException;
@@ -272,7 +271,7 @@ public void queryName_noDirectivesProvidedToRegistry_exceptionIsThrown() throws
272271

273272
@GraphQLName("upperCase")
274273
@DirectiveLocations(Introspection.DirectiveLocation.FIELD_DEFINITION)
275-
@DirectiveWiring(UpperWiring.class)
274+
@GraphQLDirectiveDefinition(wiring = UpperWiring.class)
276275
public static class UpperCase {
277276
boolean isActive;
278277
}

0 commit comments

Comments
 (0)