summaryrefslogtreecommitdiff
path: root/spec/frontend/create_cluster/init_create_cluster_spec.js
blob: e7b9a7adde45b95c3b04f8b8e23fa21177b9c4cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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();
    });
  });
});