import initCreateCluster from '~/create_cluster/init_create_cluster'; import initGkeDropdowns from '~/create_cluster/gke_cluster'; import initGkeNamespace from '~/create_cluster/gke_cluster_namespace'; import PersistentUserCallout from '~/persistent_user_callout'; 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(() => { initGkeDropdowns.mockReset(); initGkeNamespace.mockReset(); PersistentUserCallout.factory.mockReset(); }); 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(); }); }); });