-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcolorPaletteSpec.js
102 lines (80 loc) · 3.36 KB
/
colorPaletteSpec.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
91
92
93
94
95
96
97
98
99
100
101
102
describe('a11yColorPalette', function() {
var colors, palette, colorA11yContrastSpy;
beforeEach(function() {
colors = {
bgColors: ['#FF0','#EFEFEF'],
fgColors: ['#FFF','#000000']
};
});
it('converts 3 char hex to 6', function() {
palette = a11yColorPalette.defineA11yPalette(colors);
var color1 = palette.colors[0];
var color2 = palette.colors[1];
expect(color1.color).toBe('#FFFF00');
expect(color1.fgColors[0].color).toBe('#FFFFFF');
expect(color1.fgColors[1].color).toBe('#000000');
expect(color2.color).toBe('#EFEFEF');
});
it('excludes strings that are not allowed formats', function() {
colors.bgColors.push('#1234', 'yellow');
colors.fgColors.push('#1234', 'yellow');
palette = a11yColorPalette.defineA11yPalette(colors);
expect(palette.colors.length).toBe(2);
var color1 = palette.colors[0];
var color2 = palette.colors[1];
expect(color1.fgColors.length).toBe(2);
expect(color2.fgColors.length).toBe(2);
});
it('remove white space from valid colors', function() {
colors.bgColors.push(' #333 ');
colors.fgColors.push(' #444 ');
palette = a11yColorPalette.defineA11yPalette(colors);
expect(palette.colors.length).toBe(3);
var color3 = palette.colors[2];
expect(color3.color).toBe('#333333');
expect(color3.fgColors.length).toBe(3);
expect(color3.fgColors[2].color).toBe('#444444');
});
it('contains empty badges when color is not compliance', function() {
colorA11yContrastSpy = spyOn(colora11y, 'calcContrastCompliance').and.returnValue(emptyCompliance());
palette = a11yColorPalette.defineA11yPalette(colors);
var color1 = palette.colors[0];
expect(color1.fgColors[0].compliance.badges.length).toBe(0);
expect(color1.fgColors[1].compliance.badges.length).toBe(0);
});
it('creates badges for compliant contrast', function() {
colorA11yContrastSpy = spyOn(colora11y, 'calcContrastCompliance').and.callFake(function(fgColor, bgColor) {
var wcagCompliance = emptyCompliance();
if (bgColor === '#FFFF00') {
wcagCompliance.aa.large.pass = true;
wcagCompliance.aaa.normal.pass = true;
wcagCompliance.aaa.large.pass = true;
return wcagCompliance;
} else {
wcagCompliance.aaa.normal.pass = true;
wcagCompliance.aaa.large.pass = true;
}
return wcagCompliance;
});
palette = a11yColorPalette.defineA11yPalette(colors);
var color1 = palette.colors[0];
expect(color1.fgColors[0].compliance.badges.length).toBe(2);
expect(color1.fgColors[0].compliance.badges[0]).toBe('AA large');
expect(color1.fgColors[0].compliance.badges[1]).toBe('AAA normal / large');
var color2 = palette.colors[1];
expect(color2.fgColors[0].compliance.badges.length).toBe(1);
expect(color2.fgColors[0].compliance.badges[0]).toBe('AAA normal / large');
});
function emptyCompliance() {
return {
aa: {
normal: {},
large: {}
},
aaa: {
normal: {},
large: {}
}
};
}
});