Skip to content

Commit cb4dfe3

Browse files
committed
Fix testcase
1 parent 44d4d99 commit cb4dfe3

File tree

2 files changed

+101
-5
lines changed

2 files changed

+101
-5
lines changed

libs/sheet/src/lib.rs

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -377,12 +377,13 @@ impl StyleSheet {
377377
st.style_order(),
378378
if !single_css { Some(filename) } else { None },
379379
)
380-
} else if let Some(StyleProperty::ClassName(cls)) =
381-
style.extract(if !single_css { Some(filename) } else { None })
382-
{
383-
cls
384380
} else {
385-
continue;
381+
match st.extract(if !single_css { Some(filename) } else { None }) {
382+
StyleProperty::ClassName(cls)
383+
| StyleProperty::Variable {
384+
class_name: cls, ..
385+
} => cls,
386+
}
386387
};
387388

388389
if self.add_property_with_layer(
@@ -2360,4 +2361,56 @@ mod tests {
23602361
assert!(css.contains("width:1px"));
23612362
assert!(!css.contains("width:2px"));
23622363
}
2364+
2365+
#[test]
2366+
#[serial]
2367+
fn test_first_value_without_dollar_prefix_uses_raw_value() {
2368+
reset_class_map();
2369+
reset_file_map();
2370+
let mut sheet = StyleSheet::default();
2371+
2372+
let mut styles = FxHashSet::default();
2373+
// FirstValue resolution but value has no $ prefix — should use the raw value as-is
2374+
styles.insert(ExtractStyleValue::Static(
2375+
ExtractStaticStyle::new("width", "100px", 0, None)
2376+
.with_theme_token_resolution(ThemeTokenResolution::FirstValue),
2377+
));
2378+
2379+
let (collected, _) = sheet.update_styles(&styles, "test.tsx", true);
2380+
assert!(collected);
2381+
2382+
let css = sheet.create_css(None, false);
2383+
assert!(css.contains("width:100px"));
2384+
}
2385+
2386+
#[test]
2387+
#[serial]
2388+
fn test_first_value_box_shadow_resolves_shadow_token() {
2389+
reset_class_map();
2390+
reset_file_map();
2391+
let mut sheet = StyleSheet::default();
2392+
let theme: Theme = serde_json::from_str(
2393+
r#"{
2394+
"shadow": {
2395+
"default": {
2396+
"card": ["0 1px 2px #0003", null, "0 4px 8px #0003"]
2397+
}
2398+
}
2399+
}"#,
2400+
)
2401+
.unwrap();
2402+
sheet.set_theme(theme);
2403+
2404+
let mut styles = FxHashSet::default();
2405+
styles.insert(ExtractStyleValue::Static(
2406+
ExtractStaticStyle::new("box-shadow", "$card", 0, None)
2407+
.with_theme_token_resolution(ThemeTokenResolution::FirstValue),
2408+
));
2409+
2410+
let (collected, _) = sheet.update_styles(&styles, "test.tsx", true);
2411+
assert!(collected);
2412+
2413+
let css = sheet.create_css(None, false);
2414+
assert!(css.contains("box-shadow:0 1px 2px #0003"));
2415+
}
23632416
}

libs/sheet/src/theme.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2265,4 +2265,47 @@ mod tests {
22652265
]
22662266
);
22672267
}
2268+
2269+
#[test]
2270+
fn test_get_shadow_token_levels() {
2271+
let mut theme = Theme::default();
2272+
theme.add_shadow(
2273+
"default",
2274+
"sm",
2275+
vec![
2276+
Some("0 1px 2px rgba(0,0,0,.1)".to_string()),
2277+
None,
2278+
Some("0 2px 4px rgba(0,0,0,.2)".to_string()),
2279+
],
2280+
);
2281+
theme.add_shadow(
2282+
"default",
2283+
"md",
2284+
vec![Some("0 4px 8px rgba(0,0,0,.1)".to_string())],
2285+
);
2286+
2287+
let levels = theme.get_shadow_token_levels();
2288+
assert_eq!(levels.get("sm").unwrap(), &vec![0u8, 2]);
2289+
assert_eq!(levels.get("md").unwrap(), &vec![0u8]);
2290+
}
2291+
2292+
#[test]
2293+
fn test_get_default_shadow_value() {
2294+
let mut theme = Theme::default();
2295+
theme.add_shadow(
2296+
"default",
2297+
"card",
2298+
vec![Some("0 1px 2px #0003".to_string()), None],
2299+
);
2300+
2301+
assert_eq!(
2302+
theme.get_default_shadow_value("card"),
2303+
Some("0 1px 2px #0003")
2304+
);
2305+
assert_eq!(theme.get_default_shadow_value("nonexistent"), None);
2306+
2307+
// No shadows at all
2308+
let empty = Theme::default();
2309+
assert_eq!(empty.get_default_shadow_value("card"), None);
2310+
}
22682311
}

0 commit comments

Comments
 (0)