Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/pipeline_wizard/templates/pages_spec.js')
-rw-r--r--spec/frontend/pipeline_wizard/templates/pages_spec.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/spec/frontend/pipeline_wizard/templates/pages_spec.js b/spec/frontend/pipeline_wizard/templates/pages_spec.js
new file mode 100644
index 00000000000..f89e8f05475
--- /dev/null
+++ b/spec/frontend/pipeline_wizard/templates/pages_spec.js
@@ -0,0 +1,89 @@
+import { Document, parseDocument } from 'yaml';
+import PagesWizardTemplate from '~/pipeline_wizard/templates/pages.yml';
+import { merge } from '~/lib/utils/yaml';
+
+const VAR_BUILD_IMAGE = '$BUILD_IMAGE';
+const VAR_INSTALLATION_STEPS = '$INSTALLATION_STEPS';
+const VAR_BUILD_STEPS = '$BUILD_STEPS';
+
+const getYaml = () => parseDocument(PagesWizardTemplate);
+const getFinalTemplate = () => {
+ const merged = new Document();
+ const yaml = getYaml();
+ yaml.toJS().steps.forEach((_, i) => {
+ merge(merged, yaml.getIn(['steps', i, 'template']));
+ });
+ return merged;
+};
+
+describe('Pages Template', () => {
+ it('is valid yaml', () => {
+ // Testing equality to an empty array (as opposed to just comparing
+ // errors.length) will cause jest to print the underlying error
+ expect(getYaml().errors).toEqual([]);
+ });
+
+ it('includes all `target`s in the respective `template`', () => {
+ const yaml = getYaml();
+ const actual = yaml.toJS().steps.map((x, i) => ({
+ inputs: x.inputs,
+ template: yaml.getIn(['steps', i, 'template']).toString(),
+ }));
+
+ expect(actual).toEqual([
+ {
+ inputs: [
+ expect.objectContaining({
+ label: 'Select your build image',
+ target: VAR_BUILD_IMAGE,
+ }),
+ expect.objectContaining({
+ widget: 'checklist',
+ title: 'Before we begin, please check:',
+ }),
+ ],
+ template: expect.stringContaining(VAR_BUILD_IMAGE),
+ },
+ {
+ inputs: [
+ expect.objectContaining({
+ label: 'Installation Steps',
+ target: VAR_INSTALLATION_STEPS,
+ }),
+ ],
+ template: expect.stringContaining(VAR_INSTALLATION_STEPS),
+ },
+ {
+ inputs: [
+ expect.objectContaining({
+ label: 'Build Steps',
+ target: VAR_BUILD_STEPS,
+ }),
+ ],
+ template: expect.stringContaining(VAR_BUILD_STEPS),
+ },
+ ]);
+ });
+
+ it('addresses all relevant instructions for a pages pipeline', () => {
+ const fullTemplate = getFinalTemplate();
+
+ expect(fullTemplate.toString()).toEqual(
+ `# The Docker image that will be used to build your app
+image: ${VAR_BUILD_IMAGE}
+# Functions that should be executed before the build script is run
+before_script: ${VAR_INSTALLATION_STEPS}
+pages:
+ script: ${VAR_BUILD_STEPS}
+ artifacts:
+ paths:
+ # The folder that contains the files to be exposed at the Page URL
+ - public
+ rules:
+ # This ensures that only pushes to the default branch will trigger
+ # a pages deploy
+ - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
+`,
+ );
+ });
+});