summaryrefslogtreecommitdiff
path: root/spec/frontend/pipelines/pipeline_tabs_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/pipelines/pipeline_tabs_spec.js')
-rw-r--r--spec/frontend/pipelines/pipeline_tabs_spec.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/spec/frontend/pipelines/pipeline_tabs_spec.js b/spec/frontend/pipelines/pipeline_tabs_spec.js
new file mode 100644
index 00000000000..b184ce31d20
--- /dev/null
+++ b/spec/frontend/pipelines/pipeline_tabs_spec.js
@@ -0,0 +1,95 @@
+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();
+ });
+ });
+});