From c464dffeb13e7f60034774e30a21c50d444a04be Mon Sep 17 00:00:00 2001 From: paulpascal Date: Wed, 27 Mar 2024 06:54:55 +0000 Subject: [PATCH] fix(#55): address feedback part 2 --- src/config/chis-tg/config.json | 12 ++++++++-- src/lib/validation.ts | 2 -- src/lib/validator-role.ts | 33 ---------------------------- src/lib/validator-select_multiple.ts | 1 - src/lib/validator-select_one.ts | 4 ++-- src/liquid/components/list_cell.html | 8 ------- test/lib/validation.spec.ts | 2 +- 7 files changed, 13 insertions(+), 49 deletions(-) delete mode 100644 src/lib/validator-role.ts diff --git a/src/config/chis-tg/config.json b/src/config/chis-tg/config.json index f6a3e9a9..c54c683d 100644 --- a/src/config/chis-tg/config.json +++ b/src/config/chis-tg/config.json @@ -73,7 +73,11 @@ { "friendly_name": "Gender", "property_name": "sex", - "type": "gender", + "type": "select_one", + "parameter": { + "male": "Masculin", + "female": "Feminin" + }, "required": true }, { @@ -157,7 +161,11 @@ { "friendly_name": "Sex", "property_name": "sex", - "type": "gender", + "type": "select_one", + "parameter": { + "male": "Masculin", + "female": "Feminin" + }, "required": true }, { diff --git a/src/lib/validation.ts b/src/lib/validation.ts index 0dc18f88..fc87b277 100644 --- a/src/lib/validation.ts +++ b/src/lib/validation.ts @@ -13,7 +13,6 @@ import ValidatorSkip from './validator-skip'; import ValidatorString from './validator-string'; import ValidatorSelectMultiple from './validator-select_multiple'; import ValidatorSelectOne from './validator-select_one'; -import ValidatorRole from './validator-role'; export type ValidationError = { property_name: string; @@ -38,7 +37,6 @@ const TypeValidatorMap: ValidatorMap = { phone: new ValidatorPhone(), regex: new ValidatorRegex(), string: new ValidatorString(), - select_role: new ValidatorRole(), select_one: new ValidatorSelectOne(), select_multiple: new ValidatorSelectMultiple(), }; diff --git a/src/lib/validator-role.ts b/src/lib/validator-role.ts deleted file mode 100644 index de2e2a0c..00000000 --- a/src/lib/validator-role.ts +++ /dev/null @@ -1,33 +0,0 @@ -import _ from 'lodash'; -import { ContactProperty } from '../config'; -import { IValidator } from './validation'; - -export default class ValidatorRole implements IValidator { - isValid(input: string, property: ContactProperty): boolean | string { - const allowedRoles = property.parameter as string[]; - - // Check if user roles are specified and not empty - const selectedRoles = input ? input.split(' ').map((role: string) => role.trim()).filter(Boolean) : []; - if (!selectedRoles.length) { - return `Should provide at least one role`; - } - - // Check if all provided roles are allowed - const invalidRoles = _.difference(selectedRoles, allowedRoles); - if (invalidRoles.length === 1) { - return `Role '${invalidRoles[0]}' is not allowed`; - } else if (invalidRoles.length > 1) { - return `Roles '${invalidRoles.join(', ')}' are not allowed`; - } - - return true; - } - - format(input: string): string { - return input; - } - - get defaultError(): string { - return 'Invalid user roles'; - } -} diff --git a/src/lib/validator-select_multiple.ts b/src/lib/validator-select_multiple.ts index 40e1a6b5..6c5f6088 100644 --- a/src/lib/validator-select_multiple.ts +++ b/src/lib/validator-select_multiple.ts @@ -45,7 +45,6 @@ export default class ValidatorSelectMultiple implements IValidator { return input; } - // If input is a string, split it by delimiter return input .split(this.DELIMITER) .map(value => stringValidator.format(value)) diff --git a/src/lib/validator-select_one.ts b/src/lib/validator-select_one.ts index 572f7056..69d943d9 100644 --- a/src/lib/validator-select_one.ts +++ b/src/lib/validator-select_one.ts @@ -3,12 +3,12 @@ import {IValidator} from './validation'; import ValidatorString from './validator-string'; export default class ValidatorSelectOne implements IValidator { - isValid(input: string, property: ContactProperty): boolean { + isValid(input: string, property: ContactProperty): boolean|string { const stringValidator = new ValidatorString(); const trimmedInput = stringValidator.format(input); if (trimmedInput.length === 0 && property.required) { - throw new Error('Value is required'); + return `Value is required`; } // Verify property.parameter is an object if (!property?.parameter || typeof property.parameter !== 'object') { diff --git a/src/liquid/components/list_cell.html b/src/liquid/components/list_cell.html index 2a8f142c..01c997ca 100644 --- a/src/liquid/components/list_cell.html +++ b/src/liquid/components/list_cell.html @@ -10,14 +10,6 @@ {{ include.values[include.property.property_name] }} - {% elsif include.property.type == 'select_one' %} - {% assign valueKey = include.values[include.property.property_name] %} - {{ include.property.parameter[valueKey] }} - {% elsif include.property.type == 'select_multiple' %} - {% assign values = include.values[include.property.property_name] | split: " " %} - {% for value in values %} - {{include.property.parameter[value]}} - {% endfor %} {% else %} {{ include.values[include.property.property_name] }} {% endif %} diff --git a/test/lib/validation.spec.ts b/test/lib/validation.spec.ts index 966287f4..e2e6339c 100644 --- a/test/lib/validation.spec.ts +++ b/test/lib/validation.spec.ts @@ -192,7 +192,7 @@ describe('lib/validation.ts', () => { expect(Validation.getValidationErrors(place)).to.deep.eq([{ property_name: 'user_role', - description: 'Error in isValid for \'select_multiple\': Error: Invalid values: stockmanager' + description: 'Invalid values: stockmanager' }]); }); });