/spec/javascripts/vue_mr_widget/components/mr_widget_pipeline_spec.js
https://gitlab.com/Stretch96/gitlab-ce · JavaScript · 274 lines · 226 code · 48 blank · 0 comment · 3 complexity · 46992b598913ae62663dfb2a04004891 MD5 · raw file
- import Vue from 'vue';
- import pipelineComponent from '~/vue_merge_request_widget/components/mr_widget_pipeline.vue';
- import mountComponent from 'spec/helpers/vue_mount_component_helper';
- import { trimText } from 'spec/helpers/vue_component_helper';
- import mockData from '../mock_data';
- describe('MRWidgetPipeline', () => {
- let vm;
- let Component;
- beforeEach(() => {
- Component = Vue.extend(pipelineComponent);
- });
- afterEach(() => {
- vm.$destroy();
- });
- describe('computed', () => {
- describe('hasPipeline', () => {
- it('should return true when there is a pipeline', () => {
- vm = mountComponent(Component, {
- pipeline: mockData.pipeline,
- ciStatus: 'success',
- hasCi: true,
- troubleshootingDocsPath: 'help',
- });
- expect(vm.hasPipeline).toEqual(true);
- });
- it('should return false when there is no pipeline', () => {
- vm = mountComponent(Component, {
- pipeline: {},
- troubleshootingDocsPath: 'help',
- });
- expect(vm.hasPipeline).toEqual(false);
- });
- });
- describe('hasCIError', () => {
- it('should return false when there is no CI error', () => {
- vm = mountComponent(Component, {
- pipeline: mockData.pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- });
- expect(vm.hasCIError).toEqual(false);
- });
- it('should return true when there is a CI error', () => {
- vm = mountComponent(Component, {
- pipeline: mockData.pipeline,
- hasCi: true,
- ciStatus: null,
- troubleshootingDocsPath: 'help',
- });
- expect(vm.hasCIError).toEqual(true);
- });
- });
- });
- describe('rendered output', () => {
- it('should render CI error', () => {
- vm = mountComponent(Component, {
- pipeline: mockData.pipeline,
- hasCi: true,
- ciStatus: null,
- troubleshootingDocsPath: 'help',
- });
- expect(vm.$el.querySelector('.media-body').textContent.trim()).toContain(
- 'Could not retrieve the pipeline status. For troubleshooting steps, read the documentation.',
- );
- });
- describe('with a pipeline', () => {
- beforeEach(() => {
- vm = mountComponent(Component, {
- pipeline: mockData.pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- });
- });
- it('should render pipeline ID', () => {
- expect(vm.$el.querySelector('.pipeline-id').textContent.trim()).toEqual(
- `#${mockData.pipeline.id}`,
- );
- });
- it('should render pipeline status and commit id', () => {
- expect(vm.$el.querySelector('.media-body').textContent.trim()).toContain(
- mockData.pipeline.details.status.label,
- );
- expect(vm.$el.querySelector('.js-commit-link').textContent.trim()).toEqual(
- mockData.pipeline.commit.short_id,
- );
- expect(vm.$el.querySelector('.js-commit-link').getAttribute('href')).toEqual(
- mockData.pipeline.commit.commit_path,
- );
- });
- it('should render pipeline graph', () => {
- expect(vm.$el.querySelector('.mr-widget-pipeline-graph')).toBeDefined();
- expect(vm.$el.querySelectorAll('.stage-container').length).toEqual(
- mockData.pipeline.details.stages.length,
- );
- });
- it('should render coverage information', () => {
- expect(vm.$el.querySelector('.media-body').textContent).toContain(
- `Coverage ${mockData.pipeline.coverage}`,
- );
- });
- });
- describe('without commit path', () => {
- beforeEach(() => {
- const mockCopy = JSON.parse(JSON.stringify(mockData));
- delete mockCopy.pipeline.commit;
- vm = mountComponent(Component, {
- pipeline: mockCopy.pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- });
- });
- it('should render pipeline ID', () => {
- expect(vm.$el.querySelector('.pipeline-id').textContent.trim()).toEqual(
- `#${mockData.pipeline.id}`,
- );
- });
- it('should render pipeline status', () => {
- expect(vm.$el.querySelector('.media-body').textContent.trim()).toContain(
- mockData.pipeline.details.status.label,
- );
- expect(vm.$el.querySelector('.js-commit-link')).toBeNull();
- });
- it('should render pipeline graph', () => {
- expect(vm.$el.querySelector('.mr-widget-pipeline-graph')).toBeDefined();
- expect(vm.$el.querySelectorAll('.stage-container').length).toEqual(
- mockData.pipeline.details.stages.length,
- );
- });
- it('should render coverage information', () => {
- expect(vm.$el.querySelector('.media-body').textContent).toContain(
- `Coverage ${mockData.pipeline.coverage}`,
- );
- });
- });
- describe('without coverage', () => {
- it('should not render a coverage', () => {
- const mockCopy = JSON.parse(JSON.stringify(mockData));
- delete mockCopy.pipeline.coverage;
- vm = mountComponent(Component, {
- pipeline: mockCopy.pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- });
- expect(vm.$el.querySelector('.media-body').textContent).not.toContain('Coverage');
- });
- });
- describe('without a pipeline graph', () => {
- it('should not render a pipeline graph', () => {
- const mockCopy = JSON.parse(JSON.stringify(mockData));
- delete mockCopy.pipeline.details.stages;
- vm = mountComponent(Component, {
- pipeline: mockCopy.pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- });
- expect(vm.$el.querySelector('.js-mini-pipeline-graph')).toEqual(null);
- });
- });
- describe('without pipeline.merge_request', () => {
- it('should render info that includes the commit and branch details', () => {
- const mockCopy = JSON.parse(JSON.stringify(mockData));
- delete mockCopy.pipeline.merge_request;
- const { pipeline } = mockCopy;
- vm = mountComponent(Component, {
- pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- sourceBranchLink: mockCopy.source_branch_link,
- });
- const expected = `Pipeline #${pipeline.id} ${pipeline.details.status.label} for ${
- pipeline.commit.short_id
- } on ${mockCopy.source_branch_link}`;
- const actual = trimText(vm.$el.querySelector('.js-pipeline-info-container').innerText);
- expect(actual).toBe(expected);
- });
- });
- describe('with pipeline.merge_request and flags.merge_request_pipeline', () => {
- it('should render info that includes the commit, MR, source branch, and target branch details', () => {
- const mockCopy = JSON.parse(JSON.stringify(mockData));
- const { pipeline } = mockCopy;
- pipeline.flags.merge_request_pipeline = true;
- pipeline.flags.detached_merge_request_pipeline = false;
- vm = mountComponent(Component, {
- pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- sourceBranchLink: mockCopy.source_branch_link,
- });
- const expected = `Pipeline #${pipeline.id} ${pipeline.details.status.label} for ${
- pipeline.commit.short_id
- } on !${pipeline.merge_request.iid} with ${pipeline.merge_request.source_branch} into ${
- pipeline.merge_request.target_branch
- }`;
- const actual = trimText(vm.$el.querySelector('.js-pipeline-info-container').innerText);
- expect(actual).toBe(expected);
- });
- });
- describe('with pipeline.merge_request and flags.detached_merge_request_pipeline', () => {
- it('should render info that includes the commit, MR, and source branch details', () => {
- const mockCopy = JSON.parse(JSON.stringify(mockData));
- const { pipeline } = mockCopy;
- pipeline.flags.merge_request_pipeline = false;
- pipeline.flags.detached_merge_request_pipeline = true;
- vm = mountComponent(Component, {
- pipeline,
- hasCi: true,
- ciStatus: 'success',
- troubleshootingDocsPath: 'help',
- sourceBranchLink: mockCopy.source_branch_link,
- });
- const expected = `Pipeline #${pipeline.id} ${pipeline.details.status.label} for ${
- pipeline.commit.short_id
- } on !${pipeline.merge_request.iid} with ${pipeline.merge_request.source_branch}`;
- const actual = trimText(vm.$el.querySelector('.js-pipeline-info-container').innerText);
- expect(actual).toBe(expected);
- });
- });
- });
- });