screenAtRule.test.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import postcss from 'postcss'
  2. import plugin from '../src/lib/substituteScreenAtRules'
  3. import config from '../stubs/defaultConfig.stub.js'
  4. function run(input, opts = config) {
  5. return postcss([plugin({ tailwindConfig: opts })]).process(input, { from: undefined })
  6. }
  7. test('it can generate media queries from configured screen sizes', () => {
  8. const input = `
  9. @screen sm {
  10. .banana { color: yellow; }
  11. }
  12. @screen md {
  13. .banana { color: red; }
  14. }
  15. @screen lg {
  16. .banana { color: green; }
  17. }
  18. `
  19. const output = `
  20. @media (min-width: 500px) {
  21. .banana { color: yellow; }
  22. }
  23. @media (min-width: 750px) {
  24. .banana { color: red; }
  25. }
  26. @media (min-width: 1000px) {
  27. .banana { color: green; }
  28. }
  29. `
  30. return run(input, {
  31. theme: {
  32. screens: {
  33. sm: '500px',
  34. md: '750px',
  35. lg: '1000px',
  36. },
  37. },
  38. separator: ':',
  39. }).then((result) => {
  40. expect(result.css).toMatchCss(output)
  41. expect(result.warnings().length).toBe(0)
  42. })
  43. })