-
Notifications
You must be signed in to change notification settings - Fork 404
/
to-have-style.js
99 lines (87 loc) · 2.72 KB
/
to-have-style.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
import {render} from './helpers/test-utils'
import document from './helpers/document'
describe('.toHaveStyle', () => {
test('handles positive test cases', () => {
const {container} = render(`
<div class="label" style="background-color: blue; height: 100%">
Hello World
</div>
`)
const style = document.createElement('style')
style.innerHTML = `
.label {
background-color: black;
color: white;
float: left;
}
`
document.body.appendChild(style)
document.body.appendChild(container)
expect(container.querySelector('.label')).toHaveStyle(`
height: 100%;
color: white;
background-color: blue;
`)
expect(container.querySelector('.label')).toHaveStyle(`
background-color: blue;
color: white;
`)
expect(container.querySelector('.label')).toHaveStyle(
'background-color:blue;color:white',
)
expect(container.querySelector('.label')).not.toHaveStyle(`
color: white;
font-weight: bold;
`)
})
test('handles negative test cases', () => {
const {container} = render(`
<div class="label" style="background-color: blue; height: 100%">
Hello World
</div>
`)
const style = document.createElement('style')
style.innerHTML = `
.label {
background-color: black;
color: white;
float: left;
}
`
document.body.appendChild(style)
document.body.appendChild(container)
expect(() =>
expect(container.querySelector('.label')).toHaveStyle(
'font-weight: bold',
),
).toThrowError()
expect(() =>
expect(container.querySelector('.label')).not.toHaveStyle('color: white'),
).toThrowError()
// Make sure the test fails if the css syntax is not valid
expect(() =>
expect(container.querySelector('.label')).not.toHaveStyle(
'font-weight bold',
),
).toThrowError()
expect(() =>
expect(container.querySelector('.label')).toHaveStyle('color white'),
).toThrowError()
document.body.removeChild(style)
document.body.removeChild(container)
})
test('properly normalizes colors', () => {
const {queryByTestId} = render(`
<span data-testid="color-example" style="background-color: #123456">Hello World</span>
`)
expect(queryByTestId('color-example')).toHaveStyle(
'background-color: #123456',
)
})
test('properly normalizes colors for border', () => {
const {queryByTestId} = render(`
<span data-testid="color-example" style="border: 1px solid #fff">Hello World</span>
`)
expect(queryByTestId('color-example')).toHaveStyle('border: 1px solid #fff')
})
})