Skip to content

Commit 4847d76

Browse files
committed
Add testcase
1 parent 116de4b commit 4847d76

4 files changed

Lines changed: 61 additions & 4 deletions

File tree

libs/css/src/lib.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,24 @@ mod tests {
794794
);
795795
}
796796

797+
#[test]
798+
#[serial]
799+
fn test_debug_sheet_to_classname_with_filename() {
800+
reset_class_map();
801+
set_debug(true);
802+
// Debug mode + filename triggers the file_suffix branch (lines 234-235)
803+
let class_name =
804+
sheet_to_classname("background", 0, Some("red"), None, None, Some("test.tsx"));
805+
assert!(class_name.contains("background-0-red--255-"));
806+
// Should have a file number suffix
807+
let parts: Vec<&str> = class_name.split('-').collect();
808+
assert!(
809+
parts.len() >= 6,
810+
"Expected file suffix in debug classname: {class_name}"
811+
);
812+
set_debug(false);
813+
}
814+
797815
#[test]
798816
fn test_merge_selector() {
799817
assert_eq!(merge_selector("cls", Some(&"hover".into())), ".cls:hover");

libs/css/src/optimize_value.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,6 @@ pub fn optimize_value(value: &str) -> String {
4242
if let std::borrow::Cow::Owned(s) = replaced {
4343
ret = s;
4444
}
45-
let trimmed = ret.trim();
46-
if trimmed.len() != ret.len() {
47-
ret = trimmed.to_string();
48-
}
4945
}
5046
let replaced = F_RGBA_RE.replace_all(&ret, |c: &regex::Captures| {
5147
let r = c[1].parse::<i32>().unwrap();

libs/sheet/src/lib.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2207,4 +2207,42 @@ mod tests {
22072207
assert!(css.contains("@layer components"));
22082208
assert_debug_snapshot!(css.split("*/").nth(1).unwrap());
22092209
}
2210+
2211+
#[test]
2212+
fn test_stylesheet_css_extract() {
2213+
let css_entry = StyleSheetCss {
2214+
css: "div{display:flex}".to_string(),
2215+
};
2216+
assert_eq!(css_entry.extract(), "div{display:flex}");
2217+
2218+
let empty = StyleSheetCss { css: String::new() };
2219+
assert_eq!(empty.extract(), "");
2220+
}
2221+
2222+
#[test]
2223+
fn test_keyframes_multi_property() {
2224+
let mut sheet = StyleSheet::default();
2225+
let mut keyframes: BTreeMap<String, Vec<(String, String)>> = BTreeMap::new();
2226+
// Multiple properties in a single keyframe step to cover the semicolon separator (line 548)
2227+
keyframes.insert(
2228+
String::from("from"),
2229+
vec![
2230+
(String::from("opacity"), String::from("0")),
2231+
(String::from("transform"), String::from("scale(0.5)")),
2232+
],
2233+
);
2234+
keyframes.insert(
2235+
String::from("to"),
2236+
vec![
2237+
(String::from("opacity"), String::from("1")),
2238+
(String::from("transform"), String::from("scale(1)")),
2239+
],
2240+
);
2241+
sheet.add_keyframes("slideIn", keyframes, None);
2242+
let css = sheet.create_css(None, false);
2243+
// Verify semicolon separator between multiple properties in a keyframe step
2244+
assert!(css.contains("opacity:0;transform:scale(0.5)"));
2245+
assert!(css.contains("opacity:1;transform:scale(1)"));
2246+
assert_debug_snapshot!(css.split("*/").nth(1).unwrap());
2247+
}
22102248
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
source: libs/sheet/src/lib.rs
3+
expression: "css.split(\"*/\").nth(1).unwrap()"
4+
---
5+
"@keyframes slideIn{from{opacity:0;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}"

0 commit comments

Comments
 (0)