Compare commits

..

No commits in common. "master" and "add-license-1" have entirely different histories.

4 changed files with 35 additions and 51 deletions

View file

@ -1,6 +1,6 @@
# Testing Tailwind CSS Plugins with Jest # Testing Tailwind CSS Plugins with Jest
An example of how to use [Jest][jest], a JavaScript testing framework, for testing [Tailwind CSS][tailwind] plugins. WIP
## License ## License
@ -8,8 +8,4 @@ MIT
## Author ## Author
[Oliver Davies][website] - Full Stack Developer [Oliver Davies](https://www.oliverdavies.uk) - Full Stack Developer
[jest]: https://jestjs.io
[tailwind]: https://tailwindcss.com
[website]: https://www.oliverdavies.uk

View file

@ -1,7 +1,9 @@
module.exports = (variants) => ({ addUtilities }) => { module.exports = (variants) => {
return function ({ addUtilities }) {
addUtilities({ addUtilities({
'.test': { '.test': {
display: 'block' display: 'block'
} }
}, variants) }, variants)
} }
}

View file

@ -6,10 +6,7 @@
"scripts": { "scripts": {
"test": "jest" "test": "jest"
}, },
"keywords": [ "keywords": ["tailwindcss", "jest"],
"tailwindcss",
"jest"
],
"author": { "author": {
"name": "Oliver Davies", "name": "Oliver Davies",
"url" : "https://www.oliverdavies.uk" "url" : "https://www.oliverdavies.uk"
@ -20,7 +17,8 @@
"jest-matcher-css": "^1.0.3" "jest-matcher-css": "^1.0.3"
}, },
"dependencies": { "dependencies": {
"lodash": "^4.17.11",
"postcss": "^7.0.14", "postcss": "^7.0.14",
"tailwindcss": "^1.0.1" "tailwindcss": "^1.0.0-beta.4"
} }
} }

50
test.js
View file

@ -1,53 +1,41 @@
const _ = require('lodash')
const cssMatcher = require('jest-matcher-css') const cssMatcher = require('jest-matcher-css')
const defaultConfig = require('tailwindcss/defaultConfig') const defaultConfig = require('tailwindcss/defaultConfig')
const plugin = require('./index') const plugin = require('./index.js')
const postcss = require('postcss') const postcss = require('postcss')
const tailwindcss = require('tailwindcss') const tailwindcss = require('tailwindcss')
function run(options = {}) { const disableCorePlugins = () => {
return _.mapValues(defaultConfig.variants, plugin => {
return false
})
}
const generatePluginCss = () => {
return postcss( return postcss(
tailwindcss({ tailwindcss({
corePlugins: false, corePlugins: disableCorePlugins(),
plugins: [plugin(options)] plugins: [plugin()]
}) })
) )
.process('@tailwind utilities;', { .process('@tailwind utilities;', {
from: undefined from: undefined
}) })
.then(result => {
return result.css
})
} }
expect.extend({ expect.extend({
toMatchCss: cssMatcher toMatchCss: cssMatcher
}) })
test('it generates the correct classes with no variants', () => { test('it generates classes', () => {
const output = ` return generatePluginCss().then(css => {
expect(css).toMatchCss(`
.test { .test {
display: block display: block;
} }
` `)
run().then(result => {
expect(result.css).toMatchCss(output)
})
})
test('it generates the correct classes with variants', () => {
const output = `
.test {
display: block
}
.hover\\:test:hover {
display: block
}
.focus\\:test:focus {
display: block
}
`
run({ variants: ['hover', 'focus'] }).then(result => {
expect(result.css).toMatchCss(output)
}) })
}) })