summaryrefslogtreecommitdiff
path: root/spec/frontend/create_cluster/store/cluster_dropdown/mutations_spec.js
blob: 197fcfc260092d8c94bccdfc5f6356f47c6d7350 (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
import {
  REQUEST_ITEMS,
  RECEIVE_ITEMS_SUCCESS,
  RECEIVE_ITEMS_ERROR,
} from '~/create_cluster/store/cluster_dropdown/mutation_types';
import mutations from '~/create_cluster/store/cluster_dropdown/mutations';
import createState from '~/create_cluster/store/cluster_dropdown/state';

describe('Cluster dropdown store mutations', () => {
  let state;
  let emptyPayload;
  let items;
  let error;

  beforeEach(() => {
    emptyPayload = {};
    items = [{ name: 'item 1' }];
    error = new Error('could not load error');
    state = createState();
  });

  it.each`
    mutation                 | mutatedProperty        | payload         | expectedValue | expectedValueDescription
    ${REQUEST_ITEMS}         | ${'isLoadingItems'}    | ${emptyPayload} | ${true}       | ${true}
    ${REQUEST_ITEMS}         | ${'loadingItemsError'} | ${emptyPayload} | ${null}       | ${null}
    ${RECEIVE_ITEMS_SUCCESS} | ${'isLoadingItems'}    | ${{ items }}    | ${false}      | ${false}
    ${RECEIVE_ITEMS_SUCCESS} | ${'items'}             | ${{ items }}    | ${items}      | ${'items payload'}
    ${RECEIVE_ITEMS_ERROR}   | ${'isLoadingItems'}    | ${{ error }}    | ${false}      | ${false}
    ${RECEIVE_ITEMS_ERROR}   | ${'error'}             | ${{ error }}    | ${error}      | ${'received error object'}
  `(`$mutation sets $mutatedProperty to $expectedValueDescription`, (data) => {
    const { mutation, mutatedProperty, payload, expectedValue } = data;

    mutations[mutation](state, payload);
    expect(state[mutatedProperty]).toBe(expectedValue);
  });
});