48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
|
import postcss from 'postcss'
|
||
|
import plugin from '../src/lib/substituteScreenAtRules'
|
||
|
import config from '../stubs/defaultConfig.stub.js'
|
||
|
|
||
|
function run(input, opts = config) {
|
||
|
return postcss([plugin(opts)]).process(input, { from: undefined })
|
||
|
}
|
||
|
|
||
|
test('it can generate media queries from configured screen sizes', () => {
|
||
|
const input = `
|
||
|
@screen sm {
|
||
|
.banana { color: yellow; }
|
||
|
}
|
||
|
@screen md {
|
||
|
.banana { color: red; }
|
||
|
}
|
||
|
@screen lg {
|
||
|
.banana { color: green; }
|
||
|
}
|
||
|
`
|
||
|
|
||
|
const output = `
|
||
|
@media (min-width: 500px) {
|
||
|
.banana { color: yellow; }
|
||
|
}
|
||
|
@media (min-width: 750px) {
|
||
|
.banana { color: red; }
|
||
|
}
|
||
|
@media (min-width: 1000px) {
|
||
|
.banana { color: green; }
|
||
|
}
|
||
|
`
|
||
|
|
||
|
return run(input, {
|
||
|
theme: {
|
||
|
screens: {
|
||
|
sm: '500px',
|
||
|
md: '750px',
|
||
|
lg: '1000px',
|
||
|
},
|
||
|
},
|
||
|
separator: ':',
|
||
|
}).then((result) => {
|
||
|
expect(result.css).toMatchCss(output)
|
||
|
expect(result.warnings().length).toBe(0)
|
||
|
})
|
||
|
})
|