diff --git a/backend/pom.xml b/backend/pom.xml index fc9f25264a..7f60388c3e 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -7,7 +7,7 @@ org.springframework.boot spring-boot-starter-parent - 3.1.3 + 3.1.5 @@ -40,7 +40,7 @@ ${project.build.directory}/coverage-reports ${maven.build.timestamp} yyyy-MM-dd HH:mm:ss - 1.19.0 + 1.19.1 5.9.1 1.9.1 ${project.version} @@ -151,7 +151,7 @@ com.github.tomakehurst wiremock-jre8-standalone - 2.35.1 + 3.0.1 test diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 4ab013aef2..50c8b77a26 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -13,18 +13,13 @@ declare module '@vue/runtime-core' { AutoCompleteInputComponent: typeof import('./src/components/forms/AutoCompleteInputComponent.vue')['default'] ContactGroupComponent: typeof import('./src/components/grouping/ContactGroupComponent.vue')['default'] DataFetcher: typeof import('./src/components/DataFetcher.vue')['default'] - DisplayBlockComponent: typeof import('./src/components/visuals/DisplayBlockComponent.vue')['default'] DropdownInputComponent: typeof import('./src/components/forms/DropdownInputComponent.vue')['default'] ErrorNotificationGroupingComponent: typeof import('./src/components/grouping/ErrorNotificationGroupingComponent.vue')['default'] MainHeaderComponent: typeof import('./src/components/MainHeaderComponent.vue')['default'] MultiselectInputComponent: typeof import('./src/components/forms/MultiselectInputComponent.vue')['default'] - NoteComponent: typeof import('./src/components/NoteComponent.vue')['default'] RadioInputComponent: typeof import('./src/components/forms/RadioInputComponent.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] TextInputComponent: typeof import('./src/components/forms/TextInputComponent.vue')['default'] - WizardProgressIndicatorComponent: typeof import('./src/components/wizard/WizardProgressIndicatorComponent.vue')['default'] - WizardTabComponent: typeof import('./src/components/wizard/WizardTabComponent.vue')['default'] - WizardWrapperComponent: typeof import('./src/components/wizard/WizardWrapperComponent.vue')['default'] } } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9ddebe0402..6c5d276e86 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -34,10 +34,10 @@ "@vitejs/plugin-vue": "^4.0.0", "@vitest/coverage-istanbul": "^0.34.0", "@vue/eslint-config-prettier": "^8.0.0", - "@vue/eslint-config-typescript": "^11.0.0", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^2.4.0", "@vue/tsconfig": "^0.1.3", - "cypress": "^13.2.0", + "cypress": "^13.3.2", "eslint": "^8.48.0", "eslint-config-prettier": "^9.0.0", "eslint-config-standard": "^17.1.0", @@ -66,7 +66,7 @@ "vue-eslint-parser": "^9.3.1", "vue-svg-loader": "^0.16.0", "vue-tsc": "^1.8.1", - "wiremock": "^2.35.0" + "wiremock": "^3.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -2824,9 +2824,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", "dev": true }, "node_modules/@types/sinonjs__fake-timers": { @@ -2868,16 +2868,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.6.0.tgz", - "integrity": "sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.0.tgz", + "integrity": "sha512-lgX7F0azQwRPB7t7WAyeHWVfW1YJ9NIgd9mvGhfQpRY56X6AVf8mwM8Wol+0z4liE7XX3QOt8MN1rUKCfSjRIA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.6.0", - "@typescript-eslint/type-utils": "6.6.0", - "@typescript-eslint/utils": "6.6.0", - "@typescript-eslint/visitor-keys": "6.6.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/type-utils": "6.9.0", + "@typescript-eslint/utils": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3091,13 +3091,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.6.0.tgz", - "integrity": "sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.6.0", - "@typescript-eslint/visitor-keys": "6.6.0" + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3108,13 +3108,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.6.0.tgz", - "integrity": "sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.9.0.tgz", + "integrity": "sha512-XXeahmfbpuhVbhSOROIzJ+b13krFmgtc4GlEuu1WBT+RpyGPIA4Y/eGnXzjbDj5gZLzpAXO/sj+IF/x2GtTMjQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.6.0", - "@typescript-eslint/utils": "6.6.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/utils": "6.9.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3135,9 +3135,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.6.0.tgz", - "integrity": "sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3148,13 +3148,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.6.0.tgz", - "integrity": "sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.6.0", - "@typescript-eslint/visitor-keys": "6.6.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3228,17 +3228,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.6.0.tgz", - "integrity": "sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.9.0.tgz", + "integrity": "sha512-5Wf+Jsqya7WcCO8me504FBigeQKVLAMPmUzYgDbWchINNh1KJbxCgVya3EQ2MjvJMVeXl3pofRmprqX6mfQkjQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.6.0", - "@typescript-eslint/types": "6.6.0", - "@typescript-eslint/typescript-estree": "6.6.0", + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", "semver": "^7.5.4" }, "engines": { @@ -3286,12 +3286,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.6.0.tgz", - "integrity": "sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.6.0", + "@typescript-eslint/types": "6.9.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3541,14 +3541,14 @@ } }, "node_modules/@vue/eslint-config-typescript": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", - "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz", + "integrity": "sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "vue-eslint-parser": "^9.1.1" + "@typescript-eslint/eslint-plugin": "^6.7.0", + "@typescript-eslint/parser": "^6.7.0", + "vue-eslint-parser": "^9.3.1" }, "engines": { "node": "^14.17.0 || >=16.0.0" @@ -3564,290 +3564,6 @@ } } }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@vue/eslint-config-typescript/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/@vue/eslint-config-typescript/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@vue/language-core": { "version": "1.8.8", "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.8.tgz", @@ -5637,9 +5353,9 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/cypress": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.2.0.tgz", - "integrity": "sha512-AvDQxBydE771GTq0TR4ZUBvv9m9ffXuB/ueEtpDF/6gOcvFR96amgwSJP16Yhqw6VhmwqspT5nAGzoxxB+D89g==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.2.tgz", + "integrity": "sha512-ArLmZObcLC+xxCp7zJZZbhby9FUf5CueLej9dUM4+5j37FTS4iMSgHxQLDu01PydFUvDXcNoIVRCYrHHxD7Ybg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9639,12 +9355,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -13582,9 +13292,9 @@ } }, "node_modules/wiremock": { - "version": "2.35.0", - "resolved": "https://registry.npmjs.org/wiremock/-/wiremock-2.35.0.tgz", - "integrity": "sha512-SvbkyD9jZOvjwlPxwn+jLf0AIFXXYSTwHQwR9Qyvv3JVJeskdfeRFAuUUcCZ8MFCH1yRfqaLO35qmoShQ012OA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/wiremock/-/wiremock-3.2.0.tgz", + "integrity": "sha512-9s0vZpjuRICixKWyav/e8uGZyie8Sgk7FSvASH3XPHjpxaEEGmnxpcVJY1qVSCf637wjnYWEtLSn/N+TWT8TRA==", "dev": true, "dependencies": { "npm-java-runner": "^1.0.2" diff --git a/frontend/package.json b/frontend/package.json index 064e2f00d4..5377a9aa05 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -67,10 +67,10 @@ "@vitejs/plugin-vue": "^4.0.0", "@vitest/coverage-istanbul": "^0.34.0", "@vue/eslint-config-prettier": "^8.0.0", - "@vue/eslint-config-typescript": "^11.0.0", + "@vue/eslint-config-typescript": "^12.0.0", "@vue/test-utils": "^2.4.0", "@vue/tsconfig": "^0.1.3", - "cypress": "^13.2.0", + "cypress": "^13.3.2", "eslint": "^8.48.0", "eslint-config-prettier": "^9.0.0", "eslint-config-standard": "^17.1.0", @@ -99,7 +99,7 @@ "vue-eslint-parser": "^9.3.1", "vue-svg-loader": "^0.16.0", "vue-tsc": "^1.8.1", - "wiremock": "^2.35.0" + "wiremock": "^3.0.0" }, "nyc": { "check-coverage": true, diff --git a/frontend/src/components/grouping/ContactGroupComponent.vue b/frontend/src/components/grouping/ContactGroupComponent.vue index 5975c79951..62d617df34 100644 --- a/frontend/src/components/grouping/ContactGroupComponent.vue +++ b/frontend/src/components/grouping/ContactGroupComponent.vue @@ -195,6 +195,7 @@ const updateContactType = (value: CodeNameType | undefined) => {
diff --git a/frontend/src/helpers/validators/GlobalValidators.ts b/frontend/src/helpers/validators/GlobalValidators.ts index b85f49c7bd..3e8bcb697a 100644 --- a/frontend/src/helpers/validators/GlobalValidators.ts +++ b/frontend/src/helpers/validators/GlobalValidators.ts @@ -341,7 +341,7 @@ export const validate = ( } const result = condition.replace(targetGlobalRegex, "target."); return result; - } + }; const runValidation = ( item: any, condition: string, @@ -367,7 +367,9 @@ export const validate = ( (subItem: any) => runValidation( subItem, - buildEval(fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`)), + buildEval( + fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`) + ), fieldKey.replace(".*.", `[${index}].`) ) === "" ); @@ -376,7 +378,9 @@ export const validate = ( return ( runValidation( item, - buildEval(fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`)), + buildEval( + fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`) + ), fieldKey.replace(".*.", `[${index}].`) ) === "" ); @@ -409,13 +413,13 @@ export const runValidation = ( } const result = condition.replace(targetGlobalRegex, "target."); return result; - } + }; const executeValidation = ( item: any, condition: string, fieldId: string = fieldKey ): string => { - if (eval(condition)) {// NOSONAR + if (eval(condition)) { // NOSONAR const validationResponse = validation(item); if (notify) { // Note: also notifies when valid - errorMsg will be empty. @@ -439,7 +443,9 @@ export const runValidation = ( const valid = executeValidation( subItem, - buildEval(fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`)), + buildEval( + fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`) + ), fieldKey.replace(".*.", `[${index}].`) ) === ""; if (!valid) { @@ -455,7 +461,9 @@ export const runValidation = ( const valid = executeValidation( item, - buildEval(fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`)), + buildEval( + fieldCondition.replace(arrayIndexGlobalRegex, `[${index}].`) + ), fieldKey.replace(".*.", `[${index}].`) ) === ""; if (!valid) { @@ -470,3 +478,7 @@ export const runValidation = ( // If the field value is not an array we run the validation for the field return executeValidation(fieldValue, fieldCondition) === ""; }; + +export const isNullOrUndefinedOrBlank = ( + input: string | null | undefined +): boolean => input === null || input === undefined || input.trim() === ""; diff --git a/frontend/src/pages/bceidform/ContactWizardStep.vue b/frontend/src/pages/bceidform/ContactWizardStep.vue index f183b93d29..0cf5f2b87a 100644 --- a/frontend/src/pages/bceidform/ContactWizardStep.vue +++ b/frontend/src/pages/bceidform/ContactWizardStep.vue @@ -11,7 +11,10 @@ import type { FormDataDto, Contact } from "@/dto/ApplyClientNumberDto"; import { emptyContact } from "@/dto/ApplyClientNumberDto"; import type { CodeNameType, ModalNotification } from "@/dto/CommonTypesDto"; // Validators -import { isUniqueDescriptive } from "@/helpers/validators/GlobalValidators"; +import { + isUniqueDescriptive, + isNullOrUndefinedOrBlank, +} from "@/helpers/validators/GlobalValidators"; // @ts-ignore import Add16 from "@carbon/icons-vue/es/add/16"; @@ -112,10 +115,11 @@ watch([validation], () => emit("valid", checkValid())); emit("valid", false); const handleRemove = (index: number) => { - const selectedContact = - formData.location.contacts[index].firstName.length !== 0 - ? `${formData.location.contacts[index].firstName} ${formData.location.contacts[index].lastName}` - : "Contact #" + index; + const selectedContact = !isNullOrUndefinedOrBlank( + formData.location.contacts[index].firstName + ) + ? `${formData.location.contacts[index].firstName} ${formData.location.contacts[index].lastName}` + : "Contact #" + index; bus.emit({ message: selectedContact, kind: "Contact deleted", diff --git a/frontend/tests/components/components/grouping/AddressGroupComponent.cy.ts b/frontend/tests/components/components/grouping/AddressGroupComponent.cy.ts index 54c5f6c428..1e561e55e5 100644 --- a/frontend/tests/components/components/grouping/AddressGroupComponent.cy.ts +++ b/frontend/tests/components/components/grouping/AddressGroupComponent.cy.ts @@ -183,7 +183,7 @@ describe("", () => { .find("label") .and("include.text", "Postal code"); - // wait for the option's inner, standard HTML element to exist before clicking the combo-box + // Wait for the option's inner, standard HTML element to exist before clicking the combo-box cy.get("#country_0") .find('cds-combo-box-item[data-id="US"]') .shadow() @@ -196,6 +196,7 @@ describe("", () => { cy.get("#country_0") .find('cds-combo-box-item[data-id="US"]') + .should("be.visible") .click() .and("have.value", "United States of America"); @@ -209,6 +210,7 @@ describe("", () => { .and("have.value", "") .click() .find('cds-combo-box-item[data-id="IL"]') + .should("be.visible") .click() .and("have.value", "Illinois"); diff --git a/frontend/tests/unittests/pages/bceidform/ContactWizardStep.spec.ts b/frontend/tests/unittests/pages/bceidform/ContactWizardStep.spec.ts new file mode 100644 index 0000000000..8e8cc84f37 --- /dev/null +++ b/frontend/tests/unittests/pages/bceidform/ContactWizardStep.spec.ts @@ -0,0 +1,51 @@ +import { mount } from "@vue/test-utils"; +import { describe, it, expect } from "vitest"; +import ContactWizardStep from "@/pages/bceidform/ContactWizardStep.vue"; +import { emptyContact } from "@/dto/ApplyClientNumberDto"; +import { useEventBus } from "@vueuse/core"; +import type { ModalNotification } from "@/dto/CommonTypesDto"; +import type { Contact, FormDataDto } from "@/dto/ApplyClientNumberDto"; + +describe("ContactWizardStep.vue", () => { + describe("when contact's firstName is null", () => { + it("emits the confirmation event properly when Delete contact is clicked", async () => { + const wrapper = mount(ContactWizardStep, { + props: { + data: { + location: { + addresses: [], + contacts: [ + { + ...emptyContact, + firstName: "John", + lastName: "Doe", + } as Contact, + // And here is the contact to be deleted + { + ...emptyContact, + firstName: null, + lastName: null, + } as unknown as Contact, + ], + }, + } as unknown as FormDataDto, + active: false, + }, + }); + + const bus = useEventBus("modal-notification"); + + let payload: ModalNotification; + bus.on((_payload) => { + payload = _payload; + }); + + await wrapper.find("#deleteContact_1").trigger("click"); + + expect(payload!).toMatchObject({ + message: "Contact #1", + kind: "Contact deleted", + }); + }); + }); +}); diff --git a/legacy/pom.xml b/legacy/pom.xml index 643f9944e6..6f16021227 100644 --- a/legacy/pom.xml +++ b/legacy/pom.xml @@ -7,7 +7,7 @@ org.springframework.boot spring-boot-starter-parent - 3.1.3 + 3.1.5 @@ -44,7 +44,7 @@ ${maven.build.timestamp} yyyy-MM-dd HH:mm:ss - 1.19.0 + 1.19.1 5.9.1 1.9.1 @@ -136,7 +136,7 @@ org.testcontainers oracle-xe - 1.19.0 + 1.19.1 test @@ -152,7 +152,7 @@ com.github.tomakehurst wiremock-jre8-standalone - 2.35.1 + 3.0.1 test diff --git a/processor/pom.xml b/processor/pom.xml index 260f458f44..8cdf9afe66 100644 --- a/processor/pom.xml +++ b/processor/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-starter-parent - 3.1.3 + 3.1.5 @@ -43,7 +43,7 @@ ${maven.build.timestamp} yyyy-MM-dd HH:mm:ss - 1.19.0 + 1.19.1 5.9.1 1.9.1 @@ -140,7 +140,7 @@ org.testcontainers oracle-xe - 1.19.0 + 1.19.1 test