95 lines
2.7 KiB
JavaScript
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();
|
|
});
|
|
});
|
|
});
|