You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
2.6 KiB
119 lines
2.6 KiB
import { system, compose } from '../src'
|
|
|
|
const theme = {
|
|
colors: {
|
|
primary: 'rebeccapurple',
|
|
secondary: 'papayawhip',
|
|
},
|
|
fontSize: [0, 4, 8, 16],
|
|
}
|
|
|
|
const parser = system({
|
|
color: {
|
|
property: 'color',
|
|
scale: 'colors',
|
|
},
|
|
fontSize: true,
|
|
})
|
|
|
|
test('uses default breakpoints', () => {
|
|
const styles = parser({
|
|
theme: theme,
|
|
fontSize: [1, 2, 3],
|
|
color: ['primary', null, 'secondary'],
|
|
})
|
|
expect(styles).toEqual({
|
|
color: 'rebeccapurple',
|
|
fontSize: 4,
|
|
'@media screen and (min-width: 40em)': {
|
|
fontSize: 8,
|
|
},
|
|
'@media screen and (min-width: 52em)': {
|
|
fontSize: 16,
|
|
color: 'papayawhip',
|
|
},
|
|
})
|
|
})
|
|
|
|
// Per default, we expect it to be impossible to override breakpoints
|
|
test('does *not* use dynamically changed breakpoints', () => {
|
|
const styles = parser({
|
|
theme: { ...theme, breakpoints: ['11em', '22em', '33em'] },
|
|
fontSize: [1, 2, 3],
|
|
color: ['primary', null, 'secondary'],
|
|
})
|
|
expect(styles).toEqual({
|
|
color: 'rebeccapurple',
|
|
fontSize: 4,
|
|
'@media screen and (min-width: 40em)': {
|
|
fontSize: 8,
|
|
},
|
|
'@media screen and (min-width: 52em)': {
|
|
fontSize: 16,
|
|
color: 'papayawhip',
|
|
},
|
|
})
|
|
})
|
|
|
|
// With caching disabled, we expect it to be possible to change breakpoints
|
|
test('uses dynamically changed breakpoints', () => {
|
|
const firstStyles = parser({
|
|
theme: {
|
|
...theme,
|
|
breakpoints: ['11em', '22em', '33em'],
|
|
disableStyledSystemCache: true,
|
|
},
|
|
fontSize: [1, 2, 3],
|
|
color: ['primary', null, 'secondary'],
|
|
})
|
|
expect(firstStyles).toEqual({
|
|
color: 'rebeccapurple',
|
|
fontSize: 4,
|
|
'@media screen and (min-width: 11em)': {
|
|
fontSize: 8,
|
|
},
|
|
'@media screen and (min-width: 22em)': {
|
|
fontSize: 16,
|
|
color: 'papayawhip',
|
|
},
|
|
})
|
|
|
|
const secondStyles = parser({
|
|
theme: {
|
|
...theme,
|
|
breakpoints: ['9em', '8em', '7em'],
|
|
disableStyledSystemCache: true,
|
|
},
|
|
fontSize: [1, 2, 3],
|
|
color: ['primary', null, 'secondary'],
|
|
})
|
|
expect(secondStyles).toEqual({
|
|
color: 'rebeccapurple',
|
|
fontSize: 4,
|
|
'@media screen and (min-width: 9em)': {
|
|
fontSize: 8,
|
|
},
|
|
'@media screen and (min-width: 8em)': {
|
|
fontSize: 16,
|
|
color: 'papayawhip',
|
|
},
|
|
})
|
|
|
|
const thirdStyles = parser({
|
|
theme: theme,
|
|
fontSize: [1, 2, 3],
|
|
color: ['primary', null, 'secondary'],
|
|
})
|
|
expect(thirdStyles).toEqual({
|
|
color: 'rebeccapurple',
|
|
fontSize: 4,
|
|
'@media screen and (min-width: 9em)': {
|
|
fontSize: 8,
|
|
},
|
|
'@media screen and (min-width: 8em)': {
|
|
fontSize: 16,
|
|
color: 'papayawhip',
|
|
},
|
|
})
|
|
})
|