Skip to content
This repository was archived by the owner on Jul 6, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import com.azure.autorest.fluent.model.clientmodel.FluentResourceCollection;
import com.azure.autorest.fluent.model.clientmodel.FluentResourceModel;
import com.azure.autorest.fluent.model.clientmodel.FluentStatic;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodUnitTest;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodMockUnitTest;
import com.azure.autorest.fluent.model.javamodel.FluentJavaPackage;
import com.azure.autorest.fluent.model.projectmodel.FluentProject;
import com.azure.autorest.fluent.util.FluentUtils;
Expand Down Expand Up @@ -358,7 +358,7 @@ FluentClient handleFluentLite(CodeModel codeModel, Client client, FluentJavaPack
}

// Unit tests for APIs
for (FluentMethodUnitTest unitTest : fluentClient.getUnitTests()) {
for (FluentMethodMockUnitTest unitTest : fluentClient.getMockUnitTests()) {
javaPackage.addOperationUnitTest(unitTest);
}
// enable inline mock maker for final class/method
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import com.azure.autorest.model.clientmodel.ClassType;
import com.azure.autorest.model.clientmodel.ClientMethod;
import com.azure.autorest.model.clientmodel.ClientMethodParameter;
import com.azure.autorest.model.clientmodel.ClientMethodType;
import com.azure.autorest.model.clientmodel.ClientModel;
import com.azure.autorest.model.clientmodel.IType;
import com.azure.autorest.model.clientmodel.ListType;
Expand Down Expand Up @@ -163,7 +162,7 @@ private static List<FluentCollectionMethodExample> parseMethod(FluentResourceCol
List<FluentCollectionMethodExample> ret = null;

ClientMethod clientMethod = collectionMethod.getInnerClientMethod();
if (needToGenerateExample(clientMethod)) {
if (FluentUtils.validToGenerateExample(clientMethod)) {
ret = new ArrayList<>();

List<MethodParameter> methodParameters = getParameters(clientMethod);
Expand All @@ -181,7 +180,7 @@ private static List<FluentCollectionMethodExample> parseMethod(FluentResourceCol
private static List<FluentClientMethodExample> parseMethod(MethodGroupClient methodGroup, ClientMethod clientMethod) {
List<FluentClientMethodExample> ret = null;

if (needToGenerateExample(clientMethod)) {
if (FluentUtils.validToGenerateExample(clientMethod)) {
ret = new ArrayList<>();

List<MethodParameter> methodParameters = getParameters(clientMethod);
Expand All @@ -208,7 +207,7 @@ protected static FluentCollectionMethodExample parseMethodForExample(FluentResou
}

public static FluentCollectionMethodExample parseMethodExample(FluentResourceCollection resourceCollection, Collection<FluentCollectionMethod> collectionMethods, ProxyMethodExample example) {
FluentCollectionMethod collectionMethod = collectionMethods.stream().filter(method -> requiresExample(method.getInnerClientMethod())).findFirst().get();
FluentCollectionMethod collectionMethod = collectionMethods.stream().filter(method -> FluentUtils.requiresExample(method.getInnerClientMethod())).findFirst().get();
return parseMethodForExample(resourceCollection, collectionMethod, getParameters(collectionMethod.getInnerClientMethod()), example.getName(), example);
}

Expand Down Expand Up @@ -246,7 +245,7 @@ private static List<FluentResourceCreateExample> parseResourceCreate(FluentResou
List<FluentCollectionMethod> collectionMethods = resourceCreate.getMethodReferences();
for (FluentCollectionMethod collectionMethod : collectionMethods) {
ClientMethod clientMethod = collectionMethod.getInnerClientMethod();
if (needToGenerateExample(clientMethod)) {
if (FluentUtils.validToGenerateExample(clientMethod)) {
if (ret == null) {
ret = new ArrayList<>();
}
Expand Down Expand Up @@ -341,7 +340,7 @@ public static FluentResourceCreateExample parseResourceCreate(FluentResourceColl
List<MethodParameter> methodParameters = getParameters(
create.getMethodReferences()
.stream()
.filter(collectionMethod-> requiresExample(collectionMethod.getInnerClientMethod()))
.filter(collectionMethod-> FluentUtils.requiresExample(collectionMethod.getInnerClientMethod()))
.findFirst().get()
.getInnerClientMethod());
MethodParameter requestBodyParameter = findRequestBodyParameter(methodParameters);
Expand All @@ -362,7 +361,7 @@ private static List<FluentResourceUpdateExample> parseResourceUpdate(FluentResou
List<FluentCollectionMethod> collectionMethods = resourceUpdate.getMethodReferences();
for (FluentCollectionMethod collectionMethod : collectionMethods) {
ClientMethod clientMethod = collectionMethod.getInnerClientMethod();
if (needToGenerateExample(clientMethod)) {
if (FluentUtils.validToGenerateExample(clientMethod)) {
if (ret == null) {
ret = new ArrayList<>();
}
Expand All @@ -389,14 +388,6 @@ private static List<FluentResourceUpdateExample> parseResourceUpdate(FluentResou
return ret;
}

private static boolean needToGenerateExample(ClientMethod clientMethod) {
String requestContentType = clientMethod.getProxyMethod().getRequestContentType();
return clientMethod.getProxyMethod().getExamples() != null
&& requiresExample(clientMethod)
// currently only generate for json payload, i.e. "text/json", "application/json"
&& requestContentType != null && requestContentType.contains("json");
}

private static FluentCollectionMethod findResourceGetMethod(ResourceUpdate resourceUpdate) {
FluentCollectionMethod resourceGetMethod = null;
if (resourceUpdate.getResourceModel().getResourceRefresh() != null) {
Expand Down Expand Up @@ -459,7 +450,7 @@ public static FluentResourceUpdateExample parseResourceUpdate(FluentResourceColl
List<MethodParameter> methodParameters = getParameters(
resourceUpdate.getMethodReferences()
.stream()
.filter(collectionMethod-> requiresExample(collectionMethod.getInnerClientMethod()))
.filter(collectionMethod-> FluentUtils.requiresExample(collectionMethod.getInnerClientMethod()))
.findFirst().get()
.getInnerClientMethod()
);
Expand Down Expand Up @@ -600,17 +591,6 @@ protected static List<MethodParameter> getParameters(ClientMethod clientMethod)
.collect(Collectors.toList());
}

private static boolean requiresExample(ClientMethod clientMethod) {
if (clientMethod.getType() == ClientMethodType.SimpleSync
|| clientMethod.getType() == ClientMethodType.SimpleSyncRestResponse
|| clientMethod.getType() == ClientMethodType.PagingSync
|| clientMethod.getType() == ClientMethodType.LongRunningSync) {
// generate example for the method with full parameters
return clientMethod.getParameters().stream().anyMatch(p -> ClassType.Context.equals(p.getClientType()));
}
return false;
}

private static boolean methodIsCreateOrUpdate(FluentResourceModel resourceModel) {
return resourceModel.getResourceCreate() != null && resourceModel.getResourceUpdate() != null
&& Objects.equals(resourceModel.getResourceCreate().getMethodReferences().iterator().next().getMethodName(), resourceModel.getResourceUpdate().getMethodReferences().iterator().next().getMethodName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ public FluentClient map(CodeModel codeModel, Client client) {
.collect(Collectors.toList()));

// mock API tests
UnitTestParser unitTestParser = new UnitTestParser();
fluentClient.getUnitTests().addAll(
MockUnitTestParser mockUnitTestParser = new MockUnitTestParser();
fluentClient.getMockUnitTests().addAll(
fluentClient.getResourceCollections().stream()
.flatMap(rc -> unitTestParser.parseResourceCollectionForUnitTest(rc).stream())
.flatMap(rc -> mockUnitTestParser.parseResourceCollectionForUnitTest(rc).stream())
.collect(Collectors.toList()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@
import com.azure.autorest.fluent.model.clientmodel.FluentResourceCollection;
import com.azure.autorest.fluent.model.clientmodel.MethodParameter;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentCollectionMethodExample;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodUnitTest;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodMockUnitTest;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentResourceCreateExample;
import com.azure.autorest.fluent.model.clientmodel.fluentmodel.create.ResourceCreate;
import com.azure.autorest.fluent.util.FluentUtils;
import com.azure.autorest.model.clientmodel.ClassType;
import com.azure.autorest.model.clientmodel.ClientMethod;
import com.azure.autorest.model.clientmodel.ClientMethodType;
Expand All @@ -32,44 +33,44 @@
import java.util.List;
import java.util.Map;

public class UnitTestParser extends ExampleParser {
public class MockUnitTestParser extends ExampleParser {

private static final Logger LOGGER = new PluginLogger(FluentGen.getPluginInstance(), UnitTestParser.class);
private static final Logger LOGGER = new PluginLogger(FluentGen.getPluginInstance(), MockUnitTestParser.class);

public List<FluentMethodUnitTest> parseResourceCollectionForUnitTest(FluentResourceCollection resourceCollection) {
List<FluentMethodUnitTest> fluentMethodUnitTests = new ArrayList<>();
public List<FluentMethodMockUnitTest> parseResourceCollectionForUnitTest(FluentResourceCollection resourceCollection) {
List<FluentMethodMockUnitTest> fluentMethodMockUnitTests = new ArrayList<>();

resourceCollection.getMethodsForTemplate().forEach(m -> {
FluentMethodUnitTest example = parseMethod(resourceCollection, m);
FluentMethodMockUnitTest example = parseMethod(resourceCollection, m);
if (example != null) {
fluentMethodUnitTests.add(example);
fluentMethodMockUnitTests.add(example);
}
});
resourceCollection.getResourceCreates().forEach(rc -> {
FluentMethodUnitTest example = parseResourceCreate(resourceCollection, rc);
FluentMethodMockUnitTest example = parseResourceCreate(resourceCollection, rc);
if (example != null) {
fluentMethodUnitTests.add(example);
fluentMethodMockUnitTests.add(example);
}
});
return fluentMethodUnitTests;
return fluentMethodMockUnitTests;
}

private static FluentMethodUnitTest parseResourceCreate(FluentResourceCollection collection, ResourceCreate resourceCreate) {
FluentMethodUnitTest unitTest = null;
private static FluentMethodMockUnitTest parseResourceCreate(FluentResourceCollection collection, ResourceCreate resourceCreate) {
FluentMethodMockUnitTest unitTest = null;

try {
List<FluentCollectionMethod> collectionMethods = resourceCreate.getMethodReferences();
for (FluentCollectionMethod collectionMethod : collectionMethods) {
ClientMethod clientMethod = collectionMethod.getInnerClientMethod();
if (requiresExample(clientMethod)) {
if (FluentUtils.validToGenerateExample(clientMethod) && requiresExample(clientMethod)) {
List<MethodParameter> methodParameters = getParameters(clientMethod);
MethodParameter requestBodyParameter = findRequestBodyParameter(methodParameters);
ProxyMethodExample proxyMethodExample = createProxyMethodExample(clientMethod, methodParameters);
FluentResourceCreateExample resourceCreateExample =
parseResourceCreate(collection, resourceCreate, proxyMethodExample, methodParameters, requestBodyParameter);

ResponseInfo responseInfo = createProxyMethodExampleResponse(clientMethod);
unitTest = new FluentMethodUnitTest(resourceCreateExample, collection, collectionMethod,
unitTest = new FluentMethodMockUnitTest(resourceCreateExample, collection, collectionMethod,
responseInfo.responseExample, responseInfo.verificationObjectName, responseInfo.verificationNode);

break;
Expand All @@ -81,19 +82,19 @@ private static FluentMethodUnitTest parseResourceCreate(FluentResourceCollection
return unitTest;
}

private static FluentMethodUnitTest parseMethod(FluentResourceCollection collection, FluentCollectionMethod collectionMethod) {
FluentMethodUnitTest unitTest = null;
private static FluentMethodMockUnitTest parseMethod(FluentResourceCollection collection, FluentCollectionMethod collectionMethod) {
FluentMethodMockUnitTest unitTest = null;

try {
ClientMethod clientMethod = collectionMethod.getInnerClientMethod();
if (requiresExample(clientMethod)) {
if (FluentUtils.validToGenerateExample(clientMethod) && requiresExample(clientMethod)) {
List<MethodParameter> methodParameters = getParameters(clientMethod);
ProxyMethodExample proxyMethodExample = createProxyMethodExample(clientMethod, methodParameters);
FluentCollectionMethodExample collectionMethodExample =
parseMethodForExample(collection, collectionMethod, methodParameters, proxyMethodExample.getName(), proxyMethodExample);

ResponseInfo responseInfo = createProxyMethodExampleResponse(clientMethod);
unitTest = new FluentMethodUnitTest(collectionMethodExample, collection, collectionMethod,
unitTest = new FluentMethodMockUnitTest(collectionMethodExample, collection, collectionMethod,
responseInfo.responseExample, responseInfo.verificationObjectName, responseInfo.verificationNode);
}
} catch (PossibleCredentialException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

package com.azure.autorest.fluent.model.clientmodel;

import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodUnitTest;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodMockUnitTest;
import com.azure.autorest.model.clientmodel.Client;
import com.azure.autorest.model.clientmodel.ModuleInfo;

Expand All @@ -26,7 +26,7 @@ public class FluentClient {
private final List<FluentResourceCollection> resourceCollections = new ArrayList<>();

private final List<FluentExample> examples = new ArrayList<>();
private final List<FluentMethodUnitTest> unitTests = new ArrayList<>();
private final List<FluentMethodMockUnitTest> mockUnitTests = new ArrayList<>();

private final List<FluentLiveTests> liveTests = new ArrayList<>();

Expand Down Expand Up @@ -66,8 +66,8 @@ public List<FluentExample> getExamples() {
return examples;
}

public List<FluentMethodUnitTest> getUnitTests() {
return unitTests;
public List<FluentMethodMockUnitTest> getMockUnitTests() {
return mockUnitTests;
}

public List<FluentLiveTests> getLiveTests() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.azure.autorest.model.clientmodel.ProxyMethodExample;
import com.azure.autorest.model.clientmodel.examplemodel.ExampleNode;

public class FluentMethodUnitTest {
public class FluentMethodMockUnitTest {

// method with mock data
private final FluentMethodExample fluentMethodExample;
Expand All @@ -23,7 +23,7 @@ public class FluentMethodUnitTest {
private final String responseVerificationVariableName;
private final ExampleNode responseVerificationNode;

public FluentMethodUnitTest(
public FluentMethodMockUnitTest(
FluentMethodExample fluentMethodExample,
FluentResourceCollection resourceCollection, FluentCollectionMethod fluentCollectionMethod,
ProxyMethodExample.Response response,
Expand All @@ -38,7 +38,7 @@ public FluentMethodUnitTest(
this.responseVerificationNode = responseVerificationNode;
}

public FluentMethodUnitTest(
public FluentMethodMockUnitTest(
FluentResourceCreateExample fluentResourceCreateExample,
FluentResourceCollection resourceCollection, FluentCollectionMethod collectionMethod,
ProxyMethodExample.Response response,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import com.azure.autorest.fluent.model.clientmodel.FluentResourceCollection;
import com.azure.autorest.fluent.model.clientmodel.FluentResourceModel;
import com.azure.autorest.fluent.model.clientmodel.ModelNaming;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodUnitTest;
import com.azure.autorest.fluent.model.clientmodel.examplemodel.FluentMethodMockUnitTest;
import com.azure.autorest.fluent.model.projectmodel.Changelog;
import com.azure.autorest.fluent.model.projectmodel.FluentProject;
import com.azure.autorest.fluent.template.FluentMethodTestTemplate;
Expand Down Expand Up @@ -110,7 +110,7 @@ public final JavaFile addSample(FluentExample example) {
return javaFile;
}

public void addOperationUnitTest(FluentMethodUnitTest unitTest) {
public void addOperationUnitTest(FluentMethodMockUnitTest unitTest) {

String className = unitTest.getResourceCollection().getInterfaceType().getName()
+ CodeNamer.toPascalCase(unitTest.getCollectionMethod().getMethodName())
Expand Down
Loading