From 1d1a9971abc2c2bd7cbbeb0f9f5a3307069fd427 Mon Sep 17 00:00:00 2001 From: efarooqui Date: Wed, 26 Aug 2020 09:38:41 -0700 Subject: [PATCH] Modified validators file to match new associations schema and necessary semantic and sanitization changes --- src/reducers/validate/associationsSchema.js | 10 +++++++ src/reducers/validate/narrativeSchema.js | 9 ------- src/reducers/validate/validators.js | 30 ++++++++++----------- 3 files changed, 24 insertions(+), 25 deletions(-) create mode 100644 src/reducers/validate/associationsSchema.js delete mode 100644 src/reducers/validate/narrativeSchema.js diff --git a/src/reducers/validate/associationsSchema.js b/src/reducers/validate/associationsSchema.js new file mode 100644 index 0000000..62251e4 --- /dev/null +++ b/src/reducers/validate/associationsSchema.js @@ -0,0 +1,10 @@ +import Joi from 'joi' + +const associationsSchema = Joi.object().keys({ + id: Joi.string().allow('').required(), + desc: Joi.string().allow(''), + mode: Joi.string().allow('').required(), + filter_paths: Joi.array(), +}) + +export default associationsSchema \ No newline at end of file diff --git a/src/reducers/validate/narrativeSchema.js b/src/reducers/validate/narrativeSchema.js deleted file mode 100644 index 2f4c8ff..0000000 --- a/src/reducers/validate/narrativeSchema.js +++ /dev/null @@ -1,9 +0,0 @@ -import Joi from 'joi' - -const narrativeSchema = Joi.object().keys({ - id: Joi.string().required(), - description: Joi.string().allow('').required(), - label: Joi.string().required() -}) - -export default narrativeSchema diff --git a/src/reducers/validate/validators.js b/src/reducers/validate/validators.js index 2fcb7be..8486ea3 100644 --- a/src/reducers/validate/validators.js +++ b/src/reducers/validate/validators.js @@ -3,7 +3,7 @@ import Joi from 'joi' import createEventSchema from './eventSchema' import categorySchema from './categorySchema' import siteSchema from './siteSchema' -import narrativeSchema from './narrativeSchema' +import associationsSchema from './associationsSchema' import sourceSchema from './sourceSchema' import shapeSchema from './shapeSchema' @@ -27,7 +27,7 @@ function isValidDate (d) { /* * Traverse a filter tree and check its duplicates. Also recompose as -* description if `features.USE_FILTER_DESCRIPTIONS` is true. +* description if `features.USE_ASSOCIATION_DESCRIPTIONS` is true. */ function validateFilterTree (node, parent, set, duplicates, hasFilterDescriptions) { if (hasFilterDescriptions) { @@ -75,14 +75,12 @@ function validateFilterTree (node, parent, set, duplicates, hasFilterDescription * Validate domain schema */ export function validateDomain (domain, features) { - console.info(domain) const sanitizedDomain = { events: [], categories: [], sites: [], - narratives: [], + associations: [], sources: {}, - filters: {}, shapes: [], notifications: domain ? domain.notifications : null } @@ -95,7 +93,7 @@ export function validateDomain (domain, features) { events: [], categories: [], sites: [], - narratives: [], + associations: [], sources: [], shapes: [] } @@ -150,7 +148,7 @@ export function validateDomain (domain, features) { validateArray(domain.events, 'events', eventSchema) validateArray(domain.categories, 'categories', categorySchema) validateArray(domain.sites, 'sites', siteSchema) - validateArray(domain.narratives, 'narratives', narrativeSchema) + validateArray(domain.associations, 'associations', associationsSchema) validateObject(domain.sources, 'sources', sourceSchema) validateObject(domain.shapes, 'shapes', shapeSchema) @@ -163,20 +161,20 @@ export function validateDomain (domain, features) { }) ) - // Validate uniqueness of filters - const filterSet = new Set([]) - const duplicateFilters = [] - validateFilterTree(domain.filters, {}, filterSet, duplicateFilters, features.USE_FILTER_DESCRIPTIONS) + // Validate uniqueness of associations + const associationSet = new Set([]) + const duplicateAssociations = [] + validateFilterTree(domain.associations, {}, associationSet, duplicateAssociations, features.USE_ASSOCIATION_DESCRIPTIONS) - // Duplicated filters - if (duplicateFilters.length > 0) { + // Duplicated associations + if (duplicateAssociations.length > 0) { sanitizedDomain.notifications.push({ - message: `Filters are required to be unique. Ignoring duplicates for now.`, - items: duplicateFilters, + message: `Associations are required to be unique. Ignoring duplicates for now.`, + items: duplicateAssociations, type: 'error' }) } - sanitizedDomain.filters = domain.filters + sanitizedDomain.associations = domain.associations // append events with datetime and sort sanitizedDomain.events = sanitizedDomain.events.filter((event, idx) => {