From 312ba851bfa2e61e3100348d78a1df958d21aee5 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Fri, 4 Mar 2022 13:03:08 -0500 Subject: [PATCH] CSR-319: move validation rules and errors into centralized files; fix and set up validation unit tests --- src/constants/error-messages.js | 12 ++ src/helpers/validation-rules.js | 8 ++ src/helpers/validation-rules.spec.js | 29 +++++ .../damage-location-question.vue | 9 +- .../replace-options-question.vue | 1 - .../side-door-options/side-door-options.vue | 25 +--- .../vehicle-damage/vehicle-damage.spec.js | 115 ++++++++++++++---- src/layouts/vehicle-damage/vehicle-damage.vue | 25 ++-- .../windshield-options/windshield-options.vue | 26 +--- .../vehicle-style/vehicle-style.spec.js | 7 +- src/ux-components/list-card/list-card.spec.js | 2 +- src/ux-components/list-card/list-card.vue | 4 - 12 files changed, 167 insertions(+), 96 deletions(-) create mode 100644 src/constants/error-messages.js create mode 100644 src/helpers/validation-rules.js create mode 100644 src/helpers/validation-rules.spec.js diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js new file mode 100644 index 000000000..963840bda --- /dev/null +++ b/src/constants/error-messages.js @@ -0,0 +1,12 @@ +const errorMessages = { + DAMAGE_LOCATION_REQUIRED: "Please select damage location", + DAMAGE_SIDE_REQUIRED: "Please select vehicle side", + DRIVER_SIDE_OPTIONS_REQUIRED: "Please select window", + PASSENGER_SIDE_OPTIONS_REQUIRED: "Please select window", + WINDSHIELD_DAMAGE_TYPE_REQUIRED: "Please select windshield damage", + WINDSHIELD_CHIP_COUNT_REQUIRED: "Please select chip(s)", + WINSHIELD_REPLACE_OPTIONS_REQUIRED: "Please select windshield part", + REPLACE_OPTIONS_REQUIRED: "Please select rear window type", +}; + +export default { errorMessages }; \ No newline at end of file diff --git a/src/helpers/validation-rules.js b/src/helpers/validation-rules.js new file mode 100644 index 000000000..1ac4ce818 --- /dev/null +++ b/src/helpers/validation-rules.js @@ -0,0 +1,8 @@ +export function required(errorMessage) { + return (value) => { + if (!value || value.length < 1) { + return errorMessage; + } + return true; + }; +} \ No newline at end of file diff --git a/src/helpers/validation-rules.spec.js b/src/helpers/validation-rules.spec.js new file mode 100644 index 000000000..323e05ff1 --- /dev/null +++ b/src/helpers/validation-rules.spec.js @@ -0,0 +1,29 @@ +import { required } from "@/helpers/validation-rules"; + +describe("validation-rules.vue", () => { + test("required rules should return error if value missing", () => { + + //Arrange + const testFn = required("an error"); + + //Act + const testResponse = testFn(); + + //Assert + expect(testResponse).toBe("an error"); + }); +}); + +describe("validation-rules.vue", () => { + test("required rules should return true if value present", () => { + + //Arrange + const testFn = required("an error"); + + //Act + const testResponse = testFn('some value'); + + //Assert + expect(testResponse).toBe(true); + }); + }); \ No newline at end of file diff --git a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue index 07f6612ae..ec32273f0 100644 --- a/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue +++ b/src/layouts/vehicle-damage/damage-location-question/damage-location-question.vue @@ -16,14 +16,11 @@ import buttonQuestion from "@/common-components/button-question/button-question"; import store from "@/store"; import { defineRule } from "vee-validate"; +import { required } from "@/helpers/validation-rules"; +import errorMessages from "@/constants/error-messages"; // DEFINE VALIDATION RULES -defineRule("damage-location-required", (value) => { - if (!value || value.length < 1) { - return "Please select damage location"; - } - return true; -}); +defineRule("damage-location-required", required(errorMessages.DAMAGE_LOCATION_REQUIRED)); export default ({ name: "damageLocationQuestion", diff --git a/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue b/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue index 63c72f7ce..87307ae31 100644 --- a/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue +++ b/src/layouts/vehicle-damage/replace-options-question/replace-options-question.vue @@ -1,7 +1,6 @@