summaryrefslogtreecommitdiff
path: root/spec/javascripts/repo/components/repo_file_buttons_spec.js
blob: e1f25e4485f99b33d918c5b83d3b1735255b81f4 (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
import Vue from 'vue';
import repoFileButtons from '~/repo/components/repo_file_buttons.vue';
import RepoStore from '~/repo/stores/repo_store';

describe('RepoFileButtons', () => {
  function createComponent() {
    const RepoFileButtons = Vue.extend(repoFileButtons);

    return new RepoFileButtons().$mount();
  }

  it('renders Raw, Blame, History, Permalink and Preview toggle', () => {
    const activeFile = {
      extension: 'md',
      url: 'url',
      raw_path: 'raw_path',
      blame_path: 'blame_path',
      commits_path: 'commits_path',
      permalink: 'permalink',
    };
    const activeFileLabel = 'activeFileLabel';
    RepoStore.openedFiles = new Array(1);
    RepoStore.activeFile = activeFile;
    RepoStore.activeFileLabel = activeFileLabel;
    RepoStore.editMode = true;

    const vm = createComponent();
    const raw = vm.$el.querySelector('.raw');
    const blame = vm.$el.querySelector('.blame');
    const history = vm.$el.querySelector('.history');

    expect(vm.$el.id).toEqual('repo-file-buttons');
    expect(raw.href).toMatch(`/${activeFile.raw_path}`);
    expect(raw.textContent).toEqual('Raw');
    expect(blame.href).toMatch(`/${activeFile.blame_path}`);
    expect(blame.textContent).toEqual('Blame');
    expect(history.href).toMatch(`/${activeFile.commits_path}`);
    expect(history.textContent).toEqual('History');
    expect(vm.$el.querySelector('.permalink').textContent).toEqual('Permalink');
    expect(vm.$el.querySelector('.preview').textContent).toEqual(activeFileLabel);
  });

  it('triggers rawPreviewToggle on preview click', () => {
    const activeFile = {
      extension: 'md',
      url: 'url',
    };
    RepoStore.openedFiles = new Array(1);
    RepoStore.activeFile = activeFile;
    RepoStore.editMode = true;

    const vm = createComponent();
    const preview = vm.$el.querySelector('.preview');

    spyOn(vm, 'rawPreviewToggle');

    preview.click();

    expect(vm.rawPreviewToggle).toHaveBeenCalled();
  });

  it('does not render preview toggle if not canPreview', () => {
    const activeFile = {
      extension: 'abcd',
      url: 'url',
    };
    RepoStore.openedFiles = new Array(1);
    RepoStore.activeFile = activeFile;

    const vm = createComponent();

    expect(vm.$el.querySelector('.preview')).toBeFalsy();
  });

  it('does not render if not isMini', () => {
    RepoStore.openedFiles = [];

    const vm = createComponent();

    expect(vm.$el.innerHTML).toBeFalsy();
  });
});