mirror of
https://github.com/hanzoai/autoprefixer.git
synced 2026-09-24 16:55:58 +00:00
101 lines
2.2 KiB
JavaScript
101 lines
2.2 KiB
JavaScript
let { parse } = require('postcss')
|
|
let { test } = require('uvu')
|
|
let { equal, is, type } = require('uvu/assert')
|
|
|
|
let Prefixer = require('../lib/prefixer')
|
|
|
|
let css, prefix
|
|
test.before.each(() => {
|
|
prefix = new Prefixer()
|
|
css = parse(
|
|
'@-ms-keyframes a { to { } } ' +
|
|
':-moz-full-screen { } a { } ' +
|
|
'@-dev-keyframes s { to { } }'
|
|
)
|
|
})
|
|
|
|
test('registers hacks for subclasses', () => {
|
|
class A extends Prefixer {}
|
|
class Hack extends A {}
|
|
Hack.names = ['a', 'b']
|
|
|
|
A.hack(Hack)
|
|
|
|
equal(A.hacks, { a: Hack, b: Hack })
|
|
type(Prefixer.hacks, 'undefined')
|
|
})
|
|
|
|
test('loads hacks', () => {
|
|
class A extends Prefixer {
|
|
constructor() {
|
|
super()
|
|
this.klass = 'a'
|
|
}
|
|
}
|
|
class Hack extends A {
|
|
constructor() {
|
|
super()
|
|
this.klass = 'hack'
|
|
}
|
|
}
|
|
A.hacks = { hacked: Hack }
|
|
|
|
equal(A.load('hacked').klass, 'hack')
|
|
equal(A.load('a').klass, 'a')
|
|
})
|
|
|
|
test('cleans custom properties', () => {
|
|
let rule = css.first.first
|
|
rule._autoprefixerPrefix = '-ms-'
|
|
rule._autoprefixerValues = { '-ms-': 1 }
|
|
|
|
let cloned = Prefixer.clone(rule, { selector: 'from' })
|
|
equal(cloned.selector, 'from')
|
|
|
|
type(cloned._autoprefixerPrefix, 'undefined')
|
|
type(cloned._autoprefixerValues, 'undefined')
|
|
})
|
|
|
|
test('fixed declaration between', () => {
|
|
let parsed = parse('a { color : black }')
|
|
let cloned = Prefixer.clone(parsed.first.first)
|
|
equal(cloned.raws.between, ' : ')
|
|
})
|
|
|
|
test('works with root node', () => {
|
|
is(prefix.parentPrefix(css), false)
|
|
})
|
|
|
|
test('finds in at-rules', () => {
|
|
equal(prefix.parentPrefix(css.first), '-ms-')
|
|
})
|
|
|
|
test('finds in selectors', () => {
|
|
equal(prefix.parentPrefix(css.nodes[1]), '-moz-')
|
|
})
|
|
|
|
test('finds in parents', () => {
|
|
let decl = css.first.first
|
|
equal(prefix.parentPrefix(decl), '-ms-')
|
|
is(prefix.parentPrefix(css.nodes[2]), false)
|
|
})
|
|
|
|
test('caches prefix', () => {
|
|
prefix.parentPrefix(css.first)
|
|
equal(css.first._autoprefixerPrefix, '-ms-')
|
|
|
|
css.first._autoprefixerPrefix = false
|
|
is(prefix.parentPrefix(css.first), false)
|
|
})
|
|
|
|
test('finds only browsers prefixes', () => {
|
|
is(prefix.parentPrefix(css.nodes[2]), false)
|
|
})
|
|
|
|
test('works with selector contained --', () => {
|
|
let parsed = parse(':--a { color: black }')
|
|
is(prefix.parentPrefix(parsed.first.first), false)
|
|
})
|
|
|
|
test.run()
|