summaryrefslogtreecommitdiff
path: root/spec/javascripts/deploy_keys/components/keys_panel_spec.js
blob: f71f5ccf08258db0b7d26a9d1d6e5218048ee220 (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
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,
        endpoint: 'https://test.host/dummy/endpoint',
      },
    }).$mount();

    setTimeout(done);
  });

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

  it('renders table header', () => {
    const tableHeader = vm.$el.querySelector('.table-row-header');

    expect(tableHeader).toExist();
    expect(tableHeader.textContent).toContain('Deploy key');
    expect(tableHeader.textContent).toContain('Project usage');
    expect(tableHeader.textContent).toContain('Created');
  });

  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('renders no table header if keys are empty', done => {
    vm.keys = [];

    Vue.nextTick(() => {
      expect(vm.$el.querySelector('.table-row-header')).not.toExist();

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