All files / lib/joi-to-json-schema/types number.ts

100% Statements 22/22
100% Branches 8/8
100% Functions 2/2
100% Lines 22/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 361x 13x 13x 12x   1x 1x   1x 1x 1x   2x 2x 2x   3x 3x   3x 3x     2x 1x   1x   2x 2x       13x    
export const number = (_convert, schema, joi) => {
  schema.type = "number";
  joi._rules.forEach(test => {
    switch (test.name) {
      case "integer":
        schema.type = "integer";
        break;
      case "less":
        schema.exclusiveMaximum = true;
        schema.maximum = test.args.limit;
        break;
      case "greater":
        schema.exclusiveMinimum = true;
        schema.minimum = test.args.limit;
        break;
      case "min":
        schema.minimum = test.args.limit;
        break;
      case "max":
        schema.maximum = test.args.limit;
        break;
      case "precision": {
        let multipleOf;
        if (test.args.limit > 1) {
          multipleOf = JSON.parse("0." + "0".repeat(test.args.limit - 1) + "1");
        } else {
          multipleOf = 1;
        }
        schema.multipleOf = multipleOf;
        break;
      }
    }
  });
  return schema;
};