js.spec icon indicating copy to clipboard operation
js.spec copied to clipboard

Get error message `Error: Predicate condition of spec taskParams is null or undefined`

Open humorless opened this issue 6 years ago • 1 comments

const {spec, valid} = require('js.spec');

const dateRange = spec.map("dateRange", {
  startsFrom: spec.int,
  endsBefore: spec.int,
});

const taskParams = spec.map("taskParams", {
  timezone: spec.string,
  dateRange,
  condition: spec.options,
});

/*
const schema = spec.map("schema", {
  taskId     : spec.string,
  reportType : spec.int,
  callbackUrl: spec.string,
  taskParams,
});
*/

console.log('valid(dateRange, {startsFrom:5, endsBefore 6})',
  valid(dateRange, {startsFrom: 5, endsBefore: 6}));
console.log('valid(dateRange, {})', valid(dateRange, {}));
console.log('valid(dateRange, {startsFrom:"5", endsBefore 6})',
  valid(dateRange, {startsFrom: "5", endsBefore: 6}));
console.log('valid(taskParams, {timezone: "tw", dateRange: {startsFrom:5, endsBefore: 6}, condition: {}})',
  valid(taskParams, {timezone: "tw", dateRange: {startsFrom:5, endsBefore: 6}, condition: {}}));
console.log('valid(taskParams, {timezone: "tw", dateRange: {startsFrom:5, endsBefore: 6}, condition: 1})',
  valid(taskParams, {timezone: "tw", dateRange: {startsFrom:5, endsBefore: 6}, condition: 1}));
console.log('valid(taskParams, {timezone: 2, dateRange: {startsFrom:5, endsBefore: 6}, condition: 1})',
  valid(taskParams, {timezone: 2, dateRange: {startsFrom:5, endsBefore: 6}, condition: 1}));
Error: Predicate condition of spec taskParams is null or undefined, probably that's not your intention.
    at u (/home/ubuntu/workspace/i2w/ce-backend-scheduler-report-generator-marketplace/node_modules/js.spec/dist/js.spec.js:1:883)
    at t.undefinedPredicateWarning (/home/ubuntu/workspace/i2w/ce-backend-scheduler-report-generator-marketplace/node_modules/js.spec/dist/js.spec.js:1:2450)
    at Object.t.default [as map] (/home/ubuntu/workspace/i2w/ce-backend-scheduler-report-generator-marketplace/node_modules/js.spec/dist/js.spec.js:1:26731)
    at Object.<anonymous> (/home/ubuntu/workspace/i2w/ce-backend-scheduler-report-generator-marketplace/spec.js:13:25)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Function.Module.runMain (module.js:676:10)


humorless avatar Jul 12 '18 09:07 humorless

It's not possible to merge specs like this. See also https://github.com/prayerslayer/js.spec/issues/51 for an idea on how this might be built.

mattbishop avatar Jul 13 '18 17:07 mattbishop