mod css;
pub use css::*;
#[cfg(test)]
#[allow(unused)]
mod tests {
use swc_core::common::{Span, BytePos};
use crate::css;
macro_rules! test_output {
($input: expr, $expected: expr, $options: expr) => {
let span = Span::new(
BytePos(1),
BytePos(1 + $input.len() as u32),
Default::default(),
);
let mut errors = Vec::new();
let out = css::transform_css($input, span, Some("data-v-abcd1234"), &mut errors, Default::default());
assert_eq!(out.ok_or(()), $expected);
};
}
macro_rules! test_ok {
($input: expr, $expected: expr, $options: expr) => {
test_output!($input, Ok(String::from($expected)), $options);
};
}
macro_rules! minify_yes {
() => {
};
}
#[test]
fn transform_style_scoped() {
test_ok!(
".foo { background: #ff0 }",
".foo[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo > #bar baz { background: #ff0 }",
".foo>#bar baz[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo .bar, .foo > .baz, .foo + .foo, .foo ~ .qux { background: #ff0 }",
".foo .bar[data-v-abcd1234],.foo>.baz[data-v-abcd1234],.foo+.foo[data-v-abcd1234],.foo~.qux[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
":deep() { background: #ff0 }",
"[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo:deep() { background: #ff0 }",
".foo[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo > #bar baz:deep() { background: #ff0 }",
".foo>#bar baz[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
":deep(#bar baz) { background: #ff0 }",
"[data-v-abcd1234] #bar baz{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo :deep(#bar baz) { background: #ff0 }",
".foo[data-v-abcd1234] #bar baz{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo :deep(#bar baz), .qux { background: #ff0 }",
".foo[data-v-abcd1234] #bar baz,.qux[data-v-abcd1234]{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo :deep(#bar baz) .qux { background: #ff0 }",
".foo[data-v-abcd1234] #bar baz .qux{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo:deep(#bar baz) { background: #ff0 }",
".foo[data-v-abcd1234] #bar baz{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo:deep(#bar baz) .qux { background: #ff0 }",
".foo[data-v-abcd1234] #bar baz .qux{background:#ff0}",
minify_yes!()
);
test_ok!(
".foo .foo.bar .foo.bar.baz:deep(#bar baz) { background: #ff0 }",
".foo .foo.bar .foo.bar.baz[data-v-abcd1234] #bar baz{background:#ff0}",
minify_yes!()
);
test_ok!(
"#more.complex .selector > :deep(#bar baz) { background: #ff0 }",
"#more.complex .selector[data-v-abcd1234]>#bar baz{background:#ff0}",
minify_yes!()
);
test_ok!(
"@media screen and (min-width: 500px) { .foo { background: #ff0 } }",
"@media screen and (min-width:500px){.foo[data-v-abcd1234]{background:#ff0}}",
minify_yes!()
);
}
}