xogroup / felicity

Javascript object constructors and sample data based on Joi schema.
Other
111 stars 9 forks source link

Invalid mock returned if schema uses any.when #157

Open JesKingDev opened 1 year ago

JesKingDev commented 1 year ago

Context

To Reproduce What are you trying to achieve or the steps to reproduce ? Please include any relevant Joi schemas.

When the Joi schema uses the any.when(condition,options) API, an invalid mock is returned. Example Schema

priceCents: Joi.number().when('.fundType', {
        is  : FUND_TYPES.FIXED,
        then: Joi.number()
            .min(1)
            .max(100000)
            .required(),
        otherwise: Joi.forbidden().default(100)
    }),

The conditional is not respected; when running tests against a schema containing the above snippet, the following fails on validation:

const instance = felicity.entityFor(schema);
const mock = entity.generateMock();
const result = instance.validate(mock);

Expected behavior The generated mock should be valid for the Joi schema passed to the Felicity API.

Observed behavior The generated mock fails validation.

Example Mock A - condition is satisfied, but the value is NaN CleanShot 2023-01-14 at 08 37 28@2x

Example Mock B - condition is not satisfied, but the value is populated. CleanShot 2023-01-14 at 23 12 42@2x