Skip to content

Commit

Permalink
add unit test
Browse files Browse the repository at this point in the history
Signed-off-by: kakulisen <18813972746@163.com>
  • Loading branch information
kakulisen authored and chanjarster committed Nov 13, 2019
1 parent e5c71a3 commit 3743b86
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 22 deletions.
Expand Up @@ -23,8 +23,6 @@

public class LocalVariableVisitor extends MethodVisitor {

private boolean isStatic;

private String[] parameterNames;

private final int[] lvtSlotIndex;
Expand All @@ -33,7 +31,6 @@ public class LocalVariableVisitor extends MethodVisitor {

public LocalVariableVisitor(int api, String desc, boolean isStatic, String[] parameterNames) {
super(api);
this.isStatic = isStatic;
this.parameterNames = parameterNames;
this.args = Type.getArgumentTypes(desc);
this.lvtSlotIndex = computeLvtSlotIndices(isStatic, this.args);
Expand Down
Expand Up @@ -21,8 +21,10 @@

import org.apache.servicecomb.toolkit.generator.annotation.ApiResponseMethodAnnotationProcessor;
import org.apache.servicecomb.toolkit.generator.annotation.ApiResponsesMethodAnnotationProcessor;
import org.apache.servicecomb.toolkit.generator.annotation.OpenApiDefinitionClassAnnotationProcessor;
import org.apache.servicecomb.toolkit.generator.annotation.OperationMethodAnnotationProcessor;
import org.apache.servicecomb.toolkit.generator.annotation.ParameterAnnotationProcessor;
import org.apache.servicecomb.toolkit.generator.annotation.RequestBodyParamAnnotationProcessor;
import org.apache.servicecomb.toolkit.generator.context.OasContext;
import org.apache.servicecomb.toolkit.generator.context.OperationContext;
import org.apache.servicecomb.toolkit.generator.context.ParameterContext;
Expand Down Expand Up @@ -112,11 +114,9 @@ public boolean canProcess(Class<?> cls) {
@Test
public void processOperationAnnotation() throws NoSuchMethodException {

OasContext oasContext = new OasContext(null);
OperationContext context = new OperationContext(null, oasContext);
OasContext oasContext = null;

OperationMethodAnnotationProcessor operationMethodAnnotationProcessor = new OperationMethodAnnotationProcessor();
// Operation operation = Mockito.mock(Operation.class);
// operationMethodAnnotationProcessor.process(operation, context);

Method helloMethod = OpenapiDef.class.getDeclaredMethod("hello", String.class, Object.class);
Operation operation = helloMethod.getAnnotation(Operation.class);
Expand All @@ -131,10 +131,51 @@ public boolean canProcess(Class<?> cls) {
return true;
}
});
context = new OperationContext(helloMethod, oasContext);
OperationContext context = new OperationContext(helloMethod, oasContext);
operationMethodAnnotationProcessor.process(operation, context);
Assert.assertEquals("hello-operation", context.getOperationId());
}

@Test
public void processOpenApiDefinitionClassAnnotation() throws NoSuchMethodException {

OasContext oasContext = null;

OpenApiDefinitionClassAnnotationProcessor openApiDefinitionClassAnnotationProcessor = new OpenApiDefinitionClassAnnotationProcessor();

OpenAPIDefinition openAPIDefinition = OpenapiDef.class.getAnnotation(OpenAPIDefinition.class);
oasContext = new OasContext(new AbstractAnnotationParser() {
@Override
public int getOrder() {
return 0;
}

@Override
public boolean canProcess(Class<?> cls) {
return true;
}
});
openApiDefinitionClassAnnotationProcessor.process(openAPIDefinition, oasContext);
// Assert.assertEquals("hello-operation", context.getOperationId());
}

@Test
public void processRequestBodyAnnotation() throws NoSuchMethodException {

OasContext oasContext = new OasContext(null);
RequestBodyParamAnnotationProcessor operationMethodAnnotationProcessor = new RequestBodyParamAnnotationProcessor();

RequestBody requestBody = Mockito.mock(RequestBody.class);
Mockito.when(requestBody.content()).thenReturn(new Content[] {Mockito.mock(Content.class)});
Mockito.when(requestBody.ref()).thenReturn("#components/string");

Method helloMethod = OpenapiDef.class.getDeclaredMethod("hello", String.class, Object.class);
OperationContext operationContext = new OperationContext(helloMethod, oasContext);
ParameterContext parameterContext = new ParameterContext(operationContext, null);
operationMethodAnnotationProcessor.process(requestBody, parameterContext);

Assert.assertTrue(parameterContext.isRequestBody());
}

@Test
public void processParameterAnnotation() throws NoSuchMethodException, IllegalAccessException,
Expand Down
Expand Up @@ -34,7 +34,10 @@
import org.apache.servicecomb.toolkit.generator.context.ParameterContext.InType;
import org.junit.Test;

import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.models.PathItem.HttpMethod;
import io.swagger.v3.oas.models.parameters.RequestBody;
import io.swagger.v3.oas.models.responses.ApiResponses;

public class ContextTest {

Expand All @@ -53,6 +56,8 @@ public void realParameterContext() throws NoSuchMethodException {
context.setDefaultValue("default");
context.setIn(InType.QUERY);
context.setName("param1");
context.setDescription("desc");
context.setStyle(ParameterStyle.SIMPLE);
context.addExtension("extension-key", "extension-value");

assertFalse(context.isRequestBody());
Expand All @@ -72,7 +77,10 @@ public void realParameterContext() throws NoSuchMethodException {
assertEquals(parameter, context.getParameter());
assertNotNull(context.getSchema());
assertEquals("default", context.getDefaultValue());
assertEquals("desc", context.getDescription());
assertEquals(ParameterStyle.SIMPLE, context.getStyle());
assertFalse(context.isRequired());
assertNull(context.getDeprecated());

context.setIn(InType.COOKIE);
assertFalse(context.isRequestBody());
Expand All @@ -93,6 +101,12 @@ public void realParameterContext() throws NoSuchMethodException {
context.setIn(InType.BODY);
context.toParameter();
assertTrue(context.isRequestBody());

context.addConsume(MediaTypes.APPLICATION_JSON);
assertEquals(MediaTypes.APPLICATION_JSON, context.getConsumers().get(0));

context.setRequestBody(new RequestBody());
assertNotNull(context.getRequestBody());
}

@Test
Expand All @@ -103,10 +117,26 @@ public void operationContext() throws NoSuchMethodException {
Parameter parameter = method.getParameters()[0];
ParameterContext context = new ParameterContext(operationContext, parameter);
context.setIn(InType.FORM);

oasContext.toOpenAPI();
operationContext.setHttpMethod(HttpMethod.GET.name());
operationContext.setTags(null);
operationContext.setApiResponses(new ApiResponses());
operationContext.setDescription("desc");
operationContext.setConsumers(new String[] {MediaTypes.APPLICATION_JSON});
operationContext.addExtension("x-extension", "value");
operationContext.toOperation();
oasContext.toOpenAPI();
oasContext.addExtension("x-extension", "value");

assertEquals("value", oasContext.getExtensions().get("x-extension"));
assertEquals("value", operationContext.getExtensions().get("x-extension"));
assertEquals(HttpMethod.GET.name(), operationContext.getHttpMethod());
assertNotNull(operationContext.getOperation());
assertNotNull(operationContext.getApiResponses());
assertEquals(oasContext, operationContext.getOpenApiContext());
assertNull(operationContext.getSummary());
assertNull(operationContext.getTags());
assertEquals(MediaTypes.APPLICATION_JSON, operationContext.getConsumers()[0]);
assertEquals("desc", operationContext.getDescription());
}
}
Expand Up @@ -29,7 +29,7 @@ public class ServicecombPojoParser extends AbstractAnnotationParser {

@Override
public int getOrder() {
return 0;
return 100;
}

@Override
Expand Down
Expand Up @@ -41,11 +41,19 @@ public void parse() {
boolean canProcess = servicecombJaxrsParser.canProcess(ServicecombJaxrs.class);
Assert.assertTrue(canProcess);

canProcess = servicecombJaxrsParser.canProcess(ServicecombPojo.class);
Assert.assertFalse(canProcess);

canProcess = servicecombSpringmvcParser.canProcess(ServicecombSpringmvc.class);
Assert.assertTrue(canProcess);
canProcess = servicecombSpringmvcParser.canProcess(ServicecombPojo.class);
Assert.assertFalse(canProcess);

canProcess = servicecombPojoParser.canProcess(ServicecombPojo.class);
Assert.assertTrue(canProcess);
canProcess = servicecombPojoParser.canProcess(ServicecombSpringmvc.class);
Assert.assertFalse(canProcess);
Assert.assertEquals(100, servicecombPojoParser.getOrder());

OasContext pojoOasContext = new OasContext(servicecombPojoParser);
servicecombPojoParser.parser(ServicecombPojo.class, pojoOasContext);
Expand Down
Expand Up @@ -47,7 +47,7 @@ public class SpringmvcAnnotationParser extends AbstractAnnotationParser {

@Override
public int getOrder() {
return 0;
return 200;
}

@Override
Expand Down Expand Up @@ -87,16 +87,5 @@ public void initParameterAnnotationProcessor() {
parameterAnnotationMap.put(RequestParam.class, new RequestParamAnnotationProcessor());
parameterAnnotationMap.put(RequestHeader.class, new RequestHeaderAnnotationProcessor());
}

public static void main(String[] args) {
List<Integer> integers = new ArrayList<>();
integers.add(1);
integers.add(2);
integers.add(5);
integers.add(3);
integers.sort(Comparator.comparingInt(Integer::intValue));

integers.forEach(System.out::println);
}
}

Expand Up @@ -29,6 +29,7 @@ public class SpringParserTest {
public void parse() {
SpringmvcAnnotationParser parser = new SpringmvcAnnotationParser();

Assert.assertEquals(200, parser.getOrder());
boolean canProcess = parser.canProcess(String.class);
Assert.assertFalse(canProcess);

Expand Down

0 comments on commit 3743b86

Please sign in to comment.