gitlab-org--gitlab-foss/spec/frontend/pipelines/pipeline_tabs_spec.js

95 lines
2.7 KiB
JavaScript

import { createAppOptions, createPipelineTabs } from '~/pipelines/pipeline_tabs';
import { updateHistory } from '~/lib/utils/url_utility';
jest.mock('~/lib/utils/url_utility', () => ({
removeParams: () => 'gitlab.com',
updateHistory: jest.fn(),
joinPaths: () => {},
setUrlFragment: () => {},
}));
jest.mock('~/pipelines/utils', () => ({
getPipelineDefaultTab: () => '',
}));
describe('~/pipelines/pipeline_tabs.js', () => {
describe('createAppOptions', () => {
const SELECTOR = 'SELECTOR';
let el;
const createElement = () => {
el = document.createElement('div');
el.id = SELECTOR;
el.dataset.canGenerateCodequalityReports = 'true';
el.dataset.codequalityReportDownloadPath = 'codequalityReportDownloadPath';
el.dataset.downloadablePathForReportType = 'downloadablePathForReportType';
el.dataset.exposeSecurityDashboard = 'true';
el.dataset.exposeLicenseScanningData = 'true';
el.dataset.failedJobsCount = 1;
el.dataset.failedJobsSummary = '[]';
el.dataset.graphqlResourceEtag = 'graphqlResourceEtag';
el.dataset.pipelineIid = '123';
el.dataset.pipelineProjectPath = 'pipelineProjectPath';
document.body.appendChild(el);
};
afterEach(() => {
el = null;
});
it("extracts the properties from the element's dataset", () => {
createElement();
const options = createAppOptions(`#${SELECTOR}`, null);
expect(options).toMatchObject({
el,
provide: {
canGenerateCodequalityReports: true,
codequalityReportDownloadPath: 'codequalityReportDownloadPath',
downloadablePathForReportType: 'downloadablePathForReportType',
exposeSecurityDashboard: true,
exposeLicenseScanningData: true,
failedJobsCount: '1',
failedJobsSummary: [],
graphqlResourceEtag: 'graphqlResourceEtag',
pipelineIid: '123',
pipelineProjectPath: 'pipelineProjectPath',
},
});
});
it('returns `null` if el does not exist', () => {
expect(createAppOptions('foo', null)).toBe(null);
});
});
describe('createPipelineTabs', () => {
const title = 'Pipeline Tabs';
beforeAll(() => {
document.title = title;
});
afterAll(() => {
document.title = '';
});
it('calls `updateHistory` with correct params', () => {
createPipelineTabs({});
expect(updateHistory).toHaveBeenCalledWith({
title,
url: 'gitlab.com',
replace: true,
});
});
it("returns early if options aren't provided", () => {
createPipelineTabs();
expect(updateHistory).not.toHaveBeenCalled();
});
});
});