1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-13 11:17:26 +02:00

Refactor: move mapping test into separate function

This commit is contained in:
Thomas Heartman 2022-07-22 09:57:16 +02:00
parent c9ce6a6067
commit 25241b431e

View File

@ -1,5 +1,6 @@
import { SchemaObject } from 'ajv'; import { SchemaObject } from 'ajv';
import fc, { Arbitrary } from 'fast-check'; import fc, { Arbitrary } from 'fast-check';
import { OpenAPIV3 } from 'openapi-types';
import { urlFriendlyString } from '../../../test/arbitraries.test'; import { urlFriendlyString } from '../../../test/arbitraries.test';
import { import {
createRequestParameters, createRequestParameters,
@ -37,23 +38,37 @@ const parameterDetails = (): Arbitrary<Parameters> =>
fc.dictionary(paramName(), parameterDescription()); fc.dictionary(paramName(), parameterDescription());
describe('request parameter utils', () => { describe('request parameter utils', () => {
const parameterDetailsAreMappedCorrectly = (
parameterDetailsObject: ParameterDetails<unknown>,
parameterObject: OpenAPIV3.ParameterObject,
) => {
const schema: SchemaObject = parameterObject.schema;
return (
schema.type === parameterDetailsObject.type &&
parameterObject.description ===
parameterDetailsObject.description &&
parameterObject.example === parameterDetailsObject.example &&
schema.enum === parameterDetailsObject.enum &&
schema.default === parameterDetailsObject.default &&
parameterObject.required === parameterDetailsObject.required
);
};
it('turns a name and a parameter details description into a parameter object', () => { it('turns a name and a parameter details description into a parameter object', () => {
fc.assert( fc.assert(
fc.property( fc.property(
paramName(), paramName(),
parameterDescription(), parameterDescription(),
(name, details) => { fc.context(),
(name, details, ctx) => {
const result = toParamObject(name, details); const result = toParamObject(name, details);
const schema: SchemaObject = result.schema;
ctx.log(JSON.stringify(result));
return ( return (
result.name === name && result.name === name &&
schema.type === details.type && parameterDetailsAreMappedCorrectly(details, result)
result.description === details.description &&
result.example === details.example &&
schema.enum === details.enum &&
schema.default === details.default &&
result.required === details.required
); );
}, },
), ),
@ -65,15 +80,13 @@ describe('request parameter utils', () => {
fc.property(parameterDetails(), fc.context(), (parameters, ctx) => { fc.property(parameterDetails(), fc.context(), (parameters, ctx) => {
const result = createRequestParameters(parameters); const result = createRequestParameters(parameters);
ctx.log(JSON.stringify(parameters));
ctx.log(JSON.stringify(result)); ctx.log(JSON.stringify(result));
return result.every( return result.every((paramsObject) =>
(paramsObject) => parameterDetailsAreMappedCorrectly(
paramsObject.description === parameters[paramsObject.name],
parameters[paramsObject.name].description && paramsObject,
(paramsObject.schema as SchemaObject).type === ),
parameters[paramsObject.name].type,
); );
}), }),
); );