From 420f67425702120a9c6d801591c9fcbfd355195f Mon Sep 17 00:00:00 2001 From: Oliver Byford Date: Thu, 31 May 2018 16:09:52 +0100 Subject: [PATCH 1/2] Add test to ensure components can be imported Add a failing test that tries to render every component using a different base path for Nunjucks - any imports that assume a particular base path will then throw exceptions. --- src/components/all.test.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/components/all.test.js diff --git a/src/components/all.test.js b/src/components/all.test.js new file mode 100644 index 0000000000..a0d5450e67 --- /dev/null +++ b/src/components/all.test.js @@ -0,0 +1,27 @@ +/* eslint-env jest */ + +const { allComponents } = require('../../lib/file-helper') + +const configPaths = require('../../config/paths.json') + +// We can't use the render function from jest-helpers, because we need control +// over the nunjucks environment. +const nunjucks = require('nunjucks') + +describe('When nunjucks is configured with a different base path', () => { + beforeAll(() => { + // Create a new Nunjucks environment that uses the src directory as its + // base path, rather than the components folder itself + nunjucks.configure(configPaths.src) + }) + + allComponents.forEach((component) => { + describe(`the ${component} component`, () => { + it('can be rendered without erroring', () => { + expect(() => { + nunjucks.render(`components/${component}/template.njk`, {}) + }).not.toThrow() + }) + }) + }) +}) From a57c784a45727feead94130469df7a2445e0c75b Mon Sep 17 00:00:00 2001 From: Oliver Byford Date: Thu, 31 May 2018 16:15:11 +0100 Subject: [PATCH 2/2] Fix failing tests by using relative imports Also removing a random import from the warning text component where it tries to import itself. --- src/components/checkboxes/template.njk | 8 ++++---- src/components/date-input/template.njk | 8 ++++---- src/components/file-upload/template.njk | 6 +++--- src/components/input/template.njk | 6 +++--- src/components/phase-banner/template.njk | 2 +- src/components/radios/template.njk | 8 ++++---- src/components/select/template.njk | 6 +++--- src/components/textarea/template.njk | 6 +++--- src/components/warning-text/template.njk | 2 -- 9 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/components/checkboxes/template.njk b/src/components/checkboxes/template.njk index ceb491ef89..e8288ebe98 100644 --- a/src/components/checkboxes/template.njk +++ b/src/components/checkboxes/template.njk @@ -1,7 +1,7 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "fieldset/macro.njk" import govukFieldset %} -{% from "hint/macro.njk" import govukHint %} -{% from "label/macro.njk" import govukLabel %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../fieldset/macro.njk" import govukFieldset %} +{% from "../hint/macro.njk" import govukHint %} +{% from "../label/macro.njk" import govukLabel %} {#- If an id 'prefix' is not passed, fall back to using the name attribute instead. We need this for error messages and hints as well -#} diff --git a/src/components/date-input/template.njk b/src/components/date-input/template.njk index c1d03fad05..ec1df73e8c 100644 --- a/src/components/date-input/template.njk +++ b/src/components/date-input/template.njk @@ -1,7 +1,7 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "fieldset/macro.njk" import govukFieldset %} -{% from "hint/macro.njk" import govukHint %} -{% from "input/macro.njk" import govukInput %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../fieldset/macro.njk" import govukFieldset %} +{% from "../hint/macro.njk" import govukHint %} +{% from "../input/macro.njk" import govukInput %} {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} diff --git a/src/components/file-upload/template.njk b/src/components/file-upload/template.njk index 3f7e91f95d..4ba62826f9 100644 --- a/src/components/file-upload/template.njk +++ b/src/components/file-upload/template.njk @@ -1,6 +1,6 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "hint/macro.njk" import govukHint %} -{% from "label/macro.njk" import govukLabel %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../hint/macro.njk" import govukHint %} +{% from "../label/macro.njk" import govukLabel %} {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} diff --git a/src/components/input/template.njk b/src/components/input/template.njk index cd4c7b5d65..1b7c6d9377 100644 --- a/src/components/input/template.njk +++ b/src/components/input/template.njk @@ -1,6 +1,6 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "hint/macro.njk" import govukHint %} -{% from "label/macro.njk" import govukLabel %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../hint/macro.njk" import govukHint %} +{% from "../label/macro.njk" import govukLabel %} {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} diff --git a/src/components/phase-banner/template.njk b/src/components/phase-banner/template.njk index 37bcb10571..dd4d38fb4a 100644 --- a/src/components/phase-banner/template.njk +++ b/src/components/phase-banner/template.njk @@ -1,4 +1,4 @@ -{% from "tag/macro.njk" import govukTag -%} +{% from "../tag/macro.njk" import govukTag -%}
diff --git a/src/components/radios/template.njk b/src/components/radios/template.njk index 59c7ba30ce..fe2f24dd1d 100644 --- a/src/components/radios/template.njk +++ b/src/components/radios/template.njk @@ -1,7 +1,7 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "fieldset/macro.njk" import govukFieldset %} -{% from "hint/macro.njk" import govukHint %} -{% from "label/macro.njk" import govukLabel %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../fieldset/macro.njk" import govukFieldset %} +{% from "../hint/macro.njk" import govukHint %} +{% from "../label/macro.njk" import govukLabel %} {#- If an id 'prefix' is not passed, fall back to using the name attribute instead. We need this for error messages and hints as well -#} diff --git a/src/components/select/template.njk b/src/components/select/template.njk index 23d3c45495..844176e484 100644 --- a/src/components/select/template.njk +++ b/src/components/select/template.njk @@ -1,6 +1,6 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "hint/macro.njk" import govukHint %} -{% from "label/macro.njk" import govukLabel %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../hint/macro.njk" import govukHint %} +{% from "../label/macro.njk" import govukLabel %} {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} diff --git a/src/components/textarea/template.njk b/src/components/textarea/template.njk index 5372d51417..9f6b5c54fc 100644 --- a/src/components/textarea/template.njk +++ b/src/components/textarea/template.njk @@ -1,6 +1,6 @@ -{% from "error-message/macro.njk" import govukErrorMessage -%} -{% from "hint/macro.njk" import govukHint %} -{% from "label/macro.njk" import govukLabel %} +{% from "../error-message/macro.njk" import govukErrorMessage -%} +{% from "../hint/macro.njk" import govukHint %} +{% from "../label/macro.njk" import govukLabel %} {#- a record of other elements that we need to associate with the input using aria-describedby – for example hints or error messages -#} diff --git a/src/components/warning-text/template.njk b/src/components/warning-text/template.njk index d962ec8e9c..d4d9cc211f 100644 --- a/src/components/warning-text/template.njk +++ b/src/components/warning-text/template.njk @@ -1,5 +1,3 @@ -{% from "warning-text/macro.njk" import govukWarningText -%} -