Skip to content

Commit

Permalink
Add test
Browse files Browse the repository at this point in the history
  • Loading branch information
thecrypticace committed Aug 29, 2022
1 parent b0a5499 commit dacc723
Showing 1 changed file with 73 additions and 1 deletion.
74 changes: 73 additions & 1 deletion tests/important-boolean.test.js
@@ -1,7 +1,8 @@
import fs from 'fs'
import path from 'path'
import * as sharedState from '../src/lib/sharedState'

import { run, css } from './util/run'
import { run, css, html } from './util/run'

test('important boolean', () => {
let config = {
Expand Down Expand Up @@ -63,3 +64,74 @@ test('important boolean', () => {
expect(result.css).toMatchFormattedCss(expected)
})
})

// This is in a describe block so we can use `afterEach` :)
describe('duplicate elision', () => {
let filePath = path.resolve(__dirname, './important-boolean-duplicates.test.html')

afterEach(async () => await fs.promises.unlink(filePath))

test('important rules are not duplicated when rebuilding', async () => {
let config = {
important: true,
content: [filePath],
}

await fs.promises.writeFile(
config.content[0],
html`
<div class="ml-2"></div>
<div class="ml-4"></div>
`
)

let input = css`
@tailwind utilities;
`

let result = await run(input, config)
let allContexts = Array.from(sharedState.contextMap.values())

let context = allContexts[allContexts.length - 1]

let ruleCacheSize1 = context.ruleCache.size

expect(result.css).toMatchFormattedCss(css`
.ml-2 {
margin-left: 0.5rem !important;
}
.ml-4 {
margin-left: 1rem !important;
}
`)

await fs.promises.writeFile(
config.content[0],
html`
<div class="ml-2"></div>
<div class="ml-6"></div>
`
)

result = await run(input, config)

let ruleCacheSize2 = context.ruleCache.size

expect(result.css).toMatchFormattedCss(css`
.ml-2 {
margin-left: 0.5rem !important;
}
.ml-4 {
margin-left: 1rem !important;
}
.ml-6 {
margin-left: 1.5rem !important;
}
`)

// The rule cache was effectively doubling in size previously
// because the rule cache was never de-duped
// This ensures this behavior doesn't return
expect(ruleCacheSize2 - ruleCacheSize1).toBeLessThan(10)
})
})

0 comments on commit dacc723

Please sign in to comment.