Skip to content
Open
Show file tree
Hide file tree
Changes from 8 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
14 changes: 10 additions & 4 deletions packages/typespec-ts/src/modular/helpers/operationHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -703,10 +703,16 @@ function getHeaderAndBodyParameters(
) {
continue;
}
parametersImplementation[param.kind].push({
paramMap: getParameterMap(dpgContext, param, optionalParamName),
param
});
// Check if this parameter still exists in the corresponding method params (after override)
if (
param.correspondingMethodParams &&
param.correspondingMethodParams.length > 0
) {
parametersImplementation[param.kind].push({
paramMap: getParameterMap(dpgContext, param, optionalParamName),
param
});
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import { assert } from "chai";
import { OverrideClient } from "./generated/azure/client-generator-core/override/src/index.js";

describe("Azure ClientGeneratorCore Override Client", () => {
let client: OverrideClient;

beforeEach(() => {
client = new OverrideClient({
endpoint: "http://localhost:3002",
allowInsecureConnection: true
});
});

it("should reorder parameters correctly", async () => {
// Test parameter reordering with @override decorator
// Verifies that parameters are reordered correctly in client method signature
// Expected path: /azure/client-generator-core/override/reorder/{param2}/{param1}
// Where param1="param1" and param2="param2"
const result = await client.reorderParameters.reorder("param1", "param2");
assert.isUndefined(result);
});

it("should group parameters correctly", async () => {
// Test parameter grouping with @override decorator
// Verifies that parameters are grouped correctly into GroupParametersOptions
// Expected query parameters: param1="param1", param2="param2"
const options = {
param1: "param1",
param2: "param2"
};
const result = await client.groupParameters.group(
options.param1,
options.param2
);
assert.isUndefined(result);
});

it("should require optional parameter correctly", async () => {
// Test parameter requirement with @override decorator
// Verifies that optional parameters can be made required via @override
const result = await client.requireOptionalParameter.requireOptional(
"param1",
"param2"
);
assert.isUndefined(result);
});

it("should remove optional parameter correctly", async () => {
// Test parameter removal with @override decorator
// Verifies that optional parameters can be removed via @override
const result = await client.removeOptionalParameter.removeOptional(
"param1",
{
param2: "param2"
}
);
assert.isUndefined(result);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/**
!/src
/src/**
!/src/index.d.ts
!/.gitignore
!/tspconfig.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { ClientOptions } from '@azure-rest/core-client';
import { OperationOptions } from '@azure-rest/core-client';
import { Pipeline } from '@azure/core-rest-pipeline';

export declare interface GroupParametersGroupOptionalParams extends OperationOptions {
}

export declare interface GroupParametersOperations {
group: (param1: string, param2: string, options?: GroupParametersGroupOptionalParams) => Promise<void>;
}

export declare class OverrideClient {
private _client;
readonly pipeline: Pipeline;
constructor(options?: OverrideClientOptionalParams);
readonly removeOptionalParameter: RemoveOptionalParameterOperations;
readonly requireOptionalParameter: RequireOptionalParameterOperations;
readonly groupParameters: GroupParametersOperations;
readonly reorderParameters: ReorderParametersOperations;
}

export declare interface OverrideClientOptionalParams extends ClientOptions {
}

export declare interface RemoveOptionalParameterOperations {
removeOptional: (param1: string, options?: RemoveOptionalParameterRemoveOptionalOptionalParams) => Promise<void>;
}

export declare interface RemoveOptionalParameterRemoveOptionalOptionalParams extends OperationOptions {
param2?: string;
}

export declare interface ReorderParametersOperations {
reorder: (param1: string, param2: string, options?: ReorderParametersReorderOptionalParams) => Promise<void>;
}

export declare interface ReorderParametersReorderOptionalParams extends OperationOptions {
}

export declare interface RequireOptionalParameterOperations {
requireOptional: (param1: string, param2: string, options?: RequireOptionalParameterRequireOptionalOptionalParams) => Promise<void>;
}

export declare interface RequireOptionalParameterRequireOptionalOptionalParams extends OperationOptions {
}

export { }
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
emit:
- "@azure-tools/typespec-ts"
options:
"@azure-tools/typespec-ts":
emitter-output-dir: "{project-root}"
add-credentials: false
azure-sdk-for-js: false
is-modular-library: true
package-details:
name: "@azure/client-generator-core-override"
version: "1.0.0"
4 changes: 4 additions & 0 deletions packages/typespec-ts/test/commands/cadl-ranch-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,10 @@ export const azureModularTsps = [
{
outputPath: "azure/client-generator-core/hierarchy-building",
inputPath: "azure/client-generator-core/hierarchy-building"
},
{
outputPath: "azure/client-generator-core/override",
inputPath: "azure/client-generator-core/override"
}
// skip due to issue https://github.com/Azure/autorest.typescript/issues/3494
// {
Expand Down
Loading
Loading