forked from karmats/gocd-monitor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainUtilSpec.js
90 lines (71 loc) · 3.14 KB
/
MainUtilSpec.js
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
import { describe, it } from 'mocha';
import { sortAndFilterPipelines } from '../client/components/MainUtil';
import { expect } from 'chai';
describe('Main util spec', () => {
describe('#sortAndFilterPipelines()', () => {
const generatePipelines = () => {
return [{
name: 'pipeline1',
stageresults: [{ status: 'passed' }, { status: 'cancelled' }],
paused: true,
buildtime: 1234
}, {
name: 'pipeline2',
stageresults: [{ status: 'passed' }, { status: 'passed' }, { status: 'failed' }],
buildtime: 2345
},
{
name: 'pipeline3',
stageresults: [{ status: 'passed' }, { status: 'building' }, { status: 'unknown' }],
buildtime: 1111
},
{
name: 'pipeline4',
stageresults: [{ status: 'passed' }, { status: 'passed' }],
buildtime: 2222
}]
};
describe('filtering', () => {
it('should filter undefined pipelines', () => {
const pipelines = generatePipelines();
expect(pipelines).to.have.lengthOf(4);
pipelines[0] = null;
expect(sortAndFilterPipelines(pipelines, [], 'buildtime','')).to.have.lengthOf(3);
});
it('should filter pipelines that are disabled', () => {
const pipelines = generatePipelines();
const filteredPipelineNames = sortAndFilterPipelines(pipelines, ['pipeline4','pipeline1'], 'buildtime','').map(p => p.name);
expect(filteredPipelineNames).to.eql(['pipeline2', 'pipeline3']);
});
it('should filter pipelines that dont match the filter-regex', () => {
const pipelines = generatePipelines();
const filteredPipelineNames = sortAndFilterPipelines(pipelines, [], 'buildtime','pipeline[2-3]').map(p => p.name);
expect(filteredPipelineNames).to.eql(['pipeline2', 'pipeline3']);
});
it('should filter pipelines that are disabled even if the regex filter matches', () => {
const pipelines = generatePipelines();
const filteredPipelineNames = sortAndFilterPipelines(pipelines, ['pipeline2'], 'buildtime','pipeline[2-3]').map(p => p.name);
expect(filteredPipelineNames).to.eql(['pipeline3']);
});
});
describe('sorting', () => {
it('should sort pipelines by buildtime', () => {
const pipelines = generatePipelines();
const sortedPipelineNames = sortAndFilterPipelines(pipelines, [], 'buildtime','').map(p => p.name);
expect(sortedPipelineNames).to.eql(['pipeline2', 'pipeline4', 'pipeline1', 'pipeline3']);
});
it('should sort pipelines by status', () => {
const pipelines = generatePipelines();
const sortedPipelineNames = sortAndFilterPipelines(pipelines, [], 'status','').map(p => p.name);
expect(sortedPipelineNames).to.eql(['pipeline3', 'pipeline2', 'pipeline1', 'pipeline4']);
});
});
it('should add time ago string', () => {
const pipelines = generatePipelines();
const sortedPipelines = sortAndFilterPipelines(pipelines, [], 'status','');
sortedPipelines.forEach((p) => {
expect(p).to.have.property('timeago');
});
});
});
});