Skip to content

Commit 934c221

Browse files
reduce complexity of the code
1 parent 3368755 commit 934c221

File tree

2 files changed

+64
-20
lines changed

2 files changed

+64
-20
lines changed

src/utils/uda.ts

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ export function filterUDAParamsValidTypes(type: number | number[]): number[] {
3535
return typesArray.filter(validTypes.has, validTypes);
3636
}
3737

38-
export function getUDAParamType(type: ParamFieldType): string | string[] {
38+
export function getUDAParamType(
39+
type: ParamFieldType | ParamFieldType[],
40+
): string | string[] {
3941
if (Array.isArray(type)) {
4042
return type.map(
4143
(t) => ext.constants.dataTypes.get(t.toString()) ?? t.toString(),
@@ -150,35 +152,55 @@ export function convertTypesToString(returnType: number[]): string[] {
150152
);
151153
}
152154

155+
export function getIncompatibleError(
156+
metadata: any,
157+
parsedParams: any,
158+
): InvalidParamFieldErrors | undefined {
159+
if (!metadata) {
160+
return InvalidParamFieldErrors.NoMetadata;
161+
}
162+
if (parsedParams === ParamFieldType.Invalid) {
163+
return InvalidParamFieldErrors.BadField;
164+
}
165+
return undefined;
166+
}
167+
168+
export function createUDAReturn(metadata: any): UDAReturn {
169+
return {
170+
type: convertTypesToString(metadata?.return.type || []),
171+
description: metadata?.return.description || "",
172+
};
173+
}
174+
175+
export function createUDAObject(
176+
uda: any,
177+
parsedParams: any,
178+
incompatibleError: any,
179+
): UDA {
180+
return {
181+
name: uda.api,
182+
description: uda.metadata?.description || "",
183+
params: Array.isArray(parsedParams) ? parsedParams : [],
184+
return: createUDAReturn(uda.metadata),
185+
incompatibleError,
186+
};
187+
}
188+
153189
export function parseUDAList(getMeta: MetaObjectPayload): UDA[] {
154190
const UDAs: UDA[] = [];
155191
if (getMeta.api !== undefined) {
156192
const getMetaUDAs = getMeta.api.filter((api) => api.custom === true);
157193
if (getMetaUDAs.length !== 0) {
158194
for (const uda of getMetaUDAs) {
159195
const parsedParams = parseUDAParams(uda.metadata?.params);
160-
let incompatibleError = undefined;
161-
if (!uda.metadata) {
162-
incompatibleError = InvalidParamFieldErrors.NoMetadata;
163-
}
164-
if (parsedParams === ParamFieldType.Invalid) {
165-
incompatibleError = InvalidParamFieldErrors.BadField;
166-
}
167-
const returnData: UDAReturn = {
168-
type: convertTypesToString(uda.metadata?.return.type || []),
169-
description: uda.metadata?.return.description || "",
170-
};
171-
UDAs.push({
172-
name: uda.api,
173-
description: uda.metadata?.description || "",
174-
params: Array.isArray(parsedParams) ? parsedParams : [],
175-
return: returnData,
176-
incompatibleError,
177-
});
196+
const incompatibleError = getIncompatibleError(
197+
uda.metadata,
198+
parsedParams,
199+
);
200+
UDAs.push(createUDAObject(uda, parsedParams, incompatibleError));
178201
}
179202
}
180203
}
181-
182204
return UDAs;
183205
}
184206

test/suite/utils.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2097,6 +2097,19 @@ describe("Utils", () => {
20972097
const result = UDAUtils.getUDAParamType(type);
20982098
assert.strictEqual(result, "boolean");
20992099
});
2100+
2101+
it("should return the correct types string", () => {
2102+
const type = [ParamFieldType.Boolean, ParamFieldType.Number];
2103+
const dataTypes = new Map([
2104+
["1", "Boolean"],
2105+
["2", "Number"],
2106+
]);
2107+
const expectedRes = ["boolean", "number"];
2108+
sinon.stub(ext.constants, "dataTypes").value(dataTypes);
2109+
2110+
const result = UDAUtils.getUDAParamType(type);
2111+
assert.strictEqual(result.toString(), expectedRes.toString());
2112+
});
21002113
});
21012114

21022115
describe("getUDAFieldType", () => {
@@ -2193,6 +2206,15 @@ describe("Utils", () => {
21932206
const result = UDAUtils.convertTypesToString(types);
21942207
assert.deepStrictEqual(result, ["Boolean", "Number"]);
21952208
});
2209+
2210+
it("should convert type to string", () => {
2211+
const types = [1];
2212+
const dataTypes = new Map([["1", "Boolean"]]);
2213+
sinon.stub(ext.constants, "dataTypes").value(dataTypes);
2214+
2215+
const result = UDAUtils.convertTypesToString(types);
2216+
assert.deepStrictEqual(result, ["Boolean"]);
2217+
});
21962218
});
21972219

21982220
describe("parseUDAList", () => {

0 commit comments

Comments
 (0)