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 @@