summaryrefslogtreecommitdiff
path: root/spec/javascripts/deploy_keys/components/keys_panel_spec.js
blob: a69b39c35c4f1a3a14317ef26731958a1a84ddf8 (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
import Vue from 'vue';
import DeployKeysStore from '~/deploy_keys/store';
import deployKeysPanel from '~/deploy_keys/components/keys_panel.vue';

describe('Deploy keys panel', () => {
  const data = getJSONFixture('deploy_keys/keys.json');
  let vm;

  beforeEach((done) => {
    const DeployKeysPanelComponent = Vue.extend(deployKeysPanel);
    const store = new DeployKeysStore();
    store.keys = data;

    vm = new DeployKeysPanelComponent({
      propsData: {
        title: 'test',
        keys: data.enabled_keys,
        showHelpBox: true,
        store,
      },
    }).$mount();

    setTimeout(done);
  });

  it('renders the title with keys count', () => {
    expect(
      vm.$el.querySelector('h5').textContent.trim(),
    ).toContain('test');

    expect(
      vm.$el.querySelector('h5').textContent.trim(),
    ).toContain(`(${vm.keys.length})`);
  });

  it('renders list of keys', () => {
    expect(
      vm.$el.querySelectorAll('li').length,
    ).toBe(vm.keys.length);
  });

  it('renders help box if keys are empty', (done) => {
    vm.keys = [];

    Vue.nextTick(() => {
      expect(
        vm.$el.querySelector('.settings-message'),
      ).toBeDefined();

      expect(
        vm.$el.querySelector('.settings-message').textContent.trim(),
      ).toBe('No deploy keys found. Create one with the form above.');

      done();
    });
  });

  it('does not render help box if keys are empty & showHelpBox is false', (done) => {
    vm.keys = [];
    vm.showHelpBox = false;

    Vue.nextTick(() => {
      expect(
        vm.$el.querySelector('.settings-message'),
      ).toBeNull();

      done();
    });
  });
});