Skip to content

Commit f50ca6e

Browse files
authored
Merge pull request #73 from styled-components/organise-tests
Organise tests
2 parents 88ddb6f + cf390d2 commit f50ca6e

18 files changed

+923
-652
lines changed

src/__tests__/border.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import transformCss from '..'
2+
3+
it('transforms border shorthand', () => {
4+
expect(transformCss([['border', '2px dashed #f00']])).toEqual({
5+
borderWidth: 2,
6+
borderColor: '#f00',
7+
borderStyle: 'dashed',
8+
})
9+
})
10+
11+
it('transforms border shorthand in other order', () => {
12+
expect(transformCss([['border', '#f00 2px dashed']])).toEqual({
13+
borderWidth: 2,
14+
borderColor: '#f00',
15+
borderStyle: 'dashed',
16+
})
17+
})
18+
19+
it('transforms border shorthand missing color', () => {
20+
expect(transformCss([['border', '2px dashed']])).toEqual({
21+
borderWidth: 2,
22+
borderColor: 'black',
23+
borderStyle: 'dashed',
24+
})
25+
})
26+
27+
it('transforms border shorthand missing style', () => {
28+
expect(transformCss([['border', '2px #f00']])).toEqual({
29+
borderWidth: 2,
30+
borderColor: '#f00',
31+
borderStyle: 'solid',
32+
})
33+
})
34+
35+
it('transforms border shorthand missing width', () => {
36+
expect(transformCss([['border', '#f00 dashed']])).toEqual({
37+
borderWidth: 1,
38+
borderColor: '#f00',
39+
borderStyle: 'dashed',
40+
})
41+
})
42+
43+
it('transforms border shorthand missing color & width', () => {
44+
expect(transformCss([['border', 'dashed']])).toEqual({
45+
borderWidth: 1,
46+
borderColor: 'black',
47+
borderStyle: 'dashed',
48+
})
49+
})
50+
51+
it('transforms border shorthand missing style & width', () => {
52+
expect(transformCss([['border', '#f00']])).toEqual({
53+
borderWidth: 1,
54+
borderColor: '#f00',
55+
borderStyle: 'solid',
56+
})
57+
})
58+
59+
it('transforms border shorthand missing color & style', () => {
60+
expect(transformCss([['border', '2px']])).toEqual({
61+
borderWidth: 2,
62+
borderColor: 'black',
63+
borderStyle: 'solid',
64+
})
65+
})

src/__tests__/borderColor.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import transformCss from '..'
2+
3+
it('transforms border color with multiple values', () => {
4+
expect(transformCss([['border-color', 'red yellow green blue']])).toEqual({
5+
borderTopColor: 'red',
6+
borderRightColor: 'yellow',
7+
borderBottomColor: 'green',
8+
borderLeftColor: 'blue',
9+
})
10+
})

src/__tests__/boxModel.js

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import transformCss from '..'
2+
3+
it('transforms margin, padding with 1 value', () => {
4+
expect(transformCss([['margin', '1px']])).toEqual({
5+
marginTop: 1,
6+
marginRight: 1,
7+
marginBottom: 1,
8+
marginLeft: 1,
9+
})
10+
expect(transformCss([['padding', '1px']])).toEqual({
11+
paddingTop: 1,
12+
paddingRight: 1,
13+
paddingBottom: 1,
14+
paddingLeft: 1,
15+
})
16+
})
17+
18+
it('transforms margin, padding with 2 values', () => {
19+
expect(transformCss([['margin', '1px 2px']])).toEqual({
20+
marginTop: 1,
21+
marginRight: 2,
22+
marginBottom: 1,
23+
marginLeft: 2,
24+
})
25+
expect(transformCss([['padding', '1px 2px']])).toEqual({
26+
paddingTop: 1,
27+
paddingRight: 2,
28+
paddingBottom: 1,
29+
paddingLeft: 2,
30+
})
31+
})
32+
33+
it('transforms margin, padding with 3 values', () => {
34+
expect(transformCss([['margin', '1px 2px 3px']])).toEqual({
35+
marginTop: 1,
36+
marginRight: 2,
37+
marginBottom: 3,
38+
marginLeft: 2,
39+
})
40+
expect(transformCss([['padding', '1px 2px 3px']])).toEqual({
41+
paddingTop: 1,
42+
paddingRight: 2,
43+
paddingBottom: 3,
44+
paddingLeft: 2,
45+
})
46+
})
47+
48+
it('transforms margin, padding with 4 values', () => {
49+
expect(transformCss([['margin', '1px 2px 3px 4px']])).toEqual({
50+
marginTop: 1,
51+
marginRight: 2,
52+
marginBottom: 3,
53+
marginLeft: 4,
54+
})
55+
expect(transformCss([['padding', '1px 2px 3px 4px']])).toEqual({
56+
paddingTop: 1,
57+
paddingRight: 2,
58+
paddingBottom: 3,
59+
paddingLeft: 4,
60+
})
61+
})
62+
63+
it('transforms margin, allowing unitless zero, percentages', () => {
64+
expect(transformCss([['margin', '0 0% 10% 100%']])).toEqual({
65+
marginTop: 0,
66+
marginRight: '0%',
67+
marginBottom: '10%',
68+
marginLeft: '100%',
69+
})
70+
expect(transformCss([['padding', '0 0% 10% 100%']])).toEqual({
71+
paddingTop: 0,
72+
paddingRight: '0%',
73+
paddingBottom: '10%',
74+
paddingLeft: '100%',
75+
})
76+
})
77+
78+
it('transforms shorthand and overrides previous values', () => {
79+
expect(transformCss([['margin-top', '2px'], ['margin', '1px']])).toEqual({
80+
marginTop: 1,
81+
marginRight: 1,
82+
marginBottom: 1,
83+
marginLeft: 1,
84+
})
85+
})
86+
87+
it('transforms border width', () => {
88+
expect(transformCss([['border-width', '1px 2px 3px 4px']])).toEqual({
89+
borderTopWidth: 1,
90+
borderRightWidth: 2,
91+
borderBottomWidth: 3,
92+
borderLeftWidth: 4,
93+
})
94+
})
95+
96+
it('transforms border radius', () => {
97+
expect(transformCss([['border-radius', '1px 2px 3px 4px']])).toEqual({
98+
borderTopLeftRadius: 1,
99+
borderTopRightRadius: 2,
100+
borderBottomRightRadius: 3,
101+
borderBottomLeftRadius: 4,
102+
})
103+
})

src/__tests__/boxShadow.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import transformCss from '..'
2+
3+
it('transforms box-shadow into shadow- properties', () => {
4+
expect(transformCss([['box-shadow', '10px 20px 30px red']])).toEqual({
5+
shadowOffset: { width: 10, height: 20 },
6+
shadowRadius: 30,
7+
shadowColor: 'red',
8+
shadowOpacity: 1,
9+
})
10+
})
11+
12+
it('transforms box-shadow without blur-radius', () => {
13+
expect(transformCss([['box-shadow', '10px 20px red']])).toEqual({
14+
shadowOffset: { width: 10, height: 20 },
15+
shadowRadius: 0,
16+
shadowColor: 'red',
17+
shadowOpacity: 1,
18+
})
19+
})
20+
21+
it('transforms box-shadow without color', () => {
22+
expect(transformCss([['box-shadow', '10px 20px']])).toEqual({
23+
shadowOffset: { width: 10, height: 20 },
24+
shadowRadius: 0,
25+
shadowColor: 'black',
26+
shadowOpacity: 1,
27+
})
28+
})
29+
30+
it('transforms box-shadow with rgb color', () => {
31+
expect(
32+
transformCss([['box-shadow', '10px 20px rgb(100, 100, 100)']])
33+
).toEqual({
34+
shadowOffset: { width: 10, height: 20 },
35+
shadowRadius: 0,
36+
shadowColor: 'rgb(100, 100, 100)',
37+
shadowOpacity: 1,
38+
})
39+
})
40+
41+
it('transforms box-shadow with rgba color', () => {
42+
expect(
43+
transformCss([['box-shadow', '10px 20px rgba(100, 100, 100, 0.5)']])
44+
).toEqual({
45+
shadowOffset: { width: 10, height: 20 },
46+
shadowRadius: 0,
47+
shadowColor: 'rgba(100, 100, 100, 0.5)',
48+
shadowOpacity: 1,
49+
})
50+
})
51+
52+
it('transforms box-shadow with hsl color', () => {
53+
expect(
54+
transformCss([['box-shadow', '10px 20px hsl(120, 100%, 50%)']])
55+
).toEqual({
56+
shadowOffset: { width: 10, height: 20 },
57+
shadowRadius: 0,
58+
shadowColor: 'hsl(120, 100%, 50%)',
59+
shadowOpacity: 1,
60+
})
61+
})
62+
63+
it('transforms box-shadow with hsla color', () => {
64+
expect(
65+
transformCss([['box-shadow', '10px 20px hsla(120, 100%, 50%, 0.7)']])
66+
).toEqual({
67+
shadowOffset: { width: 10, height: 20 },
68+
shadowRadius: 0,
69+
shadowColor: 'hsla(120, 100%, 50%, 0.7)',
70+
shadowOpacity: 1,
71+
})
72+
})
73+
74+
it('transforms box-shadow and throws if multiple colors are used', () => {
75+
expect(() =>
76+
transformCss([['box-shadow', '0 0 0 red yellow green blue']])
77+
).toThrow()
78+
})
79+
80+
it('transforms box-shadow enforces offset to be present', () => {
81+
expect(() => transformCss([['box-shadow', 'red']])).toThrow()
82+
expect(() => transformCss([['box-shadow', '10px red']])).toThrow()
83+
})

src/__tests__/flex.js

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import transformCss from '..'
2+
3+
it('transforms flex shorthand with 3 values', () => {
4+
expect(transformCss([['flex', '1 2 3px']])).toEqual({
5+
flexGrow: 1,
6+
flexShrink: 2,
7+
flexBasis: 3,
8+
})
9+
})
10+
11+
it('transforms flex shorthand with 3 values in reverse order', () => {
12+
expect(transformCss([['flex', '3px 1 2']])).toEqual({
13+
flexGrow: 1,
14+
flexShrink: 2,
15+
flexBasis: 3,
16+
})
17+
})
18+
19+
it('transforms flex shorthand with 2 values of flex-grow and flex-shrink', () => {
20+
expect(transformCss([['flex', '1 2']])).toEqual({
21+
flexGrow: 1,
22+
flexShrink: 2,
23+
flexBasis: 0,
24+
})
25+
})
26+
27+
it('transforms flex shorthand with 2 values of flex-grow and flex-basis', () => {
28+
expect(transformCss([['flex', '2 2px']])).toEqual({
29+
flexGrow: 2,
30+
flexShrink: 1,
31+
flexBasis: 2,
32+
})
33+
})
34+
35+
it('transforms flex shorthand with 2 values of flex-grow and flex-basis (reversed)', () => {
36+
expect(transformCss([['flex', '2px 2']])).toEqual({
37+
flexGrow: 2,
38+
flexShrink: 1,
39+
flexBasis: 2,
40+
})
41+
})
42+
43+
it('transforms flex shorthand with 1 value of flex-grow', () => {
44+
expect(transformCss([['flex', '2']])).toEqual({
45+
flexGrow: 2,
46+
flexShrink: 1,
47+
flexBasis: 0,
48+
})
49+
})
50+
51+
it('transforms flex shorthand with 1 value of flex-basis', () => {
52+
expect(transformCss([['flex', '10px']])).toEqual({
53+
flexGrow: 1,
54+
flexShrink: 1,
55+
flexBasis: 10,
56+
})
57+
})
58+
59+
/*
60+
A unitless zero that is not already preceded by two flex factors must be interpreted as a flex
61+
factor. To avoid misinterpretation or invalid declarations, authors must specify a zero
62+
<‘flex-basis’> component with a unit or precede it by two flex factors.
63+
*/
64+
it('transforms flex shorthand with flex-grow/shrink taking priority over basis', () => {
65+
expect(transformCss([['flex', '0 1 0']])).toEqual({
66+
flexGrow: 0,
67+
flexShrink: 1,
68+
flexBasis: 0,
69+
})
70+
})
71+
72+
it('transforms flex shorthand with flex-basis set to auto', () => {
73+
expect(transformCss([['flex', '0 1 auto']])).toEqual({
74+
flexGrow: 0,
75+
flexShrink: 1,
76+
})
77+
})
78+
79+
it('transforms flex shorthand with flex-basis set to auto appearing first', () => {
80+
expect(transformCss([['flex', 'auto 0 1']])).toEqual({
81+
flexGrow: 0,
82+
flexShrink: 1,
83+
})
84+
})
85+
86+
it('transforms flex auto keyword', () => {
87+
expect(transformCss([['flex', 'auto']])).toEqual({
88+
flexGrow: 1,
89+
flexShrink: 1,
90+
})
91+
})
92+
93+
it('transforms flex none keyword', () => {
94+
expect(transformCss([['flex', 'none']])).toEqual({
95+
flexGrow: 0,
96+
flexShrink: 0,
97+
})
98+
})
99+
100+
it('does not transform invalid flex', () => {
101+
expect(() => transformCss([['flex', '1 2px 3']])).toThrow()
102+
})

src/__tests__/flexFlow.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import transformCss from '..'
2+
3+
it('transforms flexFlow shorthand with two values', () => {
4+
expect(transformCss([['flex-flow', 'column wrap']])).toEqual({
5+
flexDirection: 'column',
6+
flexWrap: 'wrap',
7+
})
8+
})
9+
10+
it('transforms flexFlow shorthand missing flexDirection', () => {
11+
expect(transformCss([['flex-flow', 'wrap']])).toEqual({
12+
flexDirection: 'row',
13+
flexWrap: 'wrap',
14+
})
15+
})
16+
17+
it('transforms flexFlow shorthand missing flexWrap', () => {
18+
expect(transformCss([['flex-flow', 'column']])).toEqual({
19+
flexDirection: 'column',
20+
flexWrap: 'nowrap',
21+
})
22+
})

0 commit comments

Comments
 (0)