diff --git a/build.gradle b/build.gradle index bd26798e..e2084b7d 100644 --- a/build.gradle +++ b/build.gradle @@ -68,8 +68,8 @@ dependencies { compile group: 'com.amazonaws', name: 'aws-lambda-java-core', version: '1.1.0' compile group: "com.github.jknack", name: "handlebars", version: "4.2.0" compile group: 'org.xhtmlrenderer', name: 'flying-saucer-pdf-openpdf', version: '9.1.20' - compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.4.1' - compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.14.0' + compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.15.0' + compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.15.0' compile group: 'com.amazonaws', name: 'aws-lambda-java-log4j2', version: '1.5.1' compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.22.1' compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.22.1' @@ -78,7 +78,7 @@ dependencies { compile fileTree(dir: 'jars', include: '*.jar') testCompile group: 'junit', name: 'junit', version: '4.13.1' testCompile group: 'org.jsoup', name: 'jsoup', version: '1.15.3' - testCompile group: 'commons-io', name: 'commons-io', version: '2.7' + testCompile group: 'commons-io', name: 'commons-io', version: '2.14.0' testCompile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.12' } diff --git a/manifest.json b/manifest.json index 4fecf3b2..c6a6ac56 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,9 @@ "name": "doc-gen", "description": "", "team": "", - "documentation": "", - "language": "handlebars", + "documentation": "N/A", + "language": "java", + "language_version": "11", "terraform": false, "monorepo": false, "dynamo_tables": [] diff --git a/package-lock.json b/package-lock.json index fafc50c6..4a40f08f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,174 +1,211 @@ { + "name": "cvs-svc-doc-gen", + "lockfileVersion": 3, "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@babel/code-frame": { + "packages": { + "": { + "devDependencies": { + "husky": "^3.0.9" + } + }, + "node_modules/@babel/code-frame": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.12.13" } }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", "dev": true }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.14.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.14.0", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "@types/normalize-package-data": { + "node_modules/@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "requires": { + "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "caller-callsite": { + "node_modules/caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, - "requires": { + "dependencies": { "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "caller-path": { + "node_modules/caller-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, - "requires": { + "dependencies": { "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "callsites": { + "node_modules/callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "chalk": { + "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "ci-info": { + "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "color-convert": { + "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "requires": { + "dependencies": { "color-name": "1.1.3" } }, - "color-name": { + "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "cosmiconfig": { + "node_modules/cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, - "requires": { + "dependencies": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", "js-yaml": "^3.13.1", "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, - "cross-spawn": { + "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "requires": { + "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, - "end-of-stream": { + "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "requires": { + "dependencies": { "once": "^1.4.0" } }, - "error-ex": { + "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "requires": { + "dependencies": { "is-arrayish": "^0.2.1" } }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "execa": { + "node_modules/execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", "is-stream": "^1.1.0", @@ -176,66 +213,85 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "find-up": { + "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "requires": { + "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "get-stdin": { + "node_modules/get-stdin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "get-stream": { + "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, - "requires": { + "dependencies": { "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "hosted-git-info": { + "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "husky": { + "node_modules/husky": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz", "integrity": "sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==", "dev": true, - "requires": { + "hasInstallScript": true, + "dependencies": { "chalk": "^2.4.2", "ci-info": "^2.0.0", "cosmiconfig": "^5.2.1", @@ -247,388 +303,494 @@ "read-pkg": "^5.2.0", "run-node": "^1.0.0", "slash": "^3.0.0" + }, + "bin": { + "husky-run": "run.js", + "husky-upgrade": "lib/upgrader/bin.js" + }, + "engines": { + "node": ">=8.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/husky" } }, - "import-fresh": { + "node_modules/import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, - "requires": { + "dependencies": { "caller-path": "^2.0.0", "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "is-arrayish": { + "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, - "requires": { + "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-directory": { + "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "is-stream": { + "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "json-parse-better-errors": { + "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "json-parse-even-better-errors": { + "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "lines-and-columns": { + "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "locate-path": { + "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "requires": { + "dependencies": { "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "nice-try": { + "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "normalize-package-data": { + "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "requires": { + "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, - "requires": { + "dependencies": { "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "requires": { + "dependencies": { "wrappy": "1" } }, - "opencollective-postinstall": { + "node_modules/opencollective-postinstall": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true + "dev": true, + "bin": { + "opencollective-postinstall": "index.js" + } }, - "p-finally": { + "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "p-limit": { + "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "requires": { + "dependencies": { "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "parse-json": { + "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, - "requires": { + "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-key": { + "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "please-upgrade-node": { + "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, - "requires": { + "dependencies": { "semver-compare": "^1.0.0" } }, - "pump": { + "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "requires": { + "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, - "read-pkg": { + "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "requires": { + "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", "parse-json": "^5.0.0", "type-fest": "^0.6.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - } + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "resolve": { + "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, - "run-node": { + "node_modules/run-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", - "dev": true + "dev": true, + "bin": { + "run-node": "run-node" + }, + "engines": { + "node": ">=4" + } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } }, - "semver-compare": { + "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "shebang-command": { + "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "spdx-correct": { + "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "requires": { + "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-exceptions": { + "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, - "spdx-expression-parse": { + "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "requires": { + "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, - "spdx-license-ids": { + "node_modules/spdx-license-ids": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", "dev": true }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "strip-eof": { + "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "requires": { + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "type-fest": { + "node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "validate-npm-package-license": { + "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "requires": { + "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "which": { + "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", diff --git a/src/main/java/uk/gov/dvsa/enums/CertificateTemplates.java b/src/main/java/uk/gov/dvsa/enums/CertificateTemplates.java index de00f9f3..1066985e 100644 --- a/src/main/java/uk/gov/dvsa/enums/CertificateTemplates.java +++ b/src/main/java/uk/gov/dvsa/enums/CertificateTemplates.java @@ -42,7 +42,11 @@ public enum CertificateTemplates { IVA30("CommercialVehicles/IVA30"), - MSVA30("CommercialVehicles/MSVA30"); + MSVA30("CommercialVehicles/MSVA30"), + + VTG12("CommercialVehicles/Abandoned"), + + VTP12("CommercialVehicles/Abandoned"); private final String certificateTemplateName; diff --git a/src/main/java/uk/gov/dvsa/enums/CertificateTypes.java b/src/main/java/uk/gov/dvsa/enums/CertificateTypes.java index 54407460..274d62a5 100644 --- a/src/main/java/uk/gov/dvsa/enums/CertificateTypes.java +++ b/src/main/java/uk/gov/dvsa/enums/CertificateTypes.java @@ -30,6 +30,7 @@ public enum CertificateTypes { CVS_FAIL_WELSH("CVS/VTP30W"), CVS_FAIL_BILINGUAL("CVS/VTP30_BILINGUAL"), CVS_PSV_PRS("CVS/PSV_PRS"), + CVS_PSV_PRS_BILINGUAL("CVS/PSV_PRS_BILINGUAL"), CVS_HGV_PASS("CVS/VTG5"), CVS_HGV_PASS_WELSH("CVS/VTG5W"), @@ -41,7 +42,9 @@ public enum CertificateTypes { CVS_HGV_TRL_FAIL_WELSH("CVS/VTG30W"), CVS_HGV_TRL_FAIL_BILINGUAL("CVS/VTG30_BILINGUAL"), CVS_HGV_PRS("CVS/HGV_PRS"), + CVS_HGV_PRS_BILINGUAL("CVS/HGV_PRS_BILINGUAL"), CVS_TRL_PRS("CVS/TRL_PRS"), + CVS_TRL_PRS_BILINGUAL("CVS/TRL_PRS_BILINGUAL"), RWT_DATA("CVS/RWT"), ADR_PASS("CVS/ADR_PASS"), VTG6_VTG7("CVS/VTG6_VTG7"), @@ -52,7 +55,9 @@ public enum CertificateTypes { IVA30("CVS/IVA30"), - MSVA30("CVS/MSVA30"); + MSVA30("CVS/MSVA30"), + VTG12("CVS/VTG12"), + VTP12("CVS/VTP12"); private final String certificateType; diff --git a/src/main/java/uk/gov/dvsa/enums/DocumentsConfig.java b/src/main/java/uk/gov/dvsa/enums/DocumentsConfig.java index 5912c46f..e1b071f3 100644 --- a/src/main/java/uk/gov/dvsa/enums/DocumentsConfig.java +++ b/src/main/java/uk/gov/dvsa/enums/DocumentsConfig.java @@ -44,6 +44,9 @@ public enum DocumentsConfig { CVS_PSV_PRS(CertificateTypes.CVS_PSV_PRS.getCertificateType(), CvsPsvPRS.class, new String[]{CertificateTemplates.VTP20.getCertificateTemplateName(), CertificateTemplates.VTP30.getCertificateTemplateName()}), + CVS_PSV_PRS_BILINGUAL(CertificateTypes.CVS_PSV_PRS_BILINGUAL.getCertificateType(), CvsPsvPRSBilingual.class, + new String[]{CertificateTemplates.VTP20.getCertificateTemplateName(), CertificateTemplates.VTP30.getCertificateTemplateName(), + CertificateTemplates.VTP20W.getCertificateTemplateName(), CertificateTemplates.VTP30W.getCertificateTemplateName()}), VTP20(CertificateTypes.CVS_PASS.getCertificateType(), uk.gov.dvsa.model.cvs.VTP20.class, new String[]{CertificateTemplates.VTP20.getCertificateTemplateName()}), VTP20W(CertificateTypes.CVS_PASS_WELSH.getCertificateType(), uk.gov.dvsa.model.cvs.VTP20W.class, @@ -80,6 +83,9 @@ public enum DocumentsConfig { new String[]{CertificateTemplates.RWT_DATA.getCertificateTemplateName()}), CVS_HGV_PRS(CertificateTypes.CVS_HGV_PRS.getCertificateType(), uk.gov.dvsa.model.cvs.CvsHgvPRS.class, new String[]{CertificateTemplates.VTG5.getCertificateTemplateName(), CertificateTemplates.VTG30.getCertificateTemplateName()}), + CVS_HGV_PRS_BILINGUAL(CertificateTypes.CVS_HGV_PRS_BILINGUAL.getCertificateType(), uk.gov.dvsa.model.cvs.CvsHgvPRSBilingual.class, + new String[]{CertificateTemplates.VTG5.getCertificateTemplateName(), CertificateTemplates.VTG30.getCertificateTemplateName(), + CertificateTemplates.VTG5W.getCertificateTemplateName(), CertificateTemplates.VTG30W.getCertificateTemplateName()}), CVS_PASS_BILINGUAL(CertificateTypes.CVS_PASS_BILINGUAL.getCertificateType(), uk.gov.dvsa.model.cvs.CvsPsvPassBilingual.class, new String[]{CertificateTemplates.VTP20.getCertificateTemplateName(), CertificateTemplates.VTP20W.getCertificateTemplateName()}), CVS_HGV_PASS_BILINGUAL(CertificateTypes.CVS_HGV_PASS_BILINGUAL.getCertificateType(), uk.gov.dvsa.model.cvs.CvsHgvPassBilingual.class, @@ -91,6 +97,10 @@ public enum DocumentsConfig { CVS_TRL_PRS(CertificateTypes.CVS_TRL_PRS.getCertificateType(), uk.gov.dvsa.model.cvs.CvsTrlPRS.class, new String[]{CertificateTemplates.VTG5A.getCertificateTemplateName(), CertificateTemplates.VTG30.getCertificateTemplateName()}), + CVS_TRL_PRS_BILINGUAL(CertificateTypes.CVS_TRL_PRS_BILINGUAL.getCertificateType(), uk.gov.dvsa.model.cvs.CvsTrlPRSBilingual.class, + new String[]{CertificateTemplates.VTG5A.getCertificateTemplateName(), CertificateTemplates.VTG30.getCertificateTemplateName(), + CertificateTemplates.VTG5AW.getCertificateTemplateName(), CertificateTemplates.VTG30W.getCertificateTemplateName()}), + INSPECTION_CHECKLIST(CertificateTypes.INSPECTION_CHECKLIST.getCertificateType(), InspectionChecklist.class, new String[]{CertificateTemplates.INSPECTION_CHECKLIST.getCertificateTemplateName()}), @@ -98,7 +108,13 @@ public enum DocumentsConfig { new String[]{CertificateTemplates.IVA30.getCertificateTemplateName()}), MSVA30(CertificateTypes.MSVA30.getCertificateType(), MSVA30.class, - new String[]{CertificateTemplates.MSVA30.getCertificateTemplateName()}); + new String[]{CertificateTemplates.MSVA30.getCertificateTemplateName()}), + + VTG12(CertificateTypes.VTG12.getCertificateType(), VTG12.class, + new String[]{CertificateTemplates.VTG12.getCertificateTemplateName()}), + + VTP12(CertificateTypes.VTP12.getCertificateType(), VTP12.class, + new String[]{CertificateTemplates.VTP12.getCertificateTemplateName()}); private final String documentName; diff --git a/src/main/java/uk/gov/dvsa/model/cvs/AbandonedCertificate.java b/src/main/java/uk/gov/dvsa/model/cvs/AbandonedCertificate.java new file mode 100644 index 00000000..e00cd43f --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/AbandonedCertificate.java @@ -0,0 +1,51 @@ +package uk.gov.dvsa.model.cvs; + +import com.fasterxml.jackson.annotation.JsonProperty; +import uk.gov.dvsa.model.Document; +import uk.gov.dvsa.model.cvs.certificateData.AbandonedData; +import uk.gov.dvsa.model.cvs.certificateData.Signature; + +public abstract class AbandonedCertificate extends Document { + protected String regulationText; + protected String vehicleTypeText; + protected String titleTextIncludingRollingHeaders; + protected String sectionTextRef; + protected String formNumber; + @JsonProperty("ABANDONED_DATA") + private AbandonedData data; + @JsonProperty("Signature") + private Signature signature; + + public String getRegulationText() { return this.regulationText; } + + public String getVehicleTypeText() { return this.vehicleTypeText; } + + public String getTitleTextIncludingRollingHeaders() { + return this.titleTextIncludingRollingHeaders; + } + + public String getSectionTextRef() { return this.sectionTextRef; } + + public String getFormNumber() { return formNumber; } + + public AbandonedData getData() { + return data; + } + + public Signature getSignature() { + return signature; + } + + public Document setData(AbandonedData data) { + this.data = data; + return this; + } + + public void setSignature(Signature signature) { + this.signature = signature; + } + + public String getDocumentType() { + return this.getDocumentName().split("/")[1]; + } +} diff --git a/src/main/java/uk/gov/dvsa/model/cvs/CvsHgvPRSBilingual.java b/src/main/java/uk/gov/dvsa/model/cvs/CvsHgvPRSBilingual.java new file mode 100644 index 00000000..d0d9e1c5 --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/CvsHgvPRSBilingual.java @@ -0,0 +1,32 @@ +package uk.gov.dvsa.model.cvs; + +import uk.gov.dvsa.model.Document; +import uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh; + +public class CvsHgvPRSBilingual extends CvsHgvTrlFailBilingual { + + public String getTestType() { + return "HGV"; + } + + public String getPresentedDocumentNamePass() { + return "VTG5"; + } + + public String getPresentedDocumentNamePassWelsh() { + return "VTG5W"; + } + + public String getVersionNumberPass() { + return "1.0"; + } + + public String getVersionNumberPassWelsh() { + return "1.0"; + } + + public Document setData(CvsMotCertificateDataWelsh data) { + this.data = data; + return this; + } +} \ No newline at end of file diff --git a/src/main/java/uk/gov/dvsa/model/cvs/CvsPsvPRSBilingual.java b/src/main/java/uk/gov/dvsa/model/cvs/CvsPsvPRSBilingual.java new file mode 100644 index 00000000..dc63a758 --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/CvsPsvPRSBilingual.java @@ -0,0 +1,27 @@ +package uk.gov.dvsa.model.cvs; + +import uk.gov.dvsa.model.Document; +import uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh; + +public class CvsPsvPRSBilingual extends VTP30Bilingual { + public String getPresentedDocumentNamePass() { + return "VTP20"; + } + + public String getPresentedDocumentNamePassWelsh() { + return "VTP20W"; + } + + public String getVersionNumberPass() { + return "1.0"; + } + + public String getVersionNumberPassWelsh() { + return "1.0"; + } + + public Document setData(CvsMotCertificateDataWelsh data) { + this.data = data; + return this; + } +} diff --git a/src/main/java/uk/gov/dvsa/model/cvs/CvsTrlPRSBilingual.java b/src/main/java/uk/gov/dvsa/model/cvs/CvsTrlPRSBilingual.java new file mode 100644 index 00000000..50045362 --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/CvsTrlPRSBilingual.java @@ -0,0 +1,31 @@ +package uk.gov.dvsa.model.cvs; + +import uk.gov.dvsa.model.Document; +import uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh; + +public class CvsTrlPRSBilingual extends CvsHgvTrlFailBilingual { + public String getTestType() { + return "TRL"; + } + + public String getPresentedDocumentNamePass() { + return "VTG5A"; + } + + public String getPresentedDocumentNamePassWelsh() { + return "VTG5AW"; + } + + public String getVersionNumberPass() { + return "1.0"; + } + + public String getVersionNumberPassWelsh() { + return "1.0"; + } + + public Document setData(CvsMotCertificateDataWelsh data) { + this.data = data; + return this; + } +} diff --git a/src/main/java/uk/gov/dvsa/model/cvs/VTG12.java b/src/main/java/uk/gov/dvsa/model/cvs/VTG12.java new file mode 100644 index 00000000..a8ff2b96 --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/VTG12.java @@ -0,0 +1,13 @@ +package uk.gov.dvsa.model.cvs; + +public class VTG12 extends AbandonedCertificate { + + public VTG12() { + super(); + super.regulationText = "Regulations 7 and 8 of the Goods Vehicles (Plating and Testing) Regulations 1988 as Amended"; + super.vehicleTypeText = "In respect of the goods vehicle with registration number / chassis serial number / trailer identification mark :"; + super.titleTextIncludingRollingHeaders = "Goods Vehicle for Examination"; + super.formNumber = "0440"; + super.sectionTextRef = "49 and 51"; + } +} diff --git a/src/main/java/uk/gov/dvsa/model/cvs/VTP12.java b/src/main/java/uk/gov/dvsa/model/cvs/VTP12.java new file mode 100644 index 00000000..9ad313b3 --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/VTP12.java @@ -0,0 +1,13 @@ +package uk.gov.dvsa.model.cvs; + +public class VTP12 extends AbandonedCertificate { + + public VTP12() { + super(); + super.regulationText = "Regulation 13 of the Motor Vehicles (Tests) Regulations 1981 as amended"; + super.vehicleTypeText = "In respect of the public service vehicle with registration number / chassis serial number :"; + super.titleTextIncludingRollingHeaders = "Public Service Vehicle for Examination"; + super.formNumber = "0453"; + super.sectionTextRef = "45"; + } +} diff --git a/src/main/java/uk/gov/dvsa/model/cvs/certificateData/AbandonedData.java b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/AbandonedData.java new file mode 100644 index 00000000..e9ddf59c --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/AbandonedData.java @@ -0,0 +1,68 @@ +package uk.gov.dvsa.model.cvs.certificateData; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AbandonedData { + @JsonProperty("RegistrationNumber") + private String registrationNumber; + @JsonProperty("ReasonsForRefusal") + private String[] reasonsForRefusal; + @JsonProperty("TestStationName") + private String testStationName; + @JsonProperty("TestStationPNumber") + private String testStationPNumber; + @JsonProperty("IssuersName") + private String issuersName; + @JsonProperty("AdditionalComments") + private String additionalComments; + @JsonProperty("DateOfTheTest") + private String dateOfTheTest; + + public AbandonedData() { + } + + public AbandonedData(String registrationNumber, + String[] reasonsForRefusal, + String dateOfTheTest, + String testStationName, + String testStationPNumber, + String issuersName, + String additionalComments) { + this.registrationNumber = registrationNumber; + this.reasonsForRefusal = reasonsForRefusal; + this.dateOfTheTest = dateOfTheTest; + this.testStationName = testStationName; + this.testStationPNumber = testStationPNumber; + this.issuersName = issuersName; + this.additionalComments = additionalComments; + } + + public String[] getRegistrationNumber() { + return registrationNumber.split(""); + } + + public String[] getReasonsForRefusal() { + return reasonsForRefusal; + } + + public String getTestStationName() { + return testStationName; + } + + public String getTestStationPNumber() { + return testStationPNumber; + } + + public String getIssuersName() { + return issuersName; + } + + public String getAdditionalComments() { + return additionalComments; + } + + public String getDateOfTheTest() { + return dateOfTheTest; + } + +} diff --git a/src/main/java/uk/gov/dvsa/model/cvs/certificateData/CvsMotCertificateData.java b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/CvsMotCertificateData.java index e1a0e349..a0a43284 100644 --- a/src/main/java/uk/gov/dvsa/model/cvs/certificateData/CvsMotCertificateData.java +++ b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/CvsMotCertificateData.java @@ -98,6 +98,9 @@ public class CvsMotCertificateData { @JsonProperty("IsTrailer") private boolean isTrailer; + @JsonProperty("Recalls") + private Recalls recalls; + public String getSeatBeltTested() { return seatBeltTested; } @@ -378,4 +381,11 @@ public CvsMotCertificateData setIsTrailer(boolean isTrailerValue) { this.isTrailer = isTrailerValue; return this; } + + public Recalls getRecalls() {return recalls;} + + public CvsMotCertificateData setRecalls(Recalls recalls) { + this.recalls = recalls; + return this; + } } diff --git a/src/main/java/uk/gov/dvsa/model/cvs/certificateData/MsvaFailCertificateData.java b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/MsvaFailCertificateData.java index a2f3f7c9..721b09e5 100644 --- a/src/main/java/uk/gov/dvsa/model/cvs/certificateData/MsvaFailCertificateData.java +++ b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/MsvaFailCertificateData.java @@ -19,8 +19,8 @@ public class MsvaFailCertificateData { private String model; @JsonProperty("date") private String date; - @JsonProperty("retestDate") - private String retestDate; + @JsonProperty("reapplicationDate") + private String reapplicationDate; @JsonProperty("station") private String station; @JsonProperty("testerName") @@ -86,12 +86,12 @@ public void setDate(String date) { this.date = date; } - public String getRetestDate() { - return retestDate; + public String getReapplicationDate() { + return reapplicationDate; } - public void setRetestDate(String retestDate) { - this.retestDate = retestDate; + public void setReapplicationDate(String reapplicationDate) { + this.reapplicationDate = reapplicationDate; } public String getStation() { diff --git a/src/main/java/uk/gov/dvsa/model/cvs/certificateData/Recalls.java b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/Recalls.java new file mode 100644 index 00000000..5e150cdc --- /dev/null +++ b/src/main/java/uk/gov/dvsa/model/cvs/certificateData/Recalls.java @@ -0,0 +1,29 @@ +package uk.gov.dvsa.model.cvs.certificateData; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Recalls { + @JsonProperty + private String manufacturer; + @JsonProperty + private boolean hasRecall; + + public Recalls(){} + + public Recalls(String manufacturer, Boolean hasRecall){ + this.manufacturer = manufacturer; + this.hasRecall = hasRecall; + } + + public String getManufacturer() {return this.manufacturer;} + + public boolean isHasRecall() {return this.hasRecall;} + + public void setManufacturer(String manufacturer) {this.manufacturer = manufacturer;} + + public void setHasRecall(boolean hasRecall) {this.hasRecall = hasRecall;} + + + + +} diff --git a/src/main/resources/assets/images/info-icon.png b/src/main/resources/assets/images/info-icon.png new file mode 100644 index 00000000..1b93a95b Binary files /dev/null and b/src/main/resources/assets/images/info-icon.png differ diff --git a/src/main/resources/assets/stylesheets/Abandoned.hbs b/src/main/resources/assets/stylesheets/Abandoned.hbs new file mode 100644 index 00000000..4e4f5a7f --- /dev/null +++ b/src/main/resources/assets/stylesheets/Abandoned.hbs @@ -0,0 +1,218 @@ +@font-face { + font-family: nta; + font-weight: 100; + src: url({{root}}/assets/fonts/NTA-Light.ttf); + -fs-pdf-font-embed: embed; + -fs-pdf-font-encoding: Identity-H +} + +@font-face { + font-family: nta-bold; + font-weight: 700; + src: url({{root}}/assets/fonts/NTA-Bold.ttf); + -fs-pdf-font-embed: embed; + -fs-pdf-font-encoding: Identity-H +} + +@font-face { + font-family: gds-transport; + font-weight: 400; + src: url({{root}}/assets/fonts/GDSTransportWebsite.ttf); + -fs-pdf-font-embed: embed; + -fs-pdf-font-encoding: Identity-H +} + +body, +html { + font-family: nta; + font-weight: 100; + line-height: 1; + margin: 0; + -fs-page-sequence: start; + page-break-before: always +} + +.header__crest-img { + min-width: 180px; + min-height: 112px; + width: 180px; + height: 112px; + float: left; +} + +.header { + border-bottom: 4px solid black; + padding-bottom: 24px; +} + +.title-text { + padding-bottom: 6px; + margin-right: 1.8cm; + text-align: right; + margin-left: 210px; + font-weight: bold; + font-size: 21px; + line-height: 24px; +} + +.regulation-text { + margin-left: 290px; + text-align: right; +} + +.vin-wrapper { + padding: 10px 0 10px 0; +} + +.vin-text { + font-size: 1.0em; + font-weight: bold; + letter-spacing: 1000px; + text-transform: uppercase; + padding: 0 5px 0 5px; +} + +#sectionText { + padding-bottom: 24px; +} + +.standard-text { + padding-top: 4px; + padding-bottom: 4px; + margin-right: 2cm; +} + +/* pdf Page styling */ +@page { + size: A4 portrait; + margin: 3cm 1.5cm 50px 1cm; + @bottom-left { + content: element(footer-left); + } + @bottom-right { + content: element(footer-right); + } + @top-left { + content: element(running-header); + } +} +@page :first { + margin: 1cm 1.5cm 50px 1cm; + @top-left { + content: normal; + } +} + +.footer-left { + font-size: 1.25em; + position: running(footer-left); +} + +.footer-right { + text-align: right; + position: running(footer-right); +} + +/* the border is need to take up space so the text to the + right does not have the 2nd line move all the way back left */ +.header-left { + float: left; + border: 1px solid transparent; + width: 300px; + padding-top: 16px; + font-weight: bold; +} + +.running-header { + position: running(running-header); + border-bottom: 4px solid gray; + padding-bottom: 16px; +} + +.back-page { + page-break-before: always; +} + +.blue-text { + color: blue; +} + +.additional-comments-header { + margin-bottom: 20px; +} + +.additional-comments-box { + border: 1px solid black; + padding: 20px; +} + +.data-protection-box { + background: #d2d2d2; + padding: 5px; + margin-top: 10px; +} + +.data-protection-text { + padding-bottom: 10px; +} + +.bold-text { + font-weight: bold; +} + +.table { + width: 100%; + margin-bottom: 1em; + table-layout: auto; + margin-top: 30px; + border-collapse: separate; + border-spacing: 5pt; + page-break-inside: avoid; +} + +.table-row-cell { + border-style: solid; + border-width: 1px; + vertical-align: middle; + padding: 6px 0 6px 0; + margin: 6px 0 6px 0; +} + +.table-row-left { + width: 25%; + border: none; +} + +.table-row-right { + width: 75%; + border: 1px solid black; + padding-left: 5px; +} + +.last-row-first-column { + width: 25%; + border: none; +} + +.last-row-second-column { + width: 30%; + border: 1px solid black; + padding-left: 5px; +} + +.last-row-third-column { + width: 15%; + border: none; + text-align: center; +} + +.last-row-fourth-column { + width: 30%; + border: 1px solid black; + padding-left: 5px; +} + +.right-align { + text-align: right; + display: block; +} \ No newline at end of file diff --git a/src/main/resources/assets/stylesheets/cvs-version-1.hbs b/src/main/resources/assets/stylesheets/cvs-version-1.hbs index 9affbbd1..d3bb6e6c 100644 --- a/src/main/resources/assets/stylesheets/cvs-version-1.hbs +++ b/src/main/resources/assets/stylesheets/cvs-version-1.hbs @@ -285,8 +285,8 @@ font-weight: 700 .results__wrapper { border-left: 10pt solid #9e9e9e; -padding: 8.5pt 0 8.5pt 20pt; -margin-bottom: 11pt +padding: 8.5pt 0 0 20pt; +margin-bottom: 0 } .results--welsh .results__wrapper { @@ -387,6 +387,40 @@ display: none display: block } +.recalls { +margin-top: 15pt; +padding-top: 0pt; +margin-bottom: 15pt; +display: inline-block; +} + +.recalls__icon { +padding: 5pt 15pt 0pt 0pt; +float: left; +} + +.recalls__icon-img { +height: 22pt; +} + +.recalls__content { +padding-left: 5pt; +display: inline-block; +} + +.recalls__content-header { +padding-bottom: 5pt; +margin-bottom: 0pt; +font-size: 1.5em; +font-family: nta-bold; +font-weight: 700; +} + +.recalls__content-text { +padding-top: 1pt; +margin-top: 0pt; +} + .test-information__two-columns { display: table } @@ -534,7 +568,7 @@ margin-bottom: 11pt .seat-belt-information__two-columns-two { width: 50%; display: table-cell; -vertical-align: top; +vertical-align: bottom; text-align: left } diff --git a/src/main/resources/assets/stylesheets/iva-msva-30.hbs b/src/main/resources/assets/stylesheets/iva-msva-30.hbs index 3428c108..ac40fe33 100644 --- a/src/main/resources/assets/stylesheets/iva-msva-30.hbs +++ b/src/main/resources/assets/stylesheets/iva-msva-30.hbs @@ -141,14 +141,6 @@ text-align: center-left; width:100%; } -.separate-page{ -page-break-after: always; -} - -#back-page{ -page-break-after: avoid; -} - .section-border { border-style: solid; border-color: black; @@ -167,6 +159,10 @@ margin-left: -1px; width: 100.3%; } +#defect-section { +page-break-inside: auto; +} + #cert-subtitle{ margin-top: 0px; font-size: 85%; @@ -228,6 +224,11 @@ text-transform:uppercase; list-style-type: none; } +.required-standard-list-item { +page-break-inside: avoid; +margin-bottom: 20px; +} + .required-standard-section { text-transform:uppercase; } diff --git a/src/main/resources/views/CommercialVehicles/ADR_PASS.hbs b/src/main/resources/views/CommercialVehicles/ADR_PASS.hbs index 2f27e0b5..f53fd235 100644 --- a/src/main/resources/views/CommercialVehicles/ADR_PASS.hbs +++ b/src/main/resources/views/CommercialVehicles/ADR_PASS.hbs @@ -21,11 +21,16 @@ {{#if adrData.isApplicantDetailsNull}}
{{else}} -

{{#if adrData.applicantDetails.name}}{{adrData.applicantDetails.name}}{{/if}}

-

{{#if adrData.applicantDetails.address1}}{{adrData.applicantDetails.address1}}, {{/if}} - {{#if adrData.applicantDetails.address2}}{{adrData.applicantDetails.address2}}, {{/if}} - {{#if adrData.applicantDetails.city}}{{adrData.applicantDetails.city}}, {{/if}} - {{#if adrData.applicantDetails.postCode}}{{adrData.applicantDetails.postCode}}{{/if}}

+

{{#if adrData.applicantDetails.name}} + {{adrData.applicantDetails.name}}{{/if}}

+

{{#if adrData.applicantDetails.address1}} + {{adrData.applicantDetails.address1}}, {{/if}} + {{#if adrData.applicantDetails.postTown}} + {{adrData.applicantDetails.postTown}}, {{/if}} + {{#if adrData.applicantDetails.address2}} + {{adrData.applicantDetails.address2}}, {{/if}} + {{#if adrData.applicantDetails.postCode}} + {{adrData.applicantDetails.postCode}}{{/if}}

{{/if}}
diff --git a/src/main/resources/views/CommercialVehicles/Abandoned.hbs b/src/main/resources/views/CommercialVehicles/Abandoned.hbs new file mode 100644 index 00000000..95995329 --- /dev/null +++ b/src/main/resources/views/CommercialVehicles/Abandoned.hbs @@ -0,0 +1,129 @@ + + + + {{documentType}} + + + + +
+
+
+ + +
+ DVSA +
+
+ Notification of Failure to Comply with the Conditions of Acceptance of a +
+ {{titleTextIncludingRollingHeaders}} ({{documentType}}) +
+
+
+
+ {{regulationText}} +
+
+ + + + + + +
+ {{vehicleTypeText}} +
+ +
+ {{#each data.registrationNumber}} + + {{this}} + + {{/each}} +
+ + +
+ having been submitted for an examination under Section {{sectionTextRef}} of the Road Traffic Act 1988, it is hereby notified that the examination did not proceed or could not be completed because of a failure to comply with those conditions of acceptance for examination recorded below. +
+ + + Reason(s) for refusal to accept or complete examination: + + + +
+
+ {{documentType}} +
+ + Notification of Failure to Comply with the Conditions of Acceptance of a {{titleTextIncludingRollingHeaders}} + +
+ + +
    + {{#each data.reasonsForRefusal}} +
  • {{this}}
  • + {{/each}} +
+ +
+
+
+ +
+ +
Additional Comments
+ +
+ {{data.additionalComments}} +
+ + + + + + + + + + + + + + + + + + + + +
Signature: + signature +
Print Name: {{data.issuersName}}
Location: {{data.testStationName}}
Location Number: {{data.testStationPNumber}}Date: {{data.dateOfTheTest}}
+ +
+
Data Protection
+
+ We collect, use and store your personal data so that we can correctly issue your vehicle with a {{documentType}} failure notification. +
+
+ We may share your personal data if we have a lawful reason. For example as part of a criminal investigation or to prevent fraud. Find out more at + www.gov.uk/dvsa/privacy. +
+
+
+ + + diff --git a/src/main/resources/views/CommercialVehicles/IVA30.hbs b/src/main/resources/views/CommercialVehicles/IVA30.hbs index d02c491b..2e0e15e9 100644 --- a/src/main/resources/views/CommercialVehicles/IVA30.hbs +++ b/src/main/resources/views/CommercialVehicles/IVA30.hbs @@ -34,11 +34,10 @@
-

INDIVIDUAL VEHICLE APPROVAL (IVA)

NOTIFICATION OF REFUSAL TO ISSUE AN INDIVIDUAL APPROVAL CERTIFICATE

@@ -70,7 +69,7 @@ -
+

DEFECT DETAILS

@@ -81,12 +80,12 @@ {{#if ivaData.requiredStandards}}
    {{#each ivaData.requiredStandards}} -
  • +
  • {{this.sectionNumber}} - {{this.sectionDescription}}

    -

    RS{{this.rsNumber}}: {{this.requiredStandard}}

    +

    RS{{this.rsNumber}}: {{this.requiredStandard}} {{#if this.prs}} (PRS) {{/if}}

    {{#if this.additionalNotes}} Additional Information: {{this.additionalNotes}} {{/if}} @@ -97,55 +96,55 @@ {{/if}}
+
+

I hereby refuse an Individual Approval Certificate in respect of the above described vehicle on the + grounds that the vehicle fails to comply with the relevant requirements prescribed under The Road Vehicles + (Approval) Regulations 2020

-

I hereby refuse an Individual Approval Certificate in respect of the above described vehicle on the - grounds that the vehicle fails to comply with the relevant requirements prescribed under The Road Vehicles - (Approval) Regulations 2020

- - - - - - - - - - - - - - - - - -
-
- Signed: -
- signature
-
-
Reapplication required by: {{ivaData.reapplicationDate}}
Date: {{ivaData.date}}
Name: {{ivaData.testerName}} Station: {{ivaData.station}}

The following additional defects may result in the vehicle not complying with the requirements - of The Road Vehicles (Construction and Use) Regulations 1986. (See notes overleaf)

- {{#if ivaData.additionalDefects}} -
    - {{#each ivaData.additionalDefects}} -
  • -
    - - {{this.defectName}} - -
    -
    - - {{this.defectNotes}} - -
    -
  • - {{/each}} -
- {{/if}} -
+ + + + + + + + + + + + + + + +
+
+ Signed: +
+ signature
+
+
Reapplication required by: {{ivaData.reapplicationDate}}
Date: {{ivaData.date}}
Name: {{ivaData.testerName}} Station: {{ivaData.station}}

The following additional defects may result in the vehicle not complying with the requirements + of The Road Vehicles (Construction and Use) Regulations 1986. (See notes overleaf)

+ {{#if ivaData.additionalDefects}} +
    + {{#each ivaData.additionalDefects}} +
  • +
    + + {{this.defectName}} + +
    +
    + + {{this.defectNotes}} + +
    +
  • + {{/each}} +
+ {{/if}} +
+
@@ -159,10 +158,6 @@ investigation or to prevent fraud. Find out more at www.gov.uk/dvsa/privacy

-
- - -
@@ -171,7 +166,7 @@

This notification indicates the items of non-compliance being the reason(s) why an Individual Approval Certificate (IAC) has not been issued. An application - for re-examination can be made up to 6 calendar months following the issue date + for re-examination must be made no later than 6 months following the issue date of the first "Notification of Refusal" in respect of the original application. In any other case, a new application and a full fee must be submitted.

When modification/rectification has been completed, or additional evidence of @@ -271,6 +266,5 @@ test as this may affect the outcome of the appeal.

-
\ No newline at end of file diff --git a/src/main/resources/views/CommercialVehicles/MSVA30.hbs b/src/main/resources/views/CommercialVehicles/MSVA30.hbs index d262d539..266e73f7 100644 --- a/src/main/resources/views/CommercialVehicles/MSVA30.hbs +++ b/src/main/resources/views/CommercialVehicles/MSVA30.hbs @@ -34,11 +34,10 @@
-

MOTORCYCLE SINGLE VEHICLE APPROVAL (MSVA)

NOTIFICATION OF REFUSAL TO ISSUE A MINISTERS APPROVAL CERTIFICATE

@@ -51,7 +50,7 @@ - + @@ -65,7 +64,7 @@
Vehicle 'Z' No.: {{msvaData.vehicleZNumber}} Vehicle 'Z' No: {{msvaData.vehicleZNumber}} Type: {{msvaData.type}}
-
+

DEFECT DETAILS

@@ -76,12 +75,12 @@ {{#if msvaData.requiredStandards}}
    {{#each msvaData.requiredStandards}} -
  • +
  • {{this.sectionNumber}} - {{this.sectionDescription}}

    -

    RS{{this.rsNumber}}: {{this.requiredStandard}}

    +

    RS{{this.rsNumber}}: {{this.requiredStandard}} {{#if this.prs}} (PRS) {{/if}}

    {{#if this.additionalNotes}} Additional Information: {{this.additionalNotes}} {{/if}} @@ -92,56 +91,54 @@ {{/if}}
- -

I hereby refuse a Minister's Approval Certificate in respect of the above described vehicle on the - grounds that the vehicle fails to comply with the relevant requirements prescribed under section 54 of - The Road Traffic Act 1988

- - - - - - - - - - - - - - - - - -
-
- Signed: -
- signature
-
-
Retest required by: {{msvaData.retestDate}}
Date: {{msvaData.date}}
Name: {{msvaData.testerName}} Station: {{msvaData.station}}

The following additional defects may result in the vehicle not complying with the requirements - of The Road Vehicles (Construction and Use) Regulations 1986. (See notes overleaf)

- {{#if msvaData.additionalDefects}} -
    - {{#each msvaData.additionalDefects}} -
  • -
    - - {{this.defectName}} - -
    -
    - - {{this.defectNotes}} - -
    -
  • - {{/each}} -
- {{/if}} -
- - +
+

I hereby refuse a Minister's Approval Certificate in respect of the above described vehicle on the + grounds that the vehicle fails to comply with the relevant requirements prescribed under section 54 of + The Road Traffic Act 1988

+ + + + + + + + + + + + + + + + +
+
+ Signed: +
+ signature
+
+
Reapplication required by: {{msvaData.reapplicationDate}}
Date: {{msvaData.date}}
Name: {{msvaData.testerName}} Station: {{msvaData.station}}

The following additional defects may result in the vehicle not complying with the requirements + of The Road Vehicles (Construction and Use) Regulations 1986. (See notes overleaf)

+ {{#if msvaData.additionalDefects}} +
    + {{#each msvaData.additionalDefects}} +
  • +
    + + {{this.defectName}} + +
    +
    + + {{this.defectNotes}} + +
    +
  • + {{/each}} +
+ {{/if}} +
+
@@ -154,10 +151,6 @@ investigation or to prevent fraud. Find out more at www.gov.uk/dvsa/privacy

-
- - -
@@ -166,7 +159,7 @@

This notification indicates the items of non-compliance being the reason(s) why a Minister's Approval Certificate (MAC) has not been issued. An application - for re-examination can be made up to 6 calendar months following the issue date + for re-examination must be made no later than 6 months following the issue date of the first "Notification of Refusal" in respect of the original application. In any other case, a new application and a full fee must be submitted.

When modification/rectification, etc. has been completed an application for a re-examination (verbally or in writing) @@ -242,6 +235,5 @@ test as this may affect the outcome of the appeal.

-
\ No newline at end of file diff --git a/src/main/resources/views/CommercialVehicles/VTG30.hbs b/src/main/resources/views/CommercialVehicles/VTG30.hbs index 485525e4..1e3eb27e 100644 --- a/src/main/resources/views/CommercialVehicles/VTG30.hbs +++ b/src/main/resources/views/CommercialVehicles/VTG30.hbs @@ -267,6 +267,11 @@
+ + {{#if failData.recalls.hasRecall}} + {{~> views/CommercialVehicles/recalls manufacturer=failData.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/VTG30Welsh.hbs b/src/main/resources/views/CommercialVehicles/VTG30Welsh.hbs index 57bd4f7e..87f84b06 100644 --- a/src/main/resources/views/CommercialVehicles/VTG30Welsh.hbs +++ b/src/main/resources/views/CommercialVehicles/VTG30Welsh.hbs @@ -267,6 +267,11 @@
+ + {{#if failData.recalls.hasRecall}} + {{~> views/CommercialVehicles/recallsWelsh manufacturer=failData.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/fail.hbs b/src/main/resources/views/CommercialVehicles/fail.hbs index 9707a2e9..b4d95a86 100644 --- a/src/main/resources/views/CommercialVehicles/fail.hbs +++ b/src/main/resources/views/CommercialVehicles/fail.hbs @@ -244,6 +244,11 @@
+ + {{#if failData.recalls.hasRecall}} + {{~> views/CommercialVehicles/recalls manufacturer=failData.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/failWelsh.hbs b/src/main/resources/views/CommercialVehicles/failWelsh.hbs index e45b4604..6086edc9 100644 --- a/src/main/resources/views/CommercialVehicles/failWelsh.hbs +++ b/src/main/resources/views/CommercialVehicles/failWelsh.hbs @@ -244,6 +244,11 @@
+ + {{#if failData.recalls.hasRecall}} + {{~> views/CommercialVehicles/recallsWelsh manufacturer=failData.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/pass.hbs b/src/main/resources/views/CommercialVehicles/pass.hbs index 7cf6480e..42d3cea6 100644 --- a/src/main/resources/views/CommercialVehicles/pass.hbs +++ b/src/main/resources/views/CommercialVehicles/pass.hbs @@ -270,6 +270,11 @@
+ + {{#if data.recalls.hasRecall}} + {{~> views/CommercialVehicles/recalls manufacturer=data.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/passNoSeatbeltFields.hbs b/src/main/resources/views/CommercialVehicles/passNoSeatbeltFields.hbs index a59c0fbb..6165d9fe 100644 --- a/src/main/resources/views/CommercialVehicles/passNoSeatbeltFields.hbs +++ b/src/main/resources/views/CommercialVehicles/passNoSeatbeltFields.hbs @@ -293,6 +293,11 @@
+ + {{#if data.recalls.hasRecall}} + {{~> views/CommercialVehicles/recalls manufacturer=data.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/passNoSeatbeltFieldsWelsh.hbs b/src/main/resources/views/CommercialVehicles/passNoSeatbeltFieldsWelsh.hbs index d438069a..cb79f3bb 100644 --- a/src/main/resources/views/CommercialVehicles/passNoSeatbeltFieldsWelsh.hbs +++ b/src/main/resources/views/CommercialVehicles/passNoSeatbeltFieldsWelsh.hbs @@ -293,6 +293,11 @@
+ + {{#if data.recalls.hasRecall}} + {{~> views/CommercialVehicles/recallsWelsh manufacturer=data.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/passWelsh.hbs b/src/main/resources/views/CommercialVehicles/passWelsh.hbs index 570c19f8..ec481359 100644 --- a/src/main/resources/views/CommercialVehicles/passWelsh.hbs +++ b/src/main/resources/views/CommercialVehicles/passWelsh.hbs @@ -270,6 +270,11 @@
+ + {{#if data.recalls.hasRecall}} + {{~> views/CommercialVehicles/recallsWelsh manufacturer=data.recalls.manufacturer}} + {{/if}} +
diff --git a/src/main/resources/views/CommercialVehicles/recalls.hbs b/src/main/resources/views/CommercialVehicles/recalls.hbs new file mode 100644 index 00000000..2c6747f8 --- /dev/null +++ b/src/main/resources/views/CommercialVehicles/recalls.hbs @@ -0,0 +1,9 @@ +
+
+ info +
+
+
This vehicle has an outstanding recall
+ Contact your nearest {{manufacturer}} dealership for information and to arrange a free repair. +
+
diff --git a/src/main/resources/views/CommercialVehicles/recallsWelsh.hbs b/src/main/resources/views/CommercialVehicles/recallsWelsh.hbs new file mode 100644 index 00000000..a1d7f131 --- /dev/null +++ b/src/main/resources/views/CommercialVehicles/recallsWelsh.hbs @@ -0,0 +1,9 @@ +
+
+ info +
+
+
Mae gan y cerbyd hwn wedi cael ei alw'n ôl
+ Cysylltwch â'ch agosaf {{manufacturer}} deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim. +
+
\ No newline at end of file diff --git a/src/test/java/htmlverification/framework/component/DefectSummaryComponent.java b/src/test/java/htmlverification/framework/component/DefectSummaryComponent.java index 8c52c83a..082fdbff 100644 --- a/src/test/java/htmlverification/framework/component/DefectSummaryComponent.java +++ b/src/test/java/htmlverification/framework/component/DefectSummaryComponent.java @@ -19,9 +19,8 @@ public class DefectSummaryComponent { public static final String MAJOR_DEFECTS_HEADER_TEXT_WELSH_CVS = "Atgyweirio ar unwaith (diffygion mawr)"; public static final String DANGEROUS_DEFECTS_HEADER_PARTIAL_TEXT_WELSH = "Peidiwch â gyrru nes iddo gael ei drwsio (diffygion peryglus)"; public static final String DANGEROUS_DEFECTS_HEADER_PARTIAL_TEXT_WELSH_CVS = "Peidiwch â gyrru nes ei fod wedi cael ei atgyweirio (diffygion peryglus)"; - public static final String DANGEROUS_DEFECTS_HEADER_TEXT_WELSH_CVS = "Peidiwch â gyrru nes ei fod wedi cael ei atgyweirio"; - + public static final String PRS_DEFECTS_HEADER_TEXT_WELSH_CVS = "Diffygion wedi'u cywiro ar adeg y prawf"; //CVS only public static final String PRS_DEFECTS_HEADER_TEXT = "Monitor and repair if necessary (advisories)"; diff --git a/src/test/java/htmlverification/framework/page_object/CertificatePageObject.java b/src/test/java/htmlverification/framework/page_object/CertificatePageObject.java index d591e3f8..dcafba36 100644 --- a/src/test/java/htmlverification/framework/page_object/CertificatePageObject.java +++ b/src/test/java/htmlverification/framework/page_object/CertificatePageObject.java @@ -48,6 +48,10 @@ public String getMileage() { return getElementById(MILEAGE_ID.getSelector()).text(); } + public String getRecallsHeader() {return getElementById(RECALLS_HEADER.getSelector()).text();} + + public String getRecallsBody() {return getElementById(RECALLS_BODY.getSelector()).text();} + public String getDateOfTheTest() { return getElementById(DATE_OF_THE_TEST_ID.getSelector()).text(); } @@ -382,4 +386,80 @@ public String getAxle3FitmentCode() { } public String getAxle4FitmentCode() { return getElementById(AXLE4_FITMENT_CODE.getSelector()).text(); } -} + + public String getDocumentType() { + return getElementById(DOCUMENT_TYPE.getSelector()).text(); + } + + public String getRegulationText() { + return getElementById(REGULATION_TEXT.getSelector()).text(); + } + + public String getSpacedRegistrationNumber(Integer index) { + return getElementById(REGISTRATION_TEXT.getSelector()+index).text(); + } + + public String getFirstPageTitle() { + return getElementById(FIRST_PAGE_TITLE.getSelector()).text(); + } + + public String getFooterDocumentType() { + return getElementById(FOOTER_DOCUMENT_TYPE.getSelector()).text(); + } + + public String getFooterTestNumber() { + return getElementById(FOOTER_TEST_NUMBER.getSelector()).text(); + } + + public String getFooterDatePopulated() { + return getElementById(FOOTER_DATE_POPULATED.getSelector()).text(); + } + + public String getRunningHeaderLeft() { + return getElement("." + RUNNING_HEADER_LEFT.getSelector()).text(); + } + + public String getRunningHeaderRight() { + return getElement("." + RUNNING_HEADER.getSelector()).getElementsByTag("span").text(); + } + + public String getVehicleTestType() { + return getElementById(VEHICLE_TYPE_TEXT.getSelector()).text(); + } + + public String getSanctionText() { + return getElementById(SECTION_TEXT.getSelector()).text(); + } + + public String getReasonsForAbandonment(Integer index) { + return getElementById(REASONS_FOR_ABANDONMENT.getSelector()+index).text(); + } + + public String getAdditionalComments() { + return getElementById(ADDITIONAL_COMMENTS.getSelector()).text(); + } + + public String getDataProtectionWithDocumentType() { + return getElementById(DATA_PROTECTION_WITH_DOCUMENT_TYPE.getSelector()).text(); + } + + public String getSignature() { + return getElementById(SIGNATURE.getSelector()).attr("src"); + } + + public String getPrintName() { + return getElementById(PRINT_NAME.getSelector()).text(); + } + + public String getLocation() { + return getElementById(LOCATION.getSelector()).text(); + } + + public String getLocationNumber() { + return getElementById(LOCATION_NUMBER.getSelector()).text(); + } + + public String getDateOfTest() { + return getElementById(DATE_OF_THE_TEST.getSelector()).text(); + } +} \ No newline at end of file diff --git a/src/test/java/htmlverification/framework/page_object/CertificatePageSelector.java b/src/test/java/htmlverification/framework/page_object/CertificatePageSelector.java index 4bef9d18..b507086f 100644 --- a/src/test/java/htmlverification/framework/page_object/CertificatePageSelector.java +++ b/src/test/java/htmlverification/framework/page_object/CertificatePageSelector.java @@ -17,6 +17,8 @@ public enum CertificatePageSelector { MOT_TEST_NUMBER_ID("mot-test-number"), TEST_STATION_ID("test-station-id"), RESULTS_SUMMARY_CLASS("results"), + RECALLS_HEADER("recalls__content-header"), + RECALLS_BODY("recalls__content-text"), DVSA_LOGO_ID("logo"), EXPIRY_DATE_ID("expiry-date"), ISSUER_INFO_ID("issuer-info"), @@ -117,7 +119,28 @@ public enum CertificatePageSelector { AXLE1_FITMENT_CODE("axle1_fitmentCode"), AXLE2_FITMENT_CODE("axle2_fitmentCode"), AXLE3_FITMENT_CODE("axle3_fitmentCode"), - AXLE4_FITMENT_CODE("axle4_fitmentCode"); + AXLE4_FITMENT_CODE("axle4_fitmentCode"), + DOCUMENT_TYPE("documentType"), + REGISTRATION_TEXT("reg_"), + REGULATION_TEXT("regulationText"), + FIRST_PAGE_TITLE("firstPageTitle"), + FOOTER_DOCUMENT_TYPE("footerDocumentType"), + FOOTER_TEST_NUMBER("footerTestNumber"), + FOOTER_DATE_POPULATED("footerDatePopulated"), + RUNNING_HEADER_LEFT("header-left"), + RUNNING_HEADER("running-header"), + VEHICLE_TYPE_TEXT("vehicleTypeText"), + RUNNING_HEADER_TEXT("runningHeaderText"), + REASONS_FOR_ABANDONMENT("reasonsForAbandonment_"), + ADDITIONAL_COMMENTS("additionalComments"), + DATA_PROTECTION_WITH_DOCUMENT_TYPE("dataProtectionWithDocumentType"), + SIGNATURE("signature"), + PRINT_NAME("printName"), + LOCATION("location"), + LOCATION_NUMBER("locationNumber"), + DATE_OF_THE_TEST("dateOfTheTest"), + SECTION_TEXT("sectionText"); + private final String selector; diff --git a/src/test/java/htmlverification/framework/page_object/MsvaPageObject.java b/src/test/java/htmlverification/framework/page_object/MsvaPageObject.java index ee731514..86f59815 100644 --- a/src/test/java/htmlverification/framework/page_object/MsvaPageObject.java +++ b/src/test/java/htmlverification/framework/page_object/MsvaPageObject.java @@ -37,7 +37,7 @@ public String getDate() { return getElementById(DATE.getSelector()).text(); } - public String getRetestDate() { + public String getReapplicationDate() { return getElementById(RE_APP_DATE.getSelector()).text(); } diff --git a/src/test/java/htmlverification/service/CvsCertificateTestDataProvider.java b/src/test/java/htmlverification/service/CvsCertificateTestDataProvider.java index 23028c5a..6e3e095d 100644 --- a/src/test/java/htmlverification/service/CvsCertificateTestDataProvider.java +++ b/src/test/java/htmlverification/service/CvsCertificateTestDataProvider.java @@ -99,7 +99,10 @@ public static VTP20 getVtp20() { .setIssuersName("R.DREWNO") .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") - .setEarliestDateOfTheNextTest("13.10.2018"); + .setEarliestDateOfTheNextTest("13.10.2018") + .setRecalls( + new Recalls("Aston Martin", true) + ); vtp20.setData(vtp20Data); @@ -150,7 +153,10 @@ public static VTP20W getVtp20W() { .setIssuersName("R.DREWNO") .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") - .setEarliestDateOfTheNextTest("13.10.2018"); + .setEarliestDateOfTheNextTest("13.10.2018") + .setRecalls( + new Recalls("Aston Martin", true) + ); vtp20W.setData(vtp20WData); @@ -216,7 +222,10 @@ public static VTP30 getVtp30() { .setIssuersName("R.DREWNO") .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") - .setEarliestDateOfTheNextTest("13.10.2018"); + .setEarliestDateOfTheNextTest("13.10.2018") + .setRecalls( + new Recalls("Aston Martin", true) + ); vtp30Data .setMajorDefectsHeader(DefectSummaryComponent.MAJOR_DEFECTS_HEADER_TEXT) @@ -274,6 +283,9 @@ public static VTP30W getVtp30w() { .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") .setEarliestDateOfTheNextTest("13.10.2018") + .setRecalls( + new Recalls("Aston Martin", true) + ) .setOdometerUnit("mi"); vtp30Data @@ -281,7 +293,9 @@ public static VTP30W getVtp30w() { .setDangerousDefectsWelsh(generateRFRs(DANGEROUS_RFR_TEXT, 1)) .setMajorDefectsHeader(DefectSummaryComponent.MAJOR_DEFECTS_HEADER_TEXT_WELSH) .setDangerousDefectsHeader(DefectSummaryComponent.DANGEROUS_DEFECTS_HEADER_PARTIAL_TEXT_WELSH_CVS) - .setPrsDefects(generateRFRs(PRS_RFR_TEXT, 1)); + .setPrsDefects(generateRFRs(PRS_RFR_TEXT, 1)) + .setMajorDefects(generateRFRs(MAJOR_RFR_TEXT, 1)) + .setDangerousDefects(generateRFRs(DANGEROUS_RFR_TEXT, 1)); vtp30.setFailData(vtp30Data); @@ -329,7 +343,10 @@ public static VTG5 getVtg5() { .setIssuersName("R.DREWNO") .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") - .setEarliestDateOfTheNextTest("13.10.2018"); + .setEarliestDateOfTheNextTest("13.10.2018") + .setRecalls( + new Recalls("Aston Martin", true) + ); vtg5.setData(vtg5Data); @@ -366,7 +383,10 @@ public static VTG5A getVtg5a() { .setTestNumber("1806 8140 0628") .setEarliestDateOfTheNextTest("13.10.2018") .setTrn("ABC1234") - .setIsTrailer(true); + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); vtg5a.setData(vtg5aData); @@ -414,7 +434,10 @@ public static VTG5W getVTG5W() { .setIssuersName("TESTER NAME") .setTestStationName("TEST STATION NAME") .setTestNumber("X01X00001") - .setEarliestDateOfTheNextTest("01.07.2024"); + .setEarliestDateOfTheNextTest("01.07.2024") + .setRecalls( + new Recalls("Aston Martin", true) + ); vtg5W.setData(vtg5WData); @@ -454,7 +477,10 @@ public static VTG5AW getVTG5AW() { .setTestNumber("1806 8140 0628") .setEarliestDateOfTheNextTest("13.10.2018") .setTrn("ABC1234") - .setIsTrailer(true); + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); vtg5AW.setData(vtg5AWData); @@ -503,7 +529,10 @@ public static CvsHgvPassBilingual getCvsHgvPassBilingual() { .setIssuersName("TESTER NAME") .setTestStationName("TEST STATION NAME") .setTestNumber("X01X00001") - .setEarliestDateOfTheNextTest("01.07.2024"); + .setEarliestDateOfTheNextTest("01.07.2024") + .setRecalls( + new Recalls("Aston Martin", true) + ); hgvPassBilingual.setData(bilingualData); return hgvPassBilingual; @@ -546,7 +575,10 @@ public static CvsPsvPassBilingual getCvsPsvPassBilingual() { .setIssuersName("R.DREWNO") .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") - .setEarliestDateOfTheNextTest("13.10.2018"); + .setEarliestDateOfTheNextTest("13.10.2018") + .setRecalls( + new Recalls("Aston Martin", true) + ); psvPassBilingual.setData(bilingualData); return psvPassBilingual; @@ -620,12 +652,99 @@ public static CvsTrlPassBilingual getCvsTrlPassBilingual() { .setTestNumber("1806 8140 0628") .setEarliestDateOfTheNextTest("13.10.2018") .setTrn("ABC1234") - .setIsTrailer(true); + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); trlPassBilingual.setData(bilingualData); return trlPassBilingual; } + public static CvsTrlPRSBilingual getCvsTrlPrsBilingual() { + CvsTrlPRSBilingual trlPrsBilingual = new CvsTrlPRSBilingual(); + trlPrsBilingual.setDocumentName(CertificateTypes.CVS_TRL_PRS_BILINGUAL.getCertificateType()); + CvsMotFailCertificateDataWelsh failData = new CvsMotFailCertificateDataWelsh(); + CvsMotCertificateDataWelsh passData = new CvsMotCertificateDataWelsh(); + + passData + .setMinorDefectsWelsh(generateRFRs(MINOR_RFR_TEXT, 1)) + .setAdvisoryDefectsWelsh(generateRFRs(ADVISORY_RFR_TEXT, 1)) + .setMinorDefectsHeader(DefectSummaryComponent.MINOR_DEFECTS_HEADER_TEXT_WELSH_CVS) + .setAdvisoryDefectsHeader(DefectSummaryComponent.ADVISORIES_HEADER_TEXT_WELSH_CVS) + .setMinorDefects(generateRFRs(MINOR_RFR_TEXT, 1)) + .setAdvisoryDefects(generateRFRs(ADVISORY_RFR_TEXT, 1)) + .setCurrentOdometer( + new CvsOdometerReading("22341", "mi", "01.02.2019") + ) + .setOdometerHistoryList(Arrays.asList( + new CvsOdometerReading("120", "km", "01.02.2016"), + new CvsOdometerReading("330", "km", "30.01.2017") + )) + .setCountryOfRegistrationCode("GB") + .setRawVin(VIN) + .setDateOfTheTest("12.11.2018") + .setExpiryDate("12.10.2018") + .setTestStationPNumber("P12345") + .setTestStationName("TEST STATION NAME") + .setMake("Aston Martin") + .setModel("DB11") + .setIssuersName("R.DREWNO") + .setTestStationName("POPULAR GARAGES") + .setTestNumber("1806 8140 0628") + .setEarliestDateOfTheNextTest("13.10.2018") + .setTrn("ABC1234") + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); + + failData + .setPrsDefectsHeaderWelsh(DefectSummaryComponent.PRS_DEFECTS_HEADER_TEXT_WELSH_CVS) + .setPrsDefectsWelsh(generateRFRs(PRS_RFR_TEXT, 1)) + .setPrsDefects(generateRFRs(PRS_RFR_TEXT, 1)) + .setSeatBeltNumber("10") + .setSeatBeltPreviousCheckDate("12.11.2018") + .setSeatBeltTested("Yes") + .setCountryOfRegistrationCode("GB") + .setRawVin(VIN) + .setDateOfTheTest("12.11.2018") + .setExpiryDate("12.10.2018") + .setMake("MERCEDES") + .setModel("Z WAGON") + .setVehicleEuClassification("M1") + .setRawVrm("KA1SAPH") + .setCurrentOdometer( + new CvsOdometerReading("20000", "mi", "22.08.2023") + ) + .setOdometerHistoryList(Arrays.asList( + new CvsOdometerReading("12000", "mi", "13.08.2022"), + new CvsOdometerReading("7000", "mi", "02.08.2021") + )) + .setIssuersName("TESTER NAME") + .setTestStationName("TEST STATION NAME") + .setTestStationPNumber("P12345") + .setTestNumber("X01X00001") + .setEarliestDateOfTheNextTest("01.07.2024") + .setTrn("ABC1234") + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); + trlPrsBilingual.setFailData(failData); + + Signature signature = new Signature(); + signature + .setImageData("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==") + .setImageType("png"); + + trlPrsBilingual.setSignature(signature); + trlPrsBilingual.setData(passData); + trlPrsBilingual.setData(passData); + + return trlPrsBilingual; + } + public static CvsHgvTrlFailBilingual getCvsHgvTrlFailBilingual() { CvsHgvTrlFailBilingual hgvFailBilingual = new CvsHgvTrlFailBilingual(); hgvFailBilingual.setDocumentName(CertificateTypes.CVS_HGV_TRL_FAIL_BILINGUAL.getCertificateType()); @@ -667,7 +786,10 @@ public static CvsHgvTrlFailBilingual getCvsHgvTrlFailBilingual() { .setTestNumber("X01X00001") .setEarliestDateOfTheNextTest("13.10.2018") .setTrn("ABC1234") - .setIsTrailer(true); + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); hgvFailBilingual.setFailData(bilingualData); @@ -679,7 +801,87 @@ public static CvsHgvTrlFailBilingual getCvsHgvTrlFailBilingual() { hgvFailBilingual.setSignature(signature); return hgvFailBilingual; - }; + } + + public static CvsHgvPRSBilingual getCvsHgvPRSBilingual() { + CvsHgvPRSBilingual hgvPRSBilingual = new CvsHgvPRSBilingual(); + hgvPRSBilingual.setDocumentName(CertificateTypes.CVS_HGV_PRS_BILINGUAL.getCertificateType()); + + CvsMotFailCertificateDataWelsh bilingualFailData = new CvsMotFailCertificateDataWelsh(); + bilingualFailData + .setPrsDefectsHeaderWelsh(DefectSummaryComponent.PRS_DEFECTS_HEADER_TEXT_WELSH_CVS) + .setPrsDefectsWelsh(generateRFRs(PRS_RFR_TEXT, 1)) + .setPrsDefects(generateRFRs(PRS_RFR_TEXT, 1)) + .setSeatBeltNumber("10") + .setSeatBeltPreviousCheckDate("12.11.2018") + .setSeatBeltTested("Yes") + .setCountryOfRegistrationCode("GB") + .setRawVin(VIN) + .setDateOfTheTest("22.08.2023") + .setExpiryDate("31.08.2024") + .setTestStationPNumber("P12345") + .setTestStationName("TEST STATION NAME") + .setMake("Aston Martin") + .setModel("DB11") + .setVehicleEuClassification("M1") + .setRawVrm("KA1SAPH") + .setCurrentOdometer( + new CvsOdometerReading("20000", "km", "22.08.2023") + ) + .setOdometerHistoryList(Arrays.asList( + new CvsOdometerReading("12000", "km", "13.08.2022"), + new CvsOdometerReading("7000", "km", "02.08.2021") + ) + ) + .setIssuersName("TESTER NAME") + .setTestStationName("TEST STATION NAME") + .setTestNumber("X01X00001") + .setEarliestDateOfTheNextTest("01.07.2024") + .setTrn(null) + .setIsTrailer(false) + .setRecalls( + new Recalls("Aston Martin", true) + ); + + CvsMotCertificateDataWelsh bilingualData = new CvsMotCertificateDataWelsh(); + bilingualData + .setMinorDefectsWelsh(generateRFRs(MINOR_RFR_TEXT, 1)) + .setAdvisoryDefectsWelsh(generateRFRs(ADVISORY_RFR_TEXT, 1)) + .setMinorDefectsHeader(DefectSummaryComponent.MINOR_DEFECTS_HEADER_TEXT_WELSH_CVS) + .setAdvisoryDefectsHeader(DefectSummaryComponent.ADVISORIES_HEADER_TEXT_WELSH_CVS) + .setMinorDefects(generateRFRs(MINOR_RFR_TEXT, 1)) + .setAdvisoryDefects(generateRFRs(ADVISORY_RFR_TEXT, 1)) + .setCountryOfRegistrationCode("GB") + .setRawVin(VIN) + .setDateOfTheTest("22.08.2023") + .setExpiryDate("31.08.2024") + .setTestStationPNumber("P12345") + .setTestStationName("TEST STATION NAME") + .setMake("Aston Martin") + .setModel("DB11") + .setVehicleEuClassification("M1") + .setRawVrm("KA15APH") + .setCurrentOdometer( + new CvsOdometerReading("20000", "km", "22.08.2023") + ) + .setOdometerHistoryList(Arrays.asList( + new CvsOdometerReading("12000", "km", "13.08.2022"), + new CvsOdometerReading("7000", "km", "02.08.2021") + ) + ) + .setIssuersName("TESTER NAME") + .setTestStationName("TEST STATION NAME") + .setTestNumber("X01X00001") + .setEarliestDateOfTheNextTest("01.07.2024") + .setRecalls( + new Recalls("Aston Martin", true) + ); + + hgvPRSBilingual.setFailData(bilingualFailData); + hgvPRSBilingual.setData(bilingualData); + + return hgvPRSBilingual; + } public static VTP30Bilingual getVtp30Bilingual() { VTP30Bilingual hgvFailBilingual = new VTP30Bilingual(); @@ -722,7 +924,10 @@ public static VTP30Bilingual getVtp30Bilingual() { .setTestNumber("X01X00001") .setEarliestDateOfTheNextTest("13.10.2018") .setTrn("ABC1234") - .setIsTrailer(true); + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); hgvFailBilingual.setFailData(bilingualData); @@ -782,7 +987,10 @@ public static VTG30 getVtg30() { .setTestStationName("POPULAR GARAGES") .setTestNumber("1806 8140 0628") .setEarliestDateOfTheNextTest("13.10.2018") - .setTrn("ABC1234"); + .setTrn("ABC1234") + .setRecalls( + new Recalls("Aston Martin", true) + ); vtg30Data .setMajorDefectsHeader(DefectSummaryComponent.MAJOR_DEFECTS_HEADER_TEXT) @@ -849,7 +1057,10 @@ public static VTG30W getVTG30W() { .setTestNumber("X01X00001") .setEarliestDateOfTheNextTest("01.07.2024") .setTrn("ABC1234") - .setIsTrailer(true); + .setIsTrailer(true) + .setRecalls( + new Recalls("Aston Martin", true) + ); vtg30wData .setDangerousDefects(generateRFRs(DANGEROUS_RFR_TEXT, 1)) @@ -894,7 +1105,18 @@ public static IVA30 getIVA30() { mockRS.setRsNumber(1); mockRS.setInspectionTypes(new String[]{"Normal"}); mockRS.setAdditionalNotes("Some additional defect"); - RequiredStandard[] requiredStandards = new RequiredStandard[]{mockRS}; + // PRS mock + RequiredStandard mockRSPrs = new RequiredStandard(); + mockRSPrs.setPrs(true); + mockRSPrs.setRequiredStandard("Noise"); + mockRSPrs.setRefCalculation("1.1"); + mockRSPrs.setSectionNumber("1"); + mockRSPrs.setAdditionalInfo(false); + mockRSPrs.setSectionDescription("description"); + mockRSPrs.setRsNumber(1); + mockRSPrs.setInspectionTypes(new String[]{"Normal"}); + mockRSPrs.setAdditionalNotes("Some additional defect"); + RequiredStandard[] requiredStandards = new RequiredStandard[]{mockRS, mockRSPrs}; iva30Data.setRequiredStandards(requiredStandards); iva30.setIvaData(iva30Data); @@ -920,7 +1142,7 @@ public static MSVA30 getMSVA30() { msva30Data.setModel("Model"); msva30Data.setDate("28/11/2023"); msva30Data.setTesterName("Tester One"); - msva30Data.setRetestDate("27/05/2024"); + msva30Data.setReapplicationDate("27/05/2024"); msva30Data.setStation("Abshire-Kub"); msva30Data.setAdditionalDefects(new AdditionalDefect[]{new AdditionalDefect("DefectName", "DefectNotes")}); RequiredStandard mockRS = new RequiredStandard(); @@ -933,7 +1155,18 @@ public static MSVA30 getMSVA30() { mockRS.setRsNumber(1); mockRS.setInspectionTypes(new String[]{"Normal"}); mockRS.setAdditionalNotes("Some additional defect"); - RequiredStandard[] requiredStandards = new RequiredStandard[]{mockRS}; + // PRS mock + RequiredStandard mockRSPrs = new RequiredStandard(); + mockRSPrs.setPrs(true); + mockRSPrs.setRequiredStandard("Noise"); + mockRSPrs.setRefCalculation("1.1"); + mockRSPrs.setSectionNumber("1"); + mockRSPrs.setAdditionalInfo(false); + mockRSPrs.setSectionDescription("description"); + mockRSPrs.setRsNumber(1); + mockRSPrs.setInspectionTypes(new String[]{"Normal"}); + mockRSPrs.setAdditionalNotes("Some additional defect"); + RequiredStandard[] requiredStandards = new RequiredStandard[]{mockRS, mockRSPrs}; msva30Data.setRequiredStandards(requiredStandards); msva30.setMsvaData(msva30Data); @@ -947,6 +1180,59 @@ public static MSVA30 getMSVA30() { return msva30; } + public static VTG12 getVTG12() { + VTG12 vtg12 = new VTG12(); + vtg12.setDocumentName(CertificateTypes.VTG12.getCertificateType()); + String[] reasonsForRefusal = { "Reason 1 exists VTG12","Reason 2 exists VTG12" }; + String additionalComments = "additional comments VTG12"; + + AbandonedData abandonedData = new AbandonedData( + "poiuytrewq01230109567891", + reasonsForRefusal, + "01.02.2024", + "fake location", + "fake12312312", + "fake tester", + additionalComments); + + Signature signature = new Signature(); + signature + .setImageData("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==") + .setImageType("png"); + + vtg12.setSignature(signature); + + vtg12.setData(abandonedData); + return vtg12; + } + + public static VTP12 getVTP12() { + VTP12 vtp12 = new VTP12(); + vtp12.setDocumentName(CertificateTypes.VTP12.getCertificateType()); + String[] reasonsForRefusal = { "Reason 1 exists VTP12","Reason 2 exists VTP12" }; + String additionalComments = "additional comments VTP12"; + + AbandonedData abandonedData = new AbandonedData( + "poiuytrewq01230109567891", + reasonsForRefusal, + "01.02.2024", + "fake location", + "fake12312312", + "fake tester", + additionalComments); + + Signature signature = new Signature(); + signature + .setImageData("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==") + .setImageType("png"); + + vtp12.setSignature(signature); + + vtp12.setData(abandonedData); + return vtp12; + } + + public static VTG30 getVtg30HavingInvalidXMLCharacter() { VTG30 document = getVtg30(); @@ -965,6 +1251,15 @@ public static VTG30W getVTG30WHavingInvalidXMLCharacter() { return document; } + public static CvsHgvPRSBilingual getCvsHgvPRSBilingualHavingInvalidXMLCharacter() { + CvsHgvPRSBilingual document = getCvsHgvPRSBilingual(); + + CvsMotFailCertificateData data = document.getFailData(); + data.setPrsDefects(generateRFRs(INVALID_XML_RFR_TEXT, 3)); + + return document; + } + private static List generateRFRs(String rfrName, int numberOfRfrs) { List reasonsForRejection = new ArrayList<>(); @@ -972,4 +1267,23 @@ private static List generateRFRs(String rfrName, int numberOfRfrs) { reasonsForRejection.add(rfrName + " #" + i); } return reasonsForRejection; } + + public static CvsPsvPRSBilingual getCvsPsvPRSBilingual() { + CvsPsvPRSBilingual cvsPsvPRSBilingual = new CvsPsvPRSBilingual(); + cvsPsvPRSBilingual.setDocumentName(CertificateTypes.CVS_PSV_PRS_BILINGUAL.getCertificateType()); + + cvsPsvPRSBilingual.setData(getVtp20W().getData()); + cvsPsvPRSBilingual.setFailData(getVtp30w().getFailData()); + + return cvsPsvPRSBilingual; + } + + public static CvsMotCertificate getCvsPsvPRSBilingualHavingInvalidXMLCharacter() { + CvsPsvPRSBilingual document = getCvsPsvPRSBilingual(); + + CvsMotFailCertificateData data = document.getFailData(); + data.setPrsDefects(generateRFRs(INVALID_XML_RFR_TEXT, 3)); + + return document; + } } diff --git a/src/test/java/htmlverification/tests/AbandonedTest.java b/src/test/java/htmlverification/tests/AbandonedTest.java new file mode 100644 index 00000000..32b3b116 --- /dev/null +++ b/src/test/java/htmlverification/tests/AbandonedTest.java @@ -0,0 +1,130 @@ +package htmlverification.tests; + +import htmlverification.framework.page_object.CertificatePageObject; +import org.junit.Test; +import uk.gov.dvsa.model.cvs.AbandonedCertificate; +import uk.gov.dvsa.service.HtmlGenerator; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public abstract class AbandonedTest { + + protected String DYNAMIC_TITLE_SECTION; + protected String REGULATION_TEXT; + protected String VEHICLE_TYPE_TEXT_LINE; + protected String FORM_NUMBER; + protected String SECTION_REF_TEXT; + + + protected HtmlGenerator htmlGenerator; + protected AbandonedCertificate testCertificate; + protected CertificatePageObject certificatePageObject; + + @Test + public void verifyValuesSetByConstructor() { + assertEquals(REGULATION_TEXT, testCertificate.getRegulationText()); + assertEquals(VEHICLE_TYPE_TEXT_LINE, testCertificate.getVehicleTypeText()); + assertEquals(DYNAMIC_TITLE_SECTION, testCertificate.getTitleTextIncludingRollingHeaders()); + assertEquals(FORM_NUMBER, testCertificate.getFormNumber()); + assertEquals(SECTION_REF_TEXT, testCertificate.getSectionTextRef()); + } + + @Test + public void verifyDocumentType() { + assertEquals(testCertificate.getDocumentType(), certificatePageObject.getDocumentType()); + } + + @Test + public void verifyFirstPageTitle() { + String firstPageTitle = certificatePageObject.getFirstPageTitle(); + assertEquals("Notification of Failure to Comply with the Conditions of Acceptance of a " + + testCertificate.getTitleTextIncludingRollingHeaders() + " (" + testCertificate.getDocumentType() + ")", firstPageTitle); + } + + @Test + public void verifyRegulationText() { + assertEquals(testCertificate.getRegulationText(), certificatePageObject.getRegulationText()); + } + + @Test + public void verifyFooterDocumentType() { + assertEquals(testCertificate.getDocumentType(), certificatePageObject.getFooterDocumentType()); + } + + @Test + public void verifyFooterTestNumber() { + assertEquals("(DVSA" + testCertificate.getFormNumber() + ")", certificatePageObject.getFooterTestNumber()); + } + + @Test + public void verifyVehicleTypeText() { + assertEquals(testCertificate.getVehicleTypeText(), certificatePageObject.getVehicleTestType()); + } + + @Test + public void verifyRegistrationNumber() { + String[] reg = testCertificate.getData().getRegistrationNumber(); + for (int i = 0; i < reg.length; i++) { + assertEquals(reg[i], certificatePageObject.getSpacedRegistrationNumber(i)); + } + } + + @Test + public void verifySectionText() { + assertTrue(certificatePageObject.getSanctionText().contains(testCertificate.getSectionTextRef())); + } + + @Test + public void verifyRunningHeaderLeft() { + assertEquals(testCertificate.getDocumentType(), certificatePageObject.getRunningHeaderLeft()); + } + + @Test + public void verifyRunningHeaderRight() { + assertEquals("Notification of Failure to Comply with the Conditions of Acceptance of a " + + testCertificate.getTitleTextIncludingRollingHeaders(), certificatePageObject.getRunningHeaderRight()); + } + + @Test + public void verifyReasonsForAbandonment() { + String[] reasonsForAbandonment = testCertificate.getData().getReasonsForRefusal(); + for (int i = 0; i < reasonsForAbandonment.length; i++) { + assertEquals(reasonsForAbandonment[i], certificatePageObject.getReasonsForAbandonment(i)); + } + } + + @Test + public void verifyAdditionalComments() { + assertEquals(testCertificate.getData().getAdditionalComments(), certificatePageObject.getAdditionalComments()); + } + + @Test + public void verifyDataProtectionWithDocumentType() { + assertEquals("We collect, use and store your personal data so that we can correctly issue your vehicle with a " + testCertificate.getDocumentType() + " failure notification." , certificatePageObject.getDataProtectionWithDocumentType()); + } + + @Test + public void verifySignature() { + assertEquals(testCertificate.getSignature().getFormattedImageData(), certificatePageObject.getSignature()); + } + + @Test + public void verifyPrintName() { + assertEquals(testCertificate.getData().getIssuersName(), certificatePageObject.getPrintName()); + } + + @Test + public void verifyLocation() { + assertEquals(testCertificate.getData().getTestStationName(), certificatePageObject.getLocation()); + } + + @Test + public void verifyLocationNumber() { + assertEquals(testCertificate.getData().getTestStationPNumber(), certificatePageObject.getLocationNumber()); + } + + @Test + public void verifyDateOfTheTest() { + assertEquals(testCertificate.getData().getDateOfTheTest(), certificatePageObject.getDateOfTest()); + } +} diff --git a/src/test/java/htmlverification/tests/CvsHgvPRSBilingualTest.java b/src/test/java/htmlverification/tests/CvsHgvPRSBilingualTest.java new file mode 100644 index 00000000..3ce6e075 --- /dev/null +++ b/src/test/java/htmlverification/tests/CvsHgvPRSBilingualTest.java @@ -0,0 +1,261 @@ +package htmlverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.framework.page_object.CertificatePageObject; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import org.junit.Test; +import uk.gov.dvsa.model.cvs.CvsHgvPRSBilingual; +import uk.gov.dvsa.service.HtmlGenerator; + +import java.io.IOException; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateData.PASS_WITH_DEFECTS_HEADER; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh.PASS_WITH_DEFECTS_HEADER_WELSH; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotFailCertificateData.FAILED_SUMMARY_HEADER; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotFailCertificateDataWelsh.FAILED_SUMMARY_HEADER_WELSH; +import static uk.gov.dvsa.model.mot.results.Summary.EU_NUMBER_SUMMARY_HEADER; + +public class CvsHgvPRSBilingualTest { + + protected HtmlGenerator htmlGenerator; + protected CvsHgvPRSBilingual testCertificate; + protected CertificatePageObject certificatePageObjectVTG5; + protected CertificatePageObject certificatePageObjectVTG30; + + protected CertificatePageObject certificatePageObjectVTG5W; + protected CertificatePageObject certificatePageObjectVTG30W; + + public CvsHgvPRSBilingualTest() { + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + } + + @Before + public void setup() throws IOException { + testCertificate = CvsCertificateTestDataProvider.getCvsHgvPRSBilingual(); + + String certHtmlVTG5 = htmlGenerator.generate(testCertificate).get(0); + String certHtmlVTG30 = htmlGenerator.generate(testCertificate).get(1); + String certHtmlVTV5W = htmlGenerator.generate(testCertificate).get(2); + String certHtmlVTG30W = htmlGenerator.generate(testCertificate).get(3); + + certificatePageObjectVTG5 = new CertificatePageObject(certHtmlVTG5); + certificatePageObjectVTG30 = new CertificatePageObject(certHtmlVTG30); + certificatePageObjectVTG5W = new CertificatePageObject(certHtmlVTV5W); + certificatePageObjectVTG30W = new CertificatePageObject(certHtmlVTG30W); + } + + @Test + public void verifyResultSummaries() { + String resultName = certificatePageObjectVTG5.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameFail = certificatePageObjectVTG30.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameWelsh = certificatePageObjectVTG5W.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameFailWelsh = certificatePageObjectVTG30W.getDefectSummaryComponent().getResultNameItem().text(); + + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", PASS_WITH_DEFECTS_HEADER), + resultName + ); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", FAILED_SUMMARY_HEADER), + resultNameFail + ); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", PASS_WITH_DEFECTS_HEADER_WELSH), + resultNameWelsh + ); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", FAILED_SUMMARY_HEADER_WELSH), + resultNameFailWelsh + ); + } + + @Test + public void verifyVin() { + String vin = certificatePageObjectVTG5.getVin(); + String vinFail = certificatePageObjectVTG30.getVin(); + String vinWelsh = certificatePageObjectVTG5W.getVin(); + String vinFailWelsh = certificatePageObjectVTG30W.getVin(); + + assertEquals(testCertificate.getData().getRawVin(), vin); + assertEquals(testCertificate.getFailData().getRawVin(), vinFail); + assertEquals(testCertificate.getData().getRawVin(), vinWelsh); + assertEquals(testCertificate.getFailData().getRawVin(), vinFailWelsh); + } + + @Test + public void verifyCountryOfRegistration() { + String country = certificatePageObjectVTG5.getCountryOfRegistration(); + String countryFail = certificatePageObjectVTG30.getCountryOfRegistration(); + String countryWelsh = certificatePageObjectVTG5W.getCountryOfRegistration(); + String countryFailWelsh = certificatePageObjectVTG30W.getCountryOfRegistration(); + + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), country); + assertEquals(testCertificate.getFailData().getCountryOfRegistrationCode(), countryFail); + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), countryWelsh); + assertEquals(testCertificate.getFailData().getCountryOfRegistrationCode(), countryFailWelsh); + } + + @Test + public void verifyMakeAndModel() { + String makeAndModel = certificatePageObjectVTG5.getMakeAndModel(); + String makeAndModelFail = certificatePageObjectVTG30.getMakeAndModel(); + String makeAndModelWelsh = certificatePageObjectVTG5W.getMakeAndModel(); + String makeAndModelFailWelsh = certificatePageObjectVTG30W.getMakeAndModel(); + + assertEquals( + String.format("%s%s %s", testCertificate.getData().getMake(), ",", testCertificate.getData().getModel()), + makeAndModel + ); + assertEquals( + String.format("%s%s %s", testCertificate.getFailData().getMake(), ",", testCertificate.getFailData().getModel()), + makeAndModelFail + ); + assertEquals( + String.format("%s%s %s", testCertificate.getData().getMake(), ",", testCertificate.getData().getModel()), + makeAndModelWelsh + ); + assertEquals( + String.format("%s%s %s", testCertificate.getFailData().getMake(), ",", testCertificate.getFailData().getModel()), + makeAndModelFailWelsh + ); + } + + @Test + public void verifyVehicleCategory() { + String vehicleCategory = certificatePageObjectVTG5.getVehicleCategory(); + String vehicleCategoryFail = certificatePageObjectVTG30.getVehicleCategory(); + String vehicleCategoryWelsh = certificatePageObjectVTG5W.getVehicleCategory(); + String vehicleCategoryFailWelsh = certificatePageObjectVTG30W.getVehicleCategory(); + + assertEquals(testCertificate.getData().getVehicleEuClassification(), vehicleCategory); + assertEquals(testCertificate.getFailData().getVehicleEuClassification(), vehicleCategoryFail); + assertEquals(testCertificate.getData().getVehicleEuClassification(), vehicleCategoryWelsh); + assertEquals(testCertificate.getFailData().getVehicleEuClassification(), vehicleCategoryFailWelsh); + } + + @Test + public void verifyMileage() { + String mileage = certificatePageObjectVTG5.getMileage(); + String mileageFail = certificatePageObjectVTG30.getMileage(); + String mileageWelsh = certificatePageObjectVTG5W.getMileage(); + String mileageFailWelsh = certificatePageObjectVTG30W.getMileage(); + + assertEquals(testCertificate.getData().getFormattedCurrentOdometer(), mileage); + assertEquals(testCertificate.getFailData().getFormattedCurrentOdometer(), mileageFail); + assertEquals("20,000 cilometrau", mileageWelsh); + assertEquals("20,000 cilometrau", mileageFailWelsh); + } + + @Test + public void verifyPrsDefects() { + List prsDefects = certificatePageObjectVTG5.getDefectSummaryComponent().getPrsDefects().eachText(); + } + + @Test + public void verifyAdvisoryDefects() { + List advisoryDefects = certificatePageObjectVTG5.getDefectSummaryComponent().getAdvisories().eachText(); + assertEquals(1, advisoryDefects.size()); + } + + @Test + public void verifyAdvisoryDefectsWelsh() { + List advisoryDefects = certificatePageObjectVTG5W.getDefectSummaryComponent().getAdvisoriesWelshCVS().eachText(); + assertEquals(1, advisoryDefects.size()); + } + + @Test + public void verifyMinorDefects() { + List minorDefects = certificatePageObjectVTG5.getDefectSummaryComponent().getMinorDefects().eachText(); + assertEquals(1, minorDefects.size()); + } + + @Test + public void verifyMinorDefectsWelsh() { + List minorDefects = certificatePageObjectVTG5W.getDefectSummaryComponent().getMinorDefectsWelshCVS().eachText(); + assertEquals(1, minorDefects.size()); + } + + @Test + public void verifyDateOfTheTest() { + String dateOfTheTest = certificatePageObjectVTG5.getDateOfTheTest(); + String dateOfTheTestFail = certificatePageObjectVTG30.getDateOfTheTest(); + String dateOfTheTestWelsh = certificatePageObjectVTG5W.getDateOfTheTest(); + String dateOfTheTestFailWelsh = certificatePageObjectVTG30W.getDateOfTheTest(); + + assertEquals(testCertificate.getData().getDateOfTheTest(), dateOfTheTest); + assertEquals(testCertificate.getFailData().getDateOfTheTest(), dateOfTheTestFail); + assertEquals(testCertificate.getData().getDateOfTheTest(), dateOfTheTestWelsh); + assertEquals(testCertificate.getFailData().getDateOfTheTest(), dateOfTheTestFailWelsh); + } + + @Test + public void verifyLocationOfTheTest() { + String locationOfTheTest = certificatePageObjectVTG5.getLocationOfTheTest(); + String locationOfTheTestFail = certificatePageObjectVTG30.getLocationOfTheTest(); + String locationOfTheTestWelsh = certificatePageObjectVTG5W.getLocationOfTheTest(); + String locationOfTheTestFailWelsh = certificatePageObjectVTG30W.getLocationOfTheTest(); + + String pNumber = testCertificate.getData().getTestStationPNumber(); + String testStationName = testCertificate.getData().getTestStationName(); + + String pNumberFail = testCertificate.getFailData().getTestStationPNumber(); + String testStationNameFail = testCertificate.getFailData().getTestStationName(); + + assertEquals(pNumber + ", " + testStationName, locationOfTheTest); + assertEquals(pNumberFail + ", " + testStationNameFail, locationOfTheTestFail); + assertEquals(pNumber + ", " + testStationName, locationOfTheTestWelsh); + assertEquals(pNumberFail + ", " + testStationNameFail, locationOfTheTestFailWelsh); + } + + @Test + public void verifyTestingOrganisationAndInspectorName() { + String orgName = certificatePageObjectVTG5.getTestingOrganisationAndInspectorsName(); + String orgNameFail = certificatePageObjectVTG30.getTestingOrganisationAndInspectorsName(); + String orgNameWelsh = certificatePageObjectVTG5W.getTestingOrganisationAndInspectorsName(); + String orgNameFailWelsh = certificatePageObjectVTG30W.getTestingOrganisationAndInspectorsName(); + + String organisation = testCertificate.getData().getTestingOrganisation(); + String organisationFail = testCertificate.getFailData().getTestingOrganisation(); + String organisationWelsh = testCertificate.getFailData().getTestingOrganisationWelsh(); + + String testerName = testCertificate.getData().getIssuersName(); + String testerNameFail = testCertificate.getFailData().getIssuersName(); + + assertEquals(organisation + " " + testerName, orgName); + assertEquals(organisationFail + " " + testerNameFail, orgNameFail); + assertEquals(organisationWelsh + " " + testerName, orgNameWelsh); + assertEquals(organisationWelsh + " " + testerNameFail, orgNameFailWelsh); + } + + @Test + public void verifyMotTestNumber() { + String testNumber = certificatePageObjectVTG5.getTestNumber(); + String testNumberFail = certificatePageObjectVTG30.getTestNumber(); + String testNumberWelsh = certificatePageObjectVTG5W.getTestNumber(); + String testNumberFailWelsh = certificatePageObjectVTG30W.getTestNumber(); + + assertEquals(testCertificate.getData().getTestNumber(), testNumber); + assertEquals(testCertificate.getFailData().getTestNumber(), testNumberFail); + assertEquals(testCertificate.getData().getTestNumber(), testNumberWelsh); + assertEquals(testCertificate.getFailData().getTestNumber(), testNumberFailWelsh); + } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTG5W.getRecallsHeader(); + String contentText = certificatePageObjectVTG5W.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTG5.getRecallsHeader(); + String contentText = certificatePageObjectVTG5.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } +} diff --git a/src/test/java/htmlverification/tests/CvsHgvPassBilingualTest.java b/src/test/java/htmlverification/tests/CvsHgvPassBilingualTest.java index 9d94d6ea..800d46bb 100644 --- a/src/test/java/htmlverification/tests/CvsHgvPassBilingualTest.java +++ b/src/test/java/htmlverification/tests/CvsHgvPassBilingualTest.java @@ -176,4 +176,20 @@ public void verifyExpiryDateOnPassIsPresent() { assertEquals("31.08.2024", expiryDate); assertEquals("31.08.2024", expiryDate2); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTG5W.getRecallsHeader(); + String contentText = certificatePageObjectVTG5W.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTG5.getRecallsHeader(); + String contentText = certificatePageObjectVTG5.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/CvsHgvTrlFailBilingualTest.java b/src/test/java/htmlverification/tests/CvsHgvTrlFailBilingualTest.java index 26b395b7..5a52353e 100644 --- a/src/test/java/htmlverification/tests/CvsHgvTrlFailBilingualTest.java +++ b/src/test/java/htmlverification/tests/CvsHgvTrlFailBilingualTest.java @@ -172,4 +172,20 @@ public void verifyMotTestNumber() { assertEquals(testCertificate.getFailData().getTestNumber(), testNumber); assertEquals(testCertificate.getFailData().getTestNumber(), testNumber2); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTG30W.getRecallsHeader(); + String contentText = certificatePageObjectVTG30W.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTG30.getRecallsHeader(); + String contentText = certificatePageObjectVTG30.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/CvsPsvFailBilingualTest.java b/src/test/java/htmlverification/tests/CvsPsvFailBilingualTest.java index 702c0a60..29a0ba5c 100644 --- a/src/test/java/htmlverification/tests/CvsPsvFailBilingualTest.java +++ b/src/test/java/htmlverification/tests/CvsPsvFailBilingualTest.java @@ -172,4 +172,20 @@ public void verifyMotTestNumber() { assertEquals(testCertificate.getFailData().getTestNumber(), testNumber); assertEquals(testCertificate.getFailData().getTestNumber(), testNumber2); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTG30W.getRecallsHeader(); + String contentText = certificatePageObjectVTG30W.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTG30.getRecallsHeader(); + String contentText = certificatePageObjectVTG30.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/CvsPsvPassBilingualTest.java b/src/test/java/htmlverification/tests/CvsPsvPassBilingualTest.java index 743a4a95..a831e28d 100644 --- a/src/test/java/htmlverification/tests/CvsPsvPassBilingualTest.java +++ b/src/test/java/htmlverification/tests/CvsPsvPassBilingualTest.java @@ -163,4 +163,20 @@ public void verifyExpiryDateOnPassIsPresent() { assertEquals("12.10.2018", expiryDate); assertEquals("12.10.2018", expiryDate2); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTP20W.getRecallsHeader(); + String contentText = certificatePageObjectVTP20W.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTP20.getRecallsHeader(); + String contentText = certificatePageObjectVTP20.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/CvsPsvPrsBilingualTest.java b/src/test/java/htmlverification/tests/CvsPsvPrsBilingualTest.java new file mode 100644 index 00000000..183378df --- /dev/null +++ b/src/test/java/htmlverification/tests/CvsPsvPrsBilingualTest.java @@ -0,0 +1,219 @@ +package htmlverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.framework.page_object.CertificatePageObject; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import org.junit.Test; +import uk.gov.dvsa.model.cvs.CvsPsvPRSBilingual; +import uk.gov.dvsa.service.HtmlGenerator; + +import java.io.IOException; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateData.PASS_WITH_DEFECTS_HEADER; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh.PASS_WITH_DEFECTS_HEADER_WELSH; +import static uk.gov.dvsa.model.mot.results.Summary.EU_NUMBER_SUMMARY_HEADER; + +public class CvsPsvPrsBilingualTest { + protected HtmlGenerator htmlGenerator; + protected CvsPsvPRSBilingual testCertificate; + protected CertificatePageObject certificatePageObjectVTP20; + protected CertificatePageObject certificatePageObjectVTP30; + protected CertificatePageObject certificatePageObjectVTP20Welsh; + protected CertificatePageObject certificatePageObjectVTP30Welsh; + + public CvsPsvPrsBilingualTest() { + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + } + + @Before + public void setup() throws IOException { + testCertificate = CvsCertificateTestDataProvider.getCvsPsvPRSBilingual(); + String certHtmlVTP20 = htmlGenerator.generate(testCertificate).get(0); + String certHtmlVTP30 = htmlGenerator.generate(testCertificate).get(1); + String certHtmlVTP20Welsh = htmlGenerator.generate(testCertificate).get(2); + String certHtmlVTP30Welsh = htmlGenerator.generate(testCertificate).get(3); + + certificatePageObjectVTP20 = new CertificatePageObject(certHtmlVTP20); + certificatePageObjectVTP30 = new CertificatePageObject(certHtmlVTP30); + certificatePageObjectVTP20Welsh = new CertificatePageObject(certHtmlVTP20Welsh); + certificatePageObjectVTP30Welsh = new CertificatePageObject(certHtmlVTP30Welsh); + } + + @Test + public void verifyResultSummaries() { + String resultName = certificatePageObjectVTP20.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameWelsh = certificatePageObjectVTP20Welsh.getDefectSummaryComponent().getResultNameItem().text(); + + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", PASS_WITH_DEFECTS_HEADER), + resultName); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", PASS_WITH_DEFECTS_HEADER_WELSH), + resultNameWelsh); + } + + @Test + public void verifyCountryOfRegistration() { + String vtp20CountryOfRegistration = certificatePageObjectVTP20.getCountryOfRegistration(); + String vtp30CountryOfRegistration = certificatePageObjectVTP30.getCountryOfRegistration(); + String vtp20WelshCountryOfRegistration = certificatePageObjectVTP20Welsh.getCountryOfRegistration(); + String vtp30WelshCountryOfRegistration = certificatePageObjectVTP30Welsh.getCountryOfRegistration(); + + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), vtp20CountryOfRegistration); + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), vtp30CountryOfRegistration); + assertEquals(testCertificate.getFailData().getCountryOfRegistrationCode(), vtp20WelshCountryOfRegistration); + assertEquals(testCertificate.getFailData().getCountryOfRegistrationCode(), vtp30WelshCountryOfRegistration); + } + + @Test + public void verifyMakeAndModel() { + String vtp20MakeAndModel = certificatePageObjectVTP20.getMakeAndModel(); + String vtp30MakeAndModel = certificatePageObjectVTP30.getMakeAndModel(); + String vtp20WelshMakeAndModel = certificatePageObjectVTP20Welsh.getMakeAndModel(); + String vtp30WelshMakeAndModel = certificatePageObjectVTP30Welsh.getMakeAndModel(); + + assertEquals( + String.format("%s%s %s", testCertificate.getData().getMake(), ",", testCertificate.getData().getModel()), + vtp20MakeAndModel + ); + assertEquals( + String.format("%s%s %s", testCertificate.getFailData().getMake(), ",", testCertificate.getFailData().getModel()), + vtp30MakeAndModel + ); + + assertEquals( + String.format("%s%s %s", testCertificate.getData().getMake(), ",", testCertificate.getData().getModel()), + vtp20WelshMakeAndModel + ); + assertEquals( + String.format("%s%s %s", testCertificate.getFailData().getMake(), ",", testCertificate.getFailData().getModel()), + vtp30WelshMakeAndModel + ); + } + + @Test + public void verifyAdvisoryDefects() { + List vtp20AdvisoryDefects = certificatePageObjectVTP20.getDefectSummaryComponent().getAdvisories().eachText(); + assertEquals(1, vtp20AdvisoryDefects.size()); + } + + @Test + public void verifyMinorDefects() { + List minorDefects = certificatePageObjectVTP20.getDefectSummaryComponent().getMinorDefects().eachText(); + assertEquals(1, minorDefects.size()); + } + + + @Test + public void verifyMajorDefects() { + List vtp30MajorDefects = certificatePageObjectVTP30.getDefectSummaryComponent().getMajorDefects().eachText(); + assertEquals(1, vtp30MajorDefects.size()); + } + + @Test + public void verifyDangerousDefects() { + List vtp30DangerousDefects = certificatePageObjectVTP30.getDefectSummaryComponent().getDangerousDefects().eachText(); + assertEquals(1, vtp30DangerousDefects.size()); + } + + @Test + public void verifyAdvisoryDefectsWelsh() { + List advisoryDefects = certificatePageObjectVTP30Welsh.getDefectSummaryComponent().getAdvisoriesWelshCVS().eachText(); + assertEquals(1, advisoryDefects.size()); + } + + @Test + public void verifyMinorDefectsWelsh() { + List minorDefects = certificatePageObjectVTP30Welsh.getDefectSummaryComponent().getMinorDefectsWelshCVS().eachText(); + assertEquals(1, minorDefects.size()); + } + + @Test + public void verifyMajorDefectsWelsh() { + List vtp30MajorDefects = certificatePageObjectVTP30Welsh.getDefectSummaryComponent().getMajorDefectsWelshCVS().eachText(); + assertEquals(1, vtp30MajorDefects.size()); + } + + @Test + public void verifyDangerousDefectsWelsh() { + List vtp30DangerousDefects = certificatePageObjectVTP30Welsh.getDefectSummaryComponent().getDangerousDefectsWelshCVS().eachText(); + assertEquals(1, vtp30DangerousDefects.size()); + } + + @Test + public void verifyDateOfTheTest() { + String vtp20DateOfTheTest = certificatePageObjectVTP20.getDateOfTheTest(); + String vtp30DateOfTheTest = certificatePageObjectVTP30.getDateOfTheTest(); + String vtp20WelshDateOfTheTest = certificatePageObjectVTP20Welsh.getDateOfTheTest(); + String vtp30WelshDateOfTheTest = certificatePageObjectVTP30Welsh.getDateOfTheTest(); + + assertEquals("12.11.2018", vtp20DateOfTheTest); + assertEquals("12.11.2018", vtp30DateOfTheTest); + assertEquals("12.11.2018", vtp20WelshDateOfTheTest); + assertEquals("12.11.2018", vtp30WelshDateOfTheTest); + } + + @Test + public void verifyLocationOfTheTest() { + String vtp20LocationOfTheTest = certificatePageObjectVTP20.getLocationOfTheTest(); + String vtp30LocationOfTheTest = certificatePageObjectVTP30.getLocationOfTheTest(); + String vtp20WelshLocationOfTheTest = certificatePageObjectVTP20Welsh.getLocationOfTheTest(); + String vtp30WelshLocationOfTheTest = certificatePageObjectVTP30Welsh.getLocationOfTheTest(); + + assertEquals("P12345, POPULAR GARAGES", vtp20LocationOfTheTest); + assertEquals("P12345, POPULAR GARAGES", vtp30LocationOfTheTest); + assertEquals("P12345, POPULAR GARAGES", vtp20WelshLocationOfTheTest); + assertEquals("P12345, POPULAR GARAGES", vtp30WelshLocationOfTheTest); + } + + @Test + public void verifyTestingOrganisationAndInspectorsName() { + String vtp20TestingOrganisationAndInspectorsName = certificatePageObjectVTP20.getTestingOrganisationAndInspectorsName(); + String vtp30TestingOrganisationAndInspectorsName = certificatePageObjectVTP30.getTestingOrganisationAndInspectorsName(); + String vtp20WelshTestingOrganisationAndInspectorsName = certificatePageObjectVTP20Welsh.getTestingOrganisationAndInspectorsName(); + String vtp30WelshTestingOrganisationAndInspectorsName1 = certificatePageObjectVTP30Welsh.getTestingOrganisationAndInspectorsName(); + + assertEquals("DRIVER AND VEHICLE STANDARDS AGENCY R.DREWNO", vtp20TestingOrganisationAndInspectorsName); + assertEquals("DRIVER AND VEHICLE STANDARDS AGENCY R.DREWNO", vtp30TestingOrganisationAndInspectorsName); + assertEquals("ASIANTAETH SAFONAU GYRWYR A CHERBYDAU R.DREWNO", vtp20WelshTestingOrganisationAndInspectorsName); + assertEquals("ASIANTAETH SAFONAU GYRWYR A CHERBYDAU R.DREWNO", vtp30WelshTestingOrganisationAndInspectorsName1); + } + + @Test + public void verifyMotTestNumber() { + String testNumber = certificatePageObjectVTP20.getTestNumber(); + String testNumber2 = certificatePageObjectVTP30.getTestNumber(); + + assertEquals("1806 8140 0628", testNumber); + assertEquals("1806 8140 0628", testNumber2); + } + + @Test + public void verifyExpiryDateOnPassIsPresent() { + String expiryDate = certificatePageObjectVTP20.getExpiryDate(); + String expiryDateWelsh = certificatePageObjectVTP20Welsh.getExpiryDate(); + + assertEquals("12.10.2018", expiryDate); + assertEquals("12.10.2018", expiryDateWelsh); + } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTP20Welsh.getRecallsHeader(); + String contentText = certificatePageObjectVTP20Welsh.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTP20.getRecallsHeader(); + String contentText = certificatePageObjectVTP20.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } +} + diff --git a/src/test/java/htmlverification/tests/CvsTrlPassBilingualTest.java b/src/test/java/htmlverification/tests/CvsTrlPassBilingualTest.java index 56a4f2ea..6c2ea6bb 100644 --- a/src/test/java/htmlverification/tests/CvsTrlPassBilingualTest.java +++ b/src/test/java/htmlverification/tests/CvsTrlPassBilingualTest.java @@ -152,4 +152,20 @@ public void verifyExpiryDateOnPassIsPresent() { assertEquals("12.10.2018", expiryDate); assertEquals("12.10.2018", expiryDate2); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTG5AW.getRecallsHeader(); + String contentText = certificatePageObjectVTG5AW.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTG5A.getRecallsHeader(); + String contentText = certificatePageObjectVTG5A.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/CvsTrlPrsBilingualTest.java b/src/test/java/htmlverification/tests/CvsTrlPrsBilingualTest.java new file mode 100644 index 00000000..a2133069 --- /dev/null +++ b/src/test/java/htmlverification/tests/CvsTrlPrsBilingualTest.java @@ -0,0 +1,212 @@ +package htmlverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.framework.page_object.CertificatePageObject; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import org.junit.Test; +import uk.gov.dvsa.model.cvs.CvsTrlPRSBilingual; +import uk.gov.dvsa.service.HtmlGenerator; + +import java.io.IOException; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateData.PASS_WITH_DEFECTS_HEADER; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh.PASS_WITH_DEFECTS_HEADER_WELSH; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotFailCertificateData.FAILED_SUMMARY_HEADER; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotFailCertificateDataWelsh.FAILED_SUMMARY_HEADER_WELSH; +import static uk.gov.dvsa.model.mot.results.Summary.EU_NUMBER_SUMMARY_HEADER; + +public class CvsTrlPrsBilingualTest { + protected HtmlGenerator htmlGenerator; + protected CvsTrlPRSBilingual testCertificate; + protected CertificatePageObject certificatePageObjectVTG5A; + protected CertificatePageObject certificatePageObjectVTG5AW; + protected CertificatePageObject certificatePageObjectVTG30; + protected CertificatePageObject certificatePageObjectVTG30W; + + public CvsTrlPrsBilingualTest() { + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + } + + @Before + public void setup() throws IOException { + testCertificate = CvsCertificateTestDataProvider.getCvsTrlPrsBilingual(); + + String certHtmlVTG5A = htmlGenerator.generate(testCertificate).get(0); + String certHtmlVTG5AW = htmlGenerator.generate(testCertificate).get(2); + String certHtmlVTG30 = htmlGenerator.generate(testCertificate).get(1); + String certHtmlVTG30W = htmlGenerator.generate(testCertificate).get(3); + + certificatePageObjectVTG5A = new CertificatePageObject(certHtmlVTG5A); + certificatePageObjectVTG5AW = new CertificatePageObject(certHtmlVTG5AW); + certificatePageObjectVTG30 = new CertificatePageObject(certHtmlVTG30); + certificatePageObjectVTG30W = new CertificatePageObject(certHtmlVTG30W); + } + + @Test + public void verifyResultSummaries() { + String resultNameVTG5A = certificatePageObjectVTG5A.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameVTG5AWelsh = certificatePageObjectVTG5AW.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameVTG30 = certificatePageObjectVTG30.getDefectSummaryComponent().getResultNameItem().text(); + String resultNameVTG30Welsh = certificatePageObjectVTG30W.getDefectSummaryComponent().getResultNameItem().text(); + + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", PASS_WITH_DEFECTS_HEADER), + resultNameVTG5A); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", PASS_WITH_DEFECTS_HEADER_WELSH), + resultNameVTG5AWelsh); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", FAILED_SUMMARY_HEADER), + resultNameVTG30 + ); + assertEquals( + String.format("%s%s%s %s", "(", EU_NUMBER_SUMMARY_HEADER, ")", FAILED_SUMMARY_HEADER_WELSH), + resultNameVTG30Welsh + ); + } + + @Test + public void verifyCountryOfRegistration() { + String country = certificatePageObjectVTG5A.getCountryOfRegistration(); + String country2 = certificatePageObjectVTG5AW.getCountryOfRegistration(); + String country3 = certificatePageObjectVTG30.getCountryOfRegistration(); + String country4 = certificatePageObjectVTG30W.getCountryOfRegistration(); + + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), country); + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), country2); + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), country3); + assertEquals(testCertificate.getData().getCountryOfRegistrationCode(), country4); + } + + @Test + public void verifyMakeAndModel() { + String makeAndModel = certificatePageObjectVTG5A.getMakeAndModel(); + String makeAndModel2 = certificatePageObjectVTG5AW.getMakeAndModel(); + String makeAndModel3 = certificatePageObjectVTG30.getMakeAndModel(); + String makeAndModel4 = certificatePageObjectVTG30W.getMakeAndModel(); + + assertEquals( + String.format("%s%s %s", testCertificate.getData().getMake(), ",", testCertificate.getData().getModel()), + makeAndModel + ); + assertEquals( + String.format("%s%s %s", testCertificate.getData().getMake(), ",", testCertificate.getData().getModel()), + makeAndModel2 + ); + assertEquals( + String.format("%s%s %s", testCertificate.getFailData().getMake(), ",", testCertificate.getFailData().getModel()), + makeAndModel3 + ); + assertEquals( + String.format("%s%s %s", testCertificate.getFailData().getMake(), ",", testCertificate.getFailData().getModel()), + makeAndModel4 + ); + } + + + @Test + public void verifyAdvisoryDefects() { + List advisoryDefects = certificatePageObjectVTG5A.getDefectSummaryComponent().getAdvisories().eachText(); + assertEquals(1, advisoryDefects.size()); + } + + @Test + public void verifyMinorDefects() { + List minorDefects = certificatePageObjectVTG5A.getDefectSummaryComponent().getMinorDefects().eachText(); + assertEquals(1, minorDefects.size()); + } + + @Test + public void verifyAdvisoryDefectsWelsh() { + List advisoryDefects = certificatePageObjectVTG5AW.getDefectSummaryComponent().getAdvisoriesWelshCVS().eachText(); + assertEquals(1, advisoryDefects.size()); + } + + @Test + public void verifyMinorDefectsWelsh() { + List minorDefects = certificatePageObjectVTG5AW.getDefectSummaryComponent().getMinorDefectsWelshCVS().eachText(); + assertEquals(1, minorDefects.size()); + } + + @Test + public void verifyDateOfTheTest() { + String dateOfTheTest = certificatePageObjectVTG5A.getDateOfTheTest(); + String dateOfTheTest2 = certificatePageObjectVTG5AW.getDateOfTheTest(); + String dateOfTheTest3 = certificatePageObjectVTG30.getDateOfTheTest(); + String dateOfTheTest4 = certificatePageObjectVTG30W.getDateOfTheTest(); + + assertEquals("12.11.2018", dateOfTheTest); + assertEquals("12.11.2018", dateOfTheTest2); + assertEquals("12.11.2018", dateOfTheTest3); + assertEquals("12.11.2018", dateOfTheTest4); + } + + @Test + public void verifyLocationOfTheTest() { + String location = certificatePageObjectVTG5A.getLocationOfTheTest(); + String location2 = certificatePageObjectVTG5AW.getLocationOfTheTest(); + String location3 = certificatePageObjectVTG30.getLocationOfTheTest(); + String location4 = certificatePageObjectVTG30W.getLocationOfTheTest(); + + assertEquals("P12345, POPULAR GARAGES", location); + assertEquals("P12345, POPULAR GARAGES", location2); + assertEquals("P12345, TEST STATION NAME", location3); + assertEquals("P12345, TEST STATION NAME", location4); + } + + @Test + public void verifyTestingOrganisationAndInspectorsName() { + String text = certificatePageObjectVTG5A.getTestingOrganisationAndInspectorsName(); + String text2 = certificatePageObjectVTG5AW.getTestingOrganisationAndInspectorsName(); + String text3 = certificatePageObjectVTG30.getTestingOrganisationAndInspectorsName(); + String text4 = certificatePageObjectVTG30W.getTestingOrganisationAndInspectorsName(); + + assertEquals("DRIVER AND VEHICLE STANDARDS AGENCY R.DREWNO", text); + assertEquals("ASIANTAETH SAFONAU GYRWYR A CHERBYDAU R.DREWNO", text2); + assertEquals("DRIVER AND VEHICLE STANDARDS AGENCY TESTER NAME", text3); + assertEquals("ASIANTAETH SAFONAU GYRWYR A CHERBYDAU TESTER NAME", text4); + } + + @Test + public void verifyMotTestNumber() { + String testNumber = certificatePageObjectVTG5A.getTestNumber(); + String testNumber2 = certificatePageObjectVTG5AW.getTestNumber(); + String testNumber3 = certificatePageObjectVTG30.getTestNumber(); + String testNumber4 = certificatePageObjectVTG30W.getTestNumber(); + + assertEquals("1806 8140 0628", testNumber); + assertEquals("1806 8140 0628", testNumber2); + assertEquals("X01X00001", testNumber3); + assertEquals("X01X00001", testNumber4); + } + + @Test + public void verifyExpiryDateOnPassIsPresent() { + String expiryDate = certificatePageObjectVTG5A.getExpiryDate(); + String expiryDate2 = certificatePageObjectVTG5AW.getExpiryDate(); + + assertEquals("12.10.2018", expiryDate); + assertEquals("12.10.2018", expiryDate2); + } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObjectVTG5AW.getRecallsHeader(); + String contentText = certificatePageObjectVTG5AW.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObjectVTG5A.getRecallsHeader(); + String contentText = certificatePageObjectVTG5A.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } +} + + diff --git a/src/test/java/htmlverification/tests/IVA30Test.java b/src/test/java/htmlverification/tests/IVA30Test.java index bdd9d856..81485b7e 100644 --- a/src/test/java/htmlverification/tests/IVA30Test.java +++ b/src/test/java/htmlverification/tests/IVA30Test.java @@ -86,7 +86,7 @@ public void verifyDate() { @Test public void verifyReapplicationDate() { String reapplicationDate = ivaPageObject.getReapplicationDate(); - assertEquals("Reapplication required by: ".concat(testCertificate.getIvaData().getReapplicationDate()), reapplicationDate); + assertEquals("Reapplication required by: 27/05/2024", reapplicationDate); } @Test @@ -112,7 +112,9 @@ public void verifyRequiredStandards() { String rs = requiredStandardsArray[0].getRequiredStandard(); String addNotes = requiredStandardsArray[0].getAdditionalNotes(); - assertEquals(sectionNo + " - " + description + " RS" + rsNo + ": " + rs + " Additional Information: " + addNotes, requiredStandards); + assertEquals(sectionNo + " - " + description + " RS" + rsNo + ": " + rs + " Additional Information: " + addNotes + + " " + sectionNo + " - " + description + " RS" + rsNo + ": " + rs + " (PRS)" + " Additional Information: " + addNotes + , requiredStandards); } @Test diff --git a/src/test/java/htmlverification/tests/MSVA30Test.java b/src/test/java/htmlverification/tests/MSVA30Test.java index 817a7610..087bca17 100644 --- a/src/test/java/htmlverification/tests/MSVA30Test.java +++ b/src/test/java/htmlverification/tests/MSVA30Test.java @@ -46,7 +46,7 @@ public void verifySerialNumber() { @Test public void verifyVehicleZNumber() { String vehicleZNumber = msvaPageObject.getVehicleZNumber(); - assertEquals("Vehicle 'Z' No.: ".concat(testCertificate.getMsvaData().getVehicleZNumber()), vehicleZNumber); + assertEquals("Vehicle 'Z' No: ".concat(testCertificate.getMsvaData().getVehicleZNumber()), vehicleZNumber); } @Test @@ -77,9 +77,9 @@ public void verifyDate() { } @Test - public void verifyRetestDate() { - String retestDate = msvaPageObject.getRetestDate(); - assertEquals("Retest required by: ".concat(testCertificate.getMsvaData().getRetestDate()), retestDate); + public void verifyReapplicationDate() { + String retestDate = msvaPageObject.getReapplicationDate(); + assertEquals("Reapplication required by: 27/05/2024", retestDate); } @Test @@ -105,7 +105,9 @@ public void verifyRequiredStandards() { String rs = requiredStandardsArray[0].getRequiredStandard(); String addNotes = requiredStandardsArray[0].getAdditionalNotes(); - assertEquals(sectionNo + " - " + description + " RS" + rsNo + ": " + rs + " Additional Information: " + addNotes, requiredStandards); + assertEquals(sectionNo + " - " + description + " RS" + rsNo + ": " + rs + " Additional Information: " + addNotes + + " " + sectionNo + " - " + description + " RS" + rsNo + ": " + rs + " (PRS)" + " Additional Information: " + addNotes + , requiredStandards); } @Test diff --git a/src/test/java/htmlverification/tests/VTG12Test.java b/src/test/java/htmlverification/tests/VTG12Test.java new file mode 100644 index 00000000..ce7fee80 --- /dev/null +++ b/src/test/java/htmlverification/tests/VTG12Test.java @@ -0,0 +1,27 @@ +package htmlverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.framework.page_object.CertificatePageObject; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import uk.gov.dvsa.service.HtmlGenerator; +import java.io.IOException; + +public class VTG12Test extends AbandonedTest { + + public VTG12Test() { + super.DYNAMIC_TITLE_SECTION = "Goods Vehicle for Examination"; + super.REGULATION_TEXT = "Regulations 7 and 8 of the Goods Vehicles (Plating and Testing) Regulations 1988 as Amended"; + super.VEHICLE_TYPE_TEXT_LINE = "In respect of the goods vehicle with registration number / chassis serial number / trailer identification mark :"; + super.FORM_NUMBER = "0440"; + super.SECTION_REF_TEXT = "49 and 51"; + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + } + + @Before + public void setup() throws IOException { + testCertificate = CvsCertificateTestDataProvider.getVTG12(); + String certHtml = htmlGenerator.generate(testCertificate).get(0); + super.certificatePageObject = new CertificatePageObject(certHtml); + } +} \ No newline at end of file diff --git a/src/test/java/htmlverification/tests/VTG30WTest.java b/src/test/java/htmlverification/tests/VTG30WTest.java index 35489c6b..9b30e68d 100644 --- a/src/test/java/htmlverification/tests/VTG30WTest.java +++ b/src/test/java/htmlverification/tests/VTG30WTest.java @@ -63,4 +63,12 @@ public void verifyEmptyTrn() { String actual = certificatePageObject.getElement("#trn").text(); assertEquals("", actual); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/VTG5AWTest.java b/src/test/java/htmlverification/tests/VTG5AWTest.java index 95172f5b..b8c19618 100644 --- a/src/test/java/htmlverification/tests/VTG5AWTest.java +++ b/src/test/java/htmlverification/tests/VTG5AWTest.java @@ -110,4 +110,12 @@ public void verifyTrailerNumber() { String trlNo = certificatePageObject.getTrn(); assertEquals(vtg5AW.getData().getTrn(), trlNo); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/VTG5Test.java b/src/test/java/htmlverification/tests/VTG5Test.java index f759518d..e09750e0 100644 --- a/src/test/java/htmlverification/tests/VTG5Test.java +++ b/src/test/java/htmlverification/tests/VTG5Test.java @@ -123,4 +123,12 @@ public void verifyMotTestNumber() { String testNumber = certificatePageObject.getTestNumber(); assertEquals(vtg5.getData().getTestNumber(), testNumber); } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/VTG5WTest.java b/src/test/java/htmlverification/tests/VTG5WTest.java index abc4dbb0..e8b6e03d 100644 --- a/src/test/java/htmlverification/tests/VTG5WTest.java +++ b/src/test/java/htmlverification/tests/VTG5WTest.java @@ -132,4 +132,12 @@ public void verifyMotTestNumber() { String testNumber = certificatePageObject.getTestNumber(); assertEquals(vtg5W.getData().getTestNumber(), testNumber); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/VTP12Test.java b/src/test/java/htmlverification/tests/VTP12Test.java new file mode 100644 index 00000000..b8eb9c91 --- /dev/null +++ b/src/test/java/htmlverification/tests/VTP12Test.java @@ -0,0 +1,27 @@ +package htmlverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.framework.page_object.CertificatePageObject; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import uk.gov.dvsa.service.HtmlGenerator; +import java.io.IOException; + +public class VTP12Test extends AbandonedTest { + + public VTP12Test() { + super.DYNAMIC_TITLE_SECTION = "Public Service Vehicle for Examination"; + super.REGULATION_TEXT = "Regulation 13 of the Motor Vehicles (Tests) Regulations 1981 as amended"; + super.VEHICLE_TYPE_TEXT_LINE = "In respect of the public service vehicle with registration number / chassis serial number :"; + super.FORM_NUMBER = "0453"; + super.SECTION_REF_TEXT = "45"; + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + } + + @Before + public void setup() throws IOException { + testCertificate = CvsCertificateTestDataProvider.getVTP12(); + String certHtml = htmlGenerator.generate(testCertificate).get(0); + super.certificatePageObject = new CertificatePageObject(certHtml); + } +} \ No newline at end of file diff --git a/src/test/java/htmlverification/tests/VTP20Test.java b/src/test/java/htmlverification/tests/VTP20Test.java index 05921402..66db5edd 100644 --- a/src/test/java/htmlverification/tests/VTP20Test.java +++ b/src/test/java/htmlverification/tests/VTP20Test.java @@ -190,4 +190,12 @@ public void verifyOdometerHistoryMessageWhenNoHistoryExists() { String expected = "No data available"; assertEquals(expected, actual); } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } \ No newline at end of file diff --git a/src/test/java/htmlverification/tests/VTP20WTest.java b/src/test/java/htmlverification/tests/VTP20WTest.java index 93f20e46..b543d926 100644 --- a/src/test/java/htmlverification/tests/VTP20WTest.java +++ b/src/test/java/htmlverification/tests/VTP20WTest.java @@ -155,4 +155,12 @@ public void verifyOdometerHistoryMessageWhenNoHistoryExists() { String expected = "Dim data ar gael"; assertEquals(expected, actual); } + + @Test + public void verifyRecallsWelsh() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/VTP30Test.java b/src/test/java/htmlverification/tests/VTP30Test.java index e457a2db..aeb0090f 100644 --- a/src/test/java/htmlverification/tests/VTP30Test.java +++ b/src/test/java/htmlverification/tests/VTP30Test.java @@ -174,4 +174,12 @@ public void verifyCurrentOdomoter() { String expected = "22,341 miles"; assertEquals(expected, actual); } + + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/VTP30WTest.java b/src/test/java/htmlverification/tests/VTP30WTest.java index 4f1d13f5..4e550aa4 100644 --- a/src/test/java/htmlverification/tests/VTP30WTest.java +++ b/src/test/java/htmlverification/tests/VTP30WTest.java @@ -117,4 +117,12 @@ public void verifyCurrentOdomoter() { String expected = "22,341 milltiroedd"; assertEquals(expected, actual); } + + @Test + public void verifyRecalls() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("Mae gan y cerbyd hwn wedi cael ei alw'n ôl", titleText); + assertEquals("Cysylltwch â'ch agosaf Aston Martin deliwr i gael gwybodaeth ac i drefnu atgyweiriad am ddim.", contentText); + } } diff --git a/src/test/java/htmlverification/tests/Vtg30Test.java b/src/test/java/htmlverification/tests/Vtg30Test.java index 2eb59e92..d4f86b0f 100644 --- a/src/test/java/htmlverification/tests/Vtg30Test.java +++ b/src/test/java/htmlverification/tests/Vtg30Test.java @@ -66,4 +66,12 @@ public void verifyEmptyTrn() { assertEquals("", actual); } + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } + } diff --git a/src/test/java/htmlverification/tests/Vtg5aTest.java b/src/test/java/htmlverification/tests/Vtg5aTest.java index 2e510786..2c4f98ed 100644 --- a/src/test/java/htmlverification/tests/Vtg5aTest.java +++ b/src/test/java/htmlverification/tests/Vtg5aTest.java @@ -65,4 +65,11 @@ public void verifyEmptyTrn() { assertEquals("", actual); } + @Test + public void verifyRecallsEnglish() { + String titleText = certificatePageObject.getRecallsHeader(); + String contentText = certificatePageObject.getRecallsBody(); + assertEquals("This vehicle has an outstanding recall", titleText); + assertEquals("Contact your nearest Aston Martin dealership for information and to arrange a free repair.", contentText); + } } diff --git a/src/test/java/pdfverification/tests/AbandonedTests.java b/src/test/java/pdfverification/tests/AbandonedTests.java new file mode 100644 index 00000000..28fb42c9 --- /dev/null +++ b/src/test/java/pdfverification/tests/AbandonedTests.java @@ -0,0 +1,125 @@ +package pdfverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import com.itextpdf.text.pdf.PdfReader; +import org.junit.Before; +import org.junit.Test; +import org.xhtmlrenderer.pdf.ITextRenderer; +import pdfverification.service.PDFParser; +import uk.gov.dvsa.model.cvs.AbandonedCertificate; +import uk.gov.dvsa.service.HtmlGenerator; +import uk.gov.dvsa.service.PDFGenerationService; +import java.io.IOException; +import static org.junit.Assert.assertTrue; + +public abstract class AbandonedTests { + protected HtmlGenerator htmlGenerator; + protected PDFGenerationService pdfGenerationService; + protected AbandonedCertificate testCertificate; + protected PDFParser pdfParser; + protected PdfReader pdfReader; + protected byte[] pdfData; + + protected static String DYNAMIC_TITLE_SECTION; + protected static String REGULATION_LINE1; + protected static String REGULATION_LINE2; + protected static String VEHICLE_TYPE_TEXT_LINE1; + protected static String VEHICLE_TYPE_TEXT_LINE2; + protected static String VIN; + protected static String REASONS_FOR_REFUSAL_LINE1; + protected static String REASONS_FOR_REFUSAL_LINE2; + protected static String ROLLING_FOOTER_LEFT; + protected static String ADDITIONAL_COMMENTS; + protected static String ROLLING_HEADER_LEFT; + protected static String ROLLING_HEADER_RIGHT; + protected static String PRINT_NAME; + protected static String LOCATION; + protected static String LOCATION_NUMBER; + protected static String DATE_OF_THE_TEST; + protected static String SECTION_TEXT; + + public AbandonedTests() { + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + this.pdfParser = new PDFParser(); + this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); + } + + @Before + public void setup() throws Exception { + pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + pdfReader = pdfParser.readPdf(pdfData); + } + + @Test + public void verifyTitle() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(DYNAMIC_TITLE_SECTION)); + } + + @Test + public void verifyRegulationText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(REGULATION_LINE1)); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(REGULATION_LINE2)); + } + + @Test + public void verifyVehicleTypeText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(VEHICLE_TYPE_TEXT_LINE1)); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(VEHICLE_TYPE_TEXT_LINE2)); + } + + @Test + public void verifyVINText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(VIN)); + } + + @Test + public void verifySectionText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(SECTION_TEXT)); + } + + @Test + public void verifyReasonsForRefusal() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(REASONS_FOR_REFUSAL_LINE1)); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(REASONS_FOR_REFUSAL_LINE2)); + } + + @Test + public void verifyRollingFooterLeftText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(ROLLING_FOOTER_LEFT)); + } + + @Test + public void verifyAdditionalComments() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(ADDITIONAL_COMMENTS)); + } + + @Test + public void verifyRollingHeaderLeftText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(ROLLING_HEADER_LEFT)); + } + + @Test + public void verifyRollingHeaderRightText() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(ROLLING_HEADER_RIGHT)); + } + + @Test + public void verifyPrintName() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(PRINT_NAME)); + } + + @Test + public void verifyLocation() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(LOCATION)); + } + + @Test + public void verifyLocationNumber() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(LOCATION_NUMBER)); + } + + @Test + public void verifyDate() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 2).contains(DATE_OF_THE_TEST)); + } +} diff --git a/src/test/java/pdfverification/tests/HgvPRSBilingualTests.java b/src/test/java/pdfverification/tests/HgvPRSBilingualTests.java new file mode 100644 index 00000000..d4ad2da8 --- /dev/null +++ b/src/test/java/pdfverification/tests/HgvPRSBilingualTests.java @@ -0,0 +1,54 @@ +package pdfverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import com.itextpdf.text.pdf.PdfReader; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import org.junit.Test; +import org.xhtmlrenderer.pdf.ITextRenderer; +import pdfverification.service.PDFParser; +import uk.gov.dvsa.model.cvs.CvsMotCertificate; +import uk.gov.dvsa.service.HtmlGenerator; +import uk.gov.dvsa.service.PDFGenerationService; +import java.io.IOException; + +import static org.junit.Assert.assertTrue; + +public class HgvPRSBilingualTests { + private HtmlGenerator htmlGenerator; + private PDFGenerationService pdfGenerationService; + private CvsMotCertificate testCertificate; + private PDFParser pdfParser; + private PdfReader pdfReader; + + public HgvPRSBilingualTests() { + this.testCertificate = CvsCertificateTestDataProvider.getCvsHgvPRSBilingual(); + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); + this.pdfParser = new PDFParser(); + } + + @Before + public void setup() throws Exception { + byte[] pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + pdfReader = pdfParser.readPdf(pdfData); + } + + @Test + public void verifyTitle() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("MOT test certificate (HGV)")); + assertTrue(pdfParser.getRawText(pdfReader, 3).contains("Refusal of MOT test certificate")); + assertTrue(pdfParser.getRawText(pdfReader, 4).contains("Tystysgrif prawf MOT (HGV)")); + assertTrue(pdfParser.getRawText(pdfReader, 6).contains("Gwrthod tystysgrif prawf MOT")); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("This vehicle has an outstanding recall")); + assertTrue(pdfParser.getRawText(pdfReader, 3).contains("This vehicle has an outstanding recall")); + assertTrue(pdfParser.getRawText(pdfReader, 4).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + assertTrue(pdfParser.getRawText(pdfReader, 6).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + } + + @Test + public void verifySinglePageWithInvalidXMLCharacter() throws Exception { + this.testCertificate = CvsCertificateTestDataProvider.getCvsHgvPRSBilingualHavingInvalidXMLCharacter(); + pdfParser.getRawText(pdfReader, 1); + } +} diff --git a/src/test/java/pdfverification/tests/IVA30Tests.java b/src/test/java/pdfverification/tests/IVA30Tests.java index aa113f43..ab66945c 100644 --- a/src/test/java/pdfverification/tests/IVA30Tests.java +++ b/src/test/java/pdfverification/tests/IVA30Tests.java @@ -13,12 +13,13 @@ import static org.junit.Assert.assertTrue; +import java.io.FileOutputStream; import java.io.IOException; public class IVA30Tests { private static final String CERT_NAME = "INDIVIDUAL VEHICLE APPROVAL (IVA)"; private static final String FOOTER_DOC_NAME = "IVA30VTA (DVSA0842)"; - private static final String FOOTER_VERSION_DATE = "Version 1.0 Apr 2024"; + private static final String FOOTER_VERSION_DATE = "Version 1.2 July 2024"; private PDFGenerationService pdfGenerationService; private HtmlGenerator htmlGenerator; private PDFParser pdfParser; diff --git a/src/test/java/pdfverification/tests/MSVA30Tests.java b/src/test/java/pdfverification/tests/MSVA30Tests.java index 57b2dca1..5a0347b7 100644 --- a/src/test/java/pdfverification/tests/MSVA30Tests.java +++ b/src/test/java/pdfverification/tests/MSVA30Tests.java @@ -12,6 +12,7 @@ import uk.gov.dvsa.service.PDFGenerationService; +import java.io.FileOutputStream; import java.io.IOException; import static org.junit.Assert.assertTrue; @@ -21,7 +22,7 @@ public class MSVA30Tests { private final String FOOTER_DOC_NAME = "MSVA30VTA (DVSA0848)"; - private final String FOOTER_VERSION_DATE = "Version 1.0 May 2024"; + private final String FOOTER_VERSION_DATE = "Version 1.2 July 2024"; private PDFGenerationService pdfGenerationService; private HtmlGenerator htmlGenerator; diff --git a/src/test/java/pdfverification/tests/PsvPRSBilingualTests.java b/src/test/java/pdfverification/tests/PsvPRSBilingualTests.java new file mode 100644 index 00000000..8af1aed7 --- /dev/null +++ b/src/test/java/pdfverification/tests/PsvPRSBilingualTests.java @@ -0,0 +1,55 @@ +package pdfverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import com.itextpdf.text.pdf.PdfReader; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import org.junit.Test; +import org.xhtmlrenderer.pdf.ITextRenderer; +import pdfverification.service.PDFParser; +import uk.gov.dvsa.model.cvs.CvsMotCertificate; +import uk.gov.dvsa.service.HtmlGenerator; +import uk.gov.dvsa.service.PDFGenerationService; +import java.io.IOException; + +import static org.junit.Assert.assertTrue; + +public class PsvPRSBilingualTests { + private final HtmlGenerator htmlGenerator; + private final PDFGenerationService pdfGenerationService; + private CvsMotCertificate testCertificate; + private final PDFParser pdfParser; + private PdfReader pdfReader; + + public PsvPRSBilingualTests() { + this.testCertificate = CvsCertificateTestDataProvider.getCvsPsvPRSBilingual(); + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); + this.pdfParser = new PDFParser(); + } + + @Before + public void setup() throws Exception { + byte[] pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + pdfReader = pdfParser.readPdf(pdfData); + } + + @Test + public void verifyTitle() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("MOT test certificate (PSV)")); + assertTrue(pdfParser.getRawText(pdfReader, 3).contains("Refusal of MOT test certificate")); + assertTrue(pdfParser.getRawText(pdfReader, 5).contains("Tystysgrif prawf MOT (PSV)")); + assertTrue(pdfParser.getRawText(pdfReader, 7).contains("Gwrthod tystysgrif prawf MOT")); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("This vehicle has an outstanding recall")); + assertTrue(pdfParser.getRawText(pdfReader, 3).contains("This vehicle has an outstanding recall")); + assertTrue(pdfParser.getRawText(pdfReader, 5).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + assertTrue(pdfParser.getRawText(pdfReader, 7).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + } + + @Test + public void verifySinglePageWithInvalidXMLCharacter() throws Exception { + this.testCertificate = CvsCertificateTestDataProvider.getCvsPsvPRSBilingualHavingInvalidXMLCharacter(); + pdfParser.getRawText(pdfReader, 1); + } +} + diff --git a/src/test/java/pdfverification/tests/TrlPrsBilingual.java b/src/test/java/pdfverification/tests/TrlPrsBilingual.java new file mode 100644 index 00000000..fe3af2b9 --- /dev/null +++ b/src/test/java/pdfverification/tests/TrlPrsBilingual.java @@ -0,0 +1,67 @@ +package pdfverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import com.itextpdf.text.pdf.PdfReader; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.junit.Before; +import org.junit.Test; +import org.xhtmlrenderer.pdf.ITextRenderer; +import pdfverification.service.PDFParser; +import uk.gov.dvsa.model.cvs.CvsMotCertificate; +import uk.gov.dvsa.service.HtmlGenerator; +import uk.gov.dvsa.service.PDFGenerationService; +import java.io.IOException; + +import static htmlverification.framework.component.DefectSummaryComponent.*; +import static org.junit.Assert.assertTrue; +import static uk.gov.dvsa.model.cvs.certificateData.CvsMotCertificateDataWelsh.MINOR_DEFECTS_HEADER_WELSH; + +public class TrlPrsBilingual { + private final HtmlGenerator htmlGenerator; + private final PDFGenerationService pdfGenerationService; + private final CvsMotCertificate testCertificate; + private final PDFParser pdfParser; + + private PdfReader pdfReader; + + public TrlPrsBilingual() { + this.testCertificate = CvsCertificateTestDataProvider.getCvsTrlPrsBilingual(); + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); + this.pdfParser = new PDFParser(); + } + + @Before + public void setup() throws Exception { + byte[] pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + pdfReader = pdfParser.readPdf(pdfData); + } + + @Test + public void verifyEnglishTitles() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("MOT test certificate (TRL)")); + assertTrue(pdfParser.getRawText(pdfReader, 3).contains("Refusal of MOT test certificate")); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("This vehicle has an outstanding recall")); + assertTrue(pdfParser.getRawText(pdfReader, 3).contains("This vehicle has an outstanding recall")); + } + + @Test + public void verifyWelshTitles() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 4).contains("Tystysgrif prawf MOT (TRL)")); + assertTrue(pdfParser.getRawText(pdfReader, 6).contains("Gwrthod tystysgrif prawf MOT")); + assertTrue(pdfParser.getRawText(pdfReader, 4).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + assertTrue(pdfParser.getRawText(pdfReader, 6).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + } + + @Test + public void verifyBilingualMinorDefectsHeader() throws Exception { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(MINOR_DEFECTS_HEADER_TEXT)); + assertTrue(pdfParser.getRawText(pdfReader, 4).contains(MINOR_DEFECTS_HEADER_WELSH)); + } + + @Test + public void verifyBilingualAdvisoryDefectsHeader() throws Exception { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains(ADVISORIES_HEADER_TEXT)); + assertTrue(pdfParser.getRawText(pdfReader, 4).contains(ADVISORIES_HEADER_TEXT_WELSH)); + } +} diff --git a/src/test/java/pdfverification/tests/VTG12Tests.java b/src/test/java/pdfverification/tests/VTG12Tests.java new file mode 100644 index 00000000..f1a0f398 --- /dev/null +++ b/src/test/java/pdfverification/tests/VTG12Tests.java @@ -0,0 +1,36 @@ +package pdfverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.xhtmlrenderer.pdf.ITextRenderer; +import pdfverification.service.PDFParser; +import uk.gov.dvsa.service.HtmlGenerator; +import uk.gov.dvsa.service.PDFGenerationService; + +public class VTG12Tests extends AbandonedTests{ + + public VTG12Tests() { + super.testCertificate = CvsCertificateTestDataProvider.getVTG12(); + super.htmlGenerator = new HtmlGenerator(new Handlebars()); + super.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); + super.pdfParser = new PDFParser(); + + super.DYNAMIC_TITLE_SECTION = "Examination (VTG12)"; + super.REGULATION_LINE1 = "Regulations 7 and 8 of the Goods Vehicles (Plating"; + super.REGULATION_LINE2 = "and Testing) Regulations 1988 as Amended"; + super.VEHICLE_TYPE_TEXT_LINE1 = "In respect of the goods vehicle with registration number / chassis serial number / trailer"; + super.VEHICLE_TYPE_TEXT_LINE2 = "identification mark :"; + super.VIN = "P O I U Y T R E W Q 0 1 2 3 0 1 0 9 5 6 7 8 9 1"; + super.REASONS_FOR_REFUSAL_LINE1 = "Reason 1 exists VTG12"; + super.REASONS_FOR_REFUSAL_LINE2 = "Reason 2 exists VTG12"; + super.ROLLING_FOOTER_LEFT = "VTG12 (DVSA0440)"; + super.ADDITIONAL_COMMENTS = "additional comments VTG12"; + super.ROLLING_HEADER_LEFT = "VTG12"; + super.ROLLING_HEADER_RIGHT = "Acceptance of a Goods Vehicle for Examination"; + super.PRINT_NAME = "fake tester"; + super.LOCATION = "fake12312312"; + super.LOCATION_NUMBER = "fake12312312"; + super.DATE_OF_THE_TEST = "01.02.2024"; + super.SECTION_TEXT = "having been submitted for an examination under Section 49 and 51 of the Road Traffic Act 1988, it"; + } +} diff --git a/src/test/java/pdfverification/tests/VTG30Tests.java b/src/test/java/pdfverification/tests/VTG30Tests.java index cef7ccf2..0c3b7f3d 100644 --- a/src/test/java/pdfverification/tests/VTG30Tests.java +++ b/src/test/java/pdfverification/tests/VTG30Tests.java @@ -10,18 +10,19 @@ import uk.gov.dvsa.model.cvs.CvsMotCertificate; import uk.gov.dvsa.service.HtmlGenerator; import uk.gov.dvsa.service.PDFGenerationService; +import java.io.IOException; +import static org.junit.Assert.assertTrue; public class VTG30Tests { - private HtmlGenerator htmlGenerator; - private PDFGenerationService pdfGenerationService; - private CvsMotCertificate testCertificate; - private PDFParser pdfParser; - private byte[] pdfData; + public HtmlGenerator htmlGenerator; + public PDFGenerationService pdfGenerationService; + public CvsMotCertificate testCertificate; + public PDFParser pdfParser; + public PdfReader pdfReader; public VTG30Tests() { this.testCertificate = CvsCertificateTestDataProvider.getVtg30(); - this.htmlGenerator = new HtmlGenerator(new Handlebars()); this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); this.pdfParser = new PDFParser(); @@ -29,17 +30,23 @@ public VTG30Tests() { @Before public void before() throws Exception { - pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + byte[] pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + pdfReader = pdfParser.readPdf(pdfData); } @Test public void verifySinglePageWithInvalidXMLCharacter() throws Exception { this.testCertificate = CvsCertificateTestDataProvider.getVtg30HavingInvalidXMLCharacter(); - pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); - + byte[] pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); PdfReader reader = pdfParser.readPdf(pdfData); pdfParser.getRawText(reader, 1); } + + @Test + public void verifyTitle() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("Refusal of MOT test certificate")); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("This vehicle has an outstanding recall")); + } } diff --git a/src/test/java/pdfverification/tests/VTG30WTests.java b/src/test/java/pdfverification/tests/VTG30WTests.java index 097145a6..9ea91650 100644 --- a/src/test/java/pdfverification/tests/VTG30WTests.java +++ b/src/test/java/pdfverification/tests/VTG30WTests.java @@ -10,7 +10,6 @@ import uk.gov.dvsa.model.cvs.CvsMotCertificate; import uk.gov.dvsa.service.HtmlGenerator; import uk.gov.dvsa.service.PDFGenerationService; - import java.io.IOException; import static org.junit.Assert.assertTrue; @@ -42,10 +41,11 @@ public void setup() throws Exception { @Test public void verifyTitle() throws IOException { assertTrue(pdfParser.getRawText(pdfReader, 1).contains(CERT_NAME)); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); } @Test - public void verifySinglePageWithInvaidXMLCharacter() throws Exception { + public void verifySinglePageWithInvalidXMLCharacter() throws Exception { this.testCertificate = CvsCertificateTestDataProvider.getVTG30WHavingInvalidXMLCharacter(); pdfParser.getRawText(pdfReader, 1); } diff --git a/src/test/java/pdfverification/tests/VTG5Tests.java b/src/test/java/pdfverification/tests/VTG5Tests.java index fe743ff4..7658e5b1 100644 --- a/src/test/java/pdfverification/tests/VTG5Tests.java +++ b/src/test/java/pdfverification/tests/VTG5Tests.java @@ -21,7 +21,6 @@ public class VTG5Tests { public VTG5Tests() { this.testCertificate = CvsCertificateTestDataProvider.getVtg5(); - this.htmlGenerator = new HtmlGenerator(new Handlebars()); this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); this.pdfParser = new PDFParser(); diff --git a/src/test/java/pdfverification/tests/VTP12Tests.java b/src/test/java/pdfverification/tests/VTP12Tests.java new file mode 100644 index 00000000..6527334a --- /dev/null +++ b/src/test/java/pdfverification/tests/VTP12Tests.java @@ -0,0 +1,36 @@ +package pdfverification.tests; + +import com.github.jknack.handlebars.Handlebars; +import htmlverification.service.CvsCertificateTestDataProvider; +import org.xhtmlrenderer.pdf.ITextRenderer; +import pdfverification.service.PDFParser; +import uk.gov.dvsa.service.HtmlGenerator; +import uk.gov.dvsa.service.PDFGenerationService; + +public class VTP12Tests extends AbandonedTests { + + public VTP12Tests() { + this.testCertificate = CvsCertificateTestDataProvider.getVTP12(); + this.htmlGenerator = new HtmlGenerator(new Handlebars()); + this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); + this.pdfParser = new PDFParser(); + + super.DYNAMIC_TITLE_SECTION = "Examination (VTP12)"; + super.REGULATION_LINE1 = "Regulation 13 of the Motor Vehicles (Tests) "; + super.REGULATION_LINE2 = "Regulations 1981 as amended"; + super.VEHICLE_TYPE_TEXT_LINE1 = "In respect of the public service vehicle with registration number / chassis serial number :"; + super.VEHICLE_TYPE_TEXT_LINE2 = ""; + super.VIN = "P O I U Y T R E W Q 0 1 2 3 0 1 0 9 5 6 7 8 9 1"; + super.REASONS_FOR_REFUSAL_LINE1 = "Reason 1 exists VTP12"; + super.REASONS_FOR_REFUSAL_LINE2 = "Reason 1 exists VTP12"; + super.ROLLING_FOOTER_LEFT = "VTP12 (DVSA0453)"; + super.ADDITIONAL_COMMENTS = "additional comments VTP12"; + super.ROLLING_HEADER_LEFT = "VTP12"; + super.ROLLING_HEADER_RIGHT = "Acceptance of a Public Service Vehicle for Examination"; + super.PRINT_NAME = "fake tester"; + super.LOCATION = "fake12312312"; + super.LOCATION_NUMBER = "fake12312312"; + super.DATE_OF_THE_TEST = "01.02.2024"; + super.SECTION_TEXT = "having been submitted for an examination under Section 45 of the Road Traffic Act 1988, it is"; + } +} diff --git a/src/test/java/pdfverification/tests/VTP20Tests.java b/src/test/java/pdfverification/tests/VTP20Tests.java index 9d986bd9..b1061e65 100644 --- a/src/test/java/pdfverification/tests/VTP20Tests.java +++ b/src/test/java/pdfverification/tests/VTP20Tests.java @@ -10,6 +10,8 @@ import uk.gov.dvsa.model.cvs.CvsMotCertificate; import uk.gov.dvsa.service.HtmlGenerator; import uk.gov.dvsa.service.PDFGenerationService; +import java.io.IOException; +import static org.junit.Assert.assertTrue; public class VTP20Tests { @@ -17,11 +19,11 @@ public class VTP20Tests { private PDFGenerationService pdfGenerationService; private CvsMotCertificate testCertificate; private PDFParser pdfParser; + public PdfReader pdfReader; private byte[] pdfData; public VTP20Tests() { this.testCertificate = CvsCertificateTestDataProvider.getVtp20(); - this.htmlGenerator = new HtmlGenerator(new Handlebars()); this.pdfGenerationService = new PDFGenerationService(new ITextRenderer()); this.pdfParser = new PDFParser(); @@ -30,6 +32,7 @@ public VTP20Tests() { @Before public void before() throws Exception { pdfData = pdfGenerationService.generate(htmlGenerator.generate(testCertificate)); + pdfReader = pdfParser.readPdf(pdfData); } @Test @@ -42,4 +45,10 @@ public void verifySinglePageWithInvalidXMLCharacter() throws Exception { pdfParser.getRawText(reader, 1); } + + @Test + public void verifyTitle() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("MOT test certificate (PSV)")); + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("This vehicle has an outstanding recall")); + } } diff --git a/src/test/java/pdfverification/tests/VTP30WTests.java b/src/test/java/pdfverification/tests/VTP30WTests.java index 5255fe19..779ca3d0 100644 --- a/src/test/java/pdfverification/tests/VTP30WTests.java +++ b/src/test/java/pdfverification/tests/VTP30WTests.java @@ -10,8 +10,6 @@ import uk.gov.dvsa.model.cvs.VTP30W; import uk.gov.dvsa.service.HtmlGenerator; import uk.gov.dvsa.service.PDFGenerationService; - -import java.io.FileOutputStream; import java.io.IOException; import static htmlverification.framework.component.DefectSummaryComponent.*; import static org.junit.Assert.assertTrue; @@ -101,4 +99,9 @@ public void verifyWelshTestingOrganisationAndInspection() throws IOException { public void verifyWelshTestNumber() throws IOException { assertTrue(pdfParser.getRawText(pdfReader, FIRST_WELSH_PAGE_NUMBER).contains("Rhif prawf")); } + + @Test + public void verifyRecallTitle() throws IOException { + assertTrue(pdfParser.getRawText(pdfReader, 1).contains("Mae gan y cerbyd hwn wedi cael ei alw'n ôl")); + } }