gitlab-org--gitlab-foss/spec/frontend/create_cluster/init_create_cluster_spec.js

78 lines
2.3 KiB
JavaScript

import initGkeDropdowns from '~/create_cluster/gke_cluster';
import initGkeNamespace from '~/create_cluster/gke_cluster_namespace';
import initCreateCluster from '~/create_cluster/init_create_cluster';
import PersistentUserCallout from '~/persistent_user_callout';
// This import is loaded dynamically in `init_create_cluster`.
// Let's eager import it here so that the first spec doesn't timeout.
// https://gitlab.com/gitlab-org/gitlab/issues/118499
import '~/create_cluster/eks_cluster';
jest.mock('~/create_cluster/gke_cluster', () => jest.fn());
jest.mock('~/create_cluster/gke_cluster_namespace', () => jest.fn());
jest.mock('~/persistent_user_callout', () => ({
factory: jest.fn(),
}));
describe('initCreateCluster', () => {
let document;
let gon;
beforeEach(() => {
document = {
body: { dataset: {} },
querySelector: jest.fn(),
};
gon = { features: {} };
});
afterEach(() => {
jest.clearAllMocks();
});
describe.each`
pageSuffix | page
${':clusters:new'} | ${'project:clusters:new'}
${':clusters:create_gcp'} | ${'groups:clusters:create_gcp'}
${':clusters:create_user'} | ${'admin:clusters:create_user'}
`('when cluster page ends in $pageSuffix', ({ page }) => {
beforeEach(() => {
document.body.dataset = { page };
initCreateCluster(document, gon);
});
it('initializes create GKE cluster app', () => {
expect(initGkeDropdowns).toHaveBeenCalled();
});
it('initializes gcp signup offer banner', () => {
expect(PersistentUserCallout.factory).toHaveBeenCalled();
});
});
describe('when creating a project level cluster', () => {
it('initializes gke namespace app', () => {
document.body.dataset.page = 'project:clusters:new';
initCreateCluster(document, gon);
expect(initGkeNamespace).toHaveBeenCalled();
});
});
describe.each`
clusterLevel | page
${'group level'} | ${'groups:clusters:new'}
${'instance level'} | ${'admin:clusters:create_gcp'}
`('when creating a $clusterLevel cluster', ({ page }) => {
it('does not initialize gke namespace app', () => {
document.body.dataset = { page };
initCreateCluster(document, gon);
expect(initGkeNamespace).not.toHaveBeenCalled();
});
});
});