summaryrefslogtreecommitdiff
path: root/spec/javascripts/projects/gke_cluster_dropdowns/stores/actions_spec.js
blob: ea4c96055d78948d2e430a4b27cb52da8004c43a (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import testAction from 'spec/helpers/vuex_action_helper';
import * as actions from '~/projects/gke_cluster_dropdowns/store/actions';
import { createStore } from '~/projects/gke_cluster_dropdowns/store';
import { gapi } from '../helpers';
import { selectedProjectMock, selectedZoneMock, selectedMachineTypeMock } from '../mock_data';

describe('GCP Cluster Dropdown Store Actions', () => {
  let store;

  beforeEach(() => {
    store = createStore();
  });

  describe('setProject', () => {
    it('should set project', done => {
      testAction(
        actions.setProject,
        selectedProjectMock,
        { selectedProject: {} },
        [{ type: 'SET_PROJECT', payload: selectedProjectMock }],
        [],
        done,
      );
    });
  });

  describe('setZone', () => {
    it('should set zone', done => {
      testAction(
        actions.setZone,
        selectedZoneMock,
        { selectedZone: '' },
        [{ type: 'SET_ZONE', payload: selectedZoneMock }],
        [],
        done,
      );
    });
  });

  describe('setMachineType', () => {
    it('should set machine type', done => {
      testAction(
        actions.setMachineType,
        selectedMachineTypeMock,
        { selectedMachineType: '' },
        [{ type: 'SET_MACHINE_TYPE', payload: selectedMachineTypeMock }],
        [],
        done,
      );
    });
  });

  describe('async fetch methods', () => {
    window.gapi = gapi();

    describe('fetchProjects', () => {
      it('fetches projects from Google API', done => {
        store
          .dispatch('fetchProjects')
          .then(() => {
            expect(store.state.projects[0].projectId).toEqual(selectedProjectMock.projectId);
            expect(store.state.projects[0].name).toEqual(selectedProjectMock.name);

            done();
          })
          .catch(done.fail);
      });
    });

    describe('fetchZones', () => {
      it('fetches zones from Google API', done => {
        store
          .dispatch('fetchZones')
          .then(() => {
            expect(store.state.zones[0].name).toEqual(selectedZoneMock);

            done();
          })
          .catch(done.fail);
      });
    });

    describe('fetchMachineTypes', () => {
      it('fetches machine types from Google API', done => {
        store
          .dispatch('fetchMachineTypes')
          .then(() => {
            expect(store.state.machineTypes[0].name).toEqual(selectedMachineTypeMock);

            done();
          })
          .catch(done.fail);
      });
    });
  });
});