Welcome to mirror list, hosted at ThFree Co, Russian Federation.

sidebar_store_spec.js « sidebar « javascripts « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 69eb3839d675e1cd0c5536b9413da22c0e737de4 (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
97
98
99
import SidebarStore from '~/sidebar/stores/sidebar_store';
import Mock from './mock_data';
import UsersMockHelper from '../helpers/user_mock_data_helper';

describe('Sidebar store', () => {
  const assignee = {
    id: 2,
    name: 'gitlab user 2',
    username: 'gitlab2',
    avatar_url: 'http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
  };

  const anotherAssignee = {
    id: 3,
    name: 'gitlab user 3',
    username: 'gitlab3',
    avatar_url: 'http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
  };

  beforeEach(() => {
    this.store = new SidebarStore({
      currentUser: {
        id: 1,
        name: 'Administrator',
        username: 'root',
        avatar_url: 'http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
      },
      editable: true,
      rootPath: '/',
      endpoint: '/gitlab-org/gitlab-shell/issues/5.json',
    });
  });

  afterEach(() => {
    SidebarStore.singleton = null;
  });

  it('has default isFetching values', () => {
    expect(this.store.isFetching.assignees).toBe(true);
  });

  it('adds a new assignee', () => {
    this.store.addAssignee(assignee);
    expect(this.store.assignees.length).toEqual(1);
  });

  it('removes an assignee', () => {
    this.store.removeAssignee(assignee);
    expect(this.store.assignees.length).toEqual(0);
  });

  it('finds an existent assignee', () => {
    let foundAssignee;

    this.store.addAssignee(assignee);
    foundAssignee = this.store.findAssignee(assignee);
    expect(foundAssignee).toBeDefined();
    expect(foundAssignee).toEqual(assignee);
    foundAssignee = this.store.findAssignee(anotherAssignee);
    expect(foundAssignee).toBeUndefined();
  });

  it('removes all assignees', () => {
    this.store.removeAllAssignees();
    expect(this.store.assignees.length).toEqual(0);
  });

  it('set assigned data', () => {
    const users = {
      assignees: UsersMockHelper.createNumberRandomUsers(3),
    };

    this.store.setAssigneeData(users);
    expect(this.store.isFetching.assignees).toBe(false);
    expect(this.store.assignees.length).toEqual(3);
  });

  it('set time tracking data', () => {
    this.store.setTimeTrackingData(Mock.time);
    expect(this.store.timeEstimate).toEqual(Mock.time.time_estimate);
    expect(this.store.totalTimeSpent).toEqual(Mock.time.total_time_spent);
    expect(this.store.humanTimeEstimate).toEqual(Mock.time.human_time_estimate);
    expect(this.store.humanTotalTimeSpent).toEqual(Mock.time.human_total_time_spent);
  });

  it('set autocomplete projects', () => {
    const projects = [{ id: 0 }];
    this.store.setAutocompleteProjects(projects);

    expect(this.store.autocompleteProjects).toEqual(projects);
  });

  it('set move to project ID', () => {
    const projectId = 7;
    this.store.setMoveToProjectId(projectId);

    expect(this.store.moveToProjectId).toEqual(projectId);
  });
});