Skip to content

Commit 4f6cc08

Browse files
committed
Add testcase
1 parent 3755926 commit 4f6cc08

11 files changed

Lines changed: 368 additions & 16 deletions

Cargo.lock

Lines changed: 14 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libs/css/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ edition = "2024"
77
once_cell = "1.21.3"
88
phf = { version = "0.13", features = ["macros"] }
99
serde = { version = "1.0.228", features = ["derive"] }
10-
regex = "1.12.2"
10+
regex = "1.12.3"
1111
bimap = { version = "0.6.3" }
1212

1313
[dev-dependencies]

libs/extractor/src/lib.rs

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6415,6 +6415,160 @@ export { c as Lib };"#,
64156415
));
64166416
}
64176417

6418+
#[test]
6419+
#[serial]
6420+
fn style_order_conditional_coverage() {
6421+
// Coverage: lib.rs:53 — Enum variant clone_in (positioning={variable} with conditional styleOrder)
6422+
reset_class_map();
6423+
reset_file_map();
6424+
assert_debug_snapshot!(ToBTreeSet::from(
6425+
extract(
6426+
"test.jsx",
6427+
r#"import {Box} from '@devup-ui/core'
6428+
<Box styleOrder={isActive ? 5 : 10} positioning={mode} />
6429+
"#,
6430+
ExtractOption {
6431+
package: "@devup-ui/core".to_string(),
6432+
css_dir: "@devup-ui/core".to_string(),
6433+
single_css: true,
6434+
import_main_css: false,
6435+
import_aliases: HashMap::new()
6436+
}
6437+
)
6438+
.unwrap()
6439+
));
6440+
6441+
// Coverage: lib.rs:54 — Expression variant clone_in (typography={variable} with conditional styleOrder)
6442+
reset_class_map();
6443+
reset_file_map();
6444+
assert_debug_snapshot!(ToBTreeSet::from(
6445+
extract(
6446+
"test.jsx",
6447+
r#"import {Text} from '@devup-ui/core'
6448+
<Text styleOrder={isActive ? 5 : 10} typography={typo} />
6449+
"#,
6450+
ExtractOption {
6451+
package: "@devup-ui/core".to_string(),
6452+
css_dir: "@devup-ui/core".to_string(),
6453+
single_css: true,
6454+
import_main_css: false,
6455+
import_aliases: HashMap::new()
6456+
}
6457+
)
6458+
.unwrap()
6459+
));
6460+
6461+
// Coverage: lib.rs:55 — MemberExpression variant clone_in (bg={obj.color} with conditional styleOrder)
6462+
reset_class_map();
6463+
reset_file_map();
6464+
assert_debug_snapshot!(ToBTreeSet::from(
6465+
extract(
6466+
"test.jsx",
6467+
r#"import {Box} from '@devup-ui/core'
6468+
<Box styleOrder={isActive ? 5 : 10} bg={obj.color} />
6469+
"#,
6470+
ExtractOption {
6471+
package: "@devup-ui/core".to_string(),
6472+
css_dir: "@devup-ui/core".to_string(),
6473+
single_css: true,
6474+
import_main_css: false,
6475+
import_aliases: HashMap::new()
6476+
}
6477+
)
6478+
.unwrap()
6479+
));
6480+
6481+
// Coverage: prop_modify_utils.rs:58,130 — (None, None) branch: no styles, only conditional styleOrder
6482+
reset_class_map();
6483+
reset_file_map();
6484+
assert_debug_snapshot!(ToBTreeSet::from(
6485+
extract(
6486+
"test.jsx",
6487+
r#"import {Box} from '@devup-ui/core'
6488+
<Box styleOrder={isActive ? 5 : 10} />
6489+
"#,
6490+
ExtractOption {
6491+
package: "@devup-ui/core".to_string(),
6492+
css_dir: "@devup-ui/core".to_string(),
6493+
single_css: true,
6494+
import_main_css: false,
6495+
import_aliases: HashMap::new()
6496+
}
6497+
)
6498+
.unwrap()
6499+
));
6500+
6501+
// Coverage: prop_modify_utils.rs:56-58 — (None, None) branch via call expression path
6502+
reset_class_map();
6503+
reset_file_map();
6504+
assert_debug_snapshot!(ToBTreeSet::from(
6505+
extract(
6506+
"test.mjs",
6507+
r#"import { jsx as e } from "react/jsx-runtime";
6508+
import { Box as o } from "@devup-ui/react";
6509+
function c() {
6510+
return e(o, { styleOrder: isActive ? 5 : 10 });
6511+
}
6512+
export { c as Lib };"#,
6513+
ExtractOption {
6514+
package: "@devup-ui/react".to_string(),
6515+
css_dir: "@devup-ui/react".to_string(),
6516+
single_css: true,
6517+
import_main_css: false,
6518+
import_aliases: HashMap::new()
6519+
}
6520+
)
6521+
.unwrap()
6522+
));
6523+
6524+
// Coverage: utils.rs:100 — expression_to_style_order with plain variable (not conditional, not static)
6525+
// Also covers visit.rs:259,262 — fallback from pre-scan None to extract_style_from_expression's result
6526+
reset_class_map();
6527+
reset_file_map();
6528+
assert_debug_snapshot!(ToBTreeSet::from(
6529+
extract(
6530+
"test.mjs",
6531+
r#"import { jsx as e } from "react/jsx-runtime";
6532+
import { Box as o } from "@devup-ui/react";
6533+
function c() {
6534+
return e(o, { styleOrder: order, bg: "red" });
6535+
}
6536+
export { c as Lib };"#,
6537+
ExtractOption {
6538+
package: "@devup-ui/react".to_string(),
6539+
css_dir: "@devup-ui/react".to_string(),
6540+
single_css: true,
6541+
import_main_css: false,
6542+
import_aliases: HashMap::new()
6543+
}
6544+
)
6545+
.unwrap()
6546+
));
6547+
6548+
// Coverage: visit.rs:297/492 — non-conditional static styleOrder via call expression (fallback _ branch)
6549+
reset_class_map();
6550+
reset_file_map();
6551+
assert_debug_snapshot!(ToBTreeSet::from(
6552+
extract(
6553+
"test.mjs",
6554+
r#"import { jsx as e } from "react/jsx-runtime";
6555+
import { Box as o } from "@devup-ui/react";
6556+
function c() {
6557+
return e(o, { bg: "red" });
6558+
}
6559+
export { c as Lib };"#,
6560+
ExtractOption {
6561+
package: "@devup-ui/react".to_string(),
6562+
css_dir: "@devup-ui/react".to_string(),
6563+
single_css: true,
6564+
import_main_css: false,
6565+
import_aliases: HashMap::new()
6566+
}
6567+
)
6568+
.unwrap()
6569+
));
6570+
}
6571+
64186572
#[test]
64196573
#[serial]
64206574
fn style_order_conditional_call_expression() {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.jsx\",\nr#\"import {Text} from '@devup-ui/core'\n<Text styleOrder={isActive ? 5 : 10} typography={typo} />\n\"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: true, import_main_css: false,\n import_aliases: HashMap::new()\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {},
7+
code: "<span className={isActive ? typo ? `typo-${typo}` : \"\" : typo ? `typo-${typo}` : \"\"} />;\n",
8+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.jsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box styleOrder={isActive ? 5 : 10} bg={obj.color} />\n\"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: true, import_main_css: false,\n import_aliases: HashMap::new()\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Dynamic(
8+
ExtractDynamicStyle {
9+
property: "background",
10+
level: 0,
11+
identifier: "obj.color",
12+
selector: None,
13+
style_order: Some(
14+
5,
15+
),
16+
},
17+
),
18+
Dynamic(
19+
ExtractDynamicStyle {
20+
property: "background",
21+
level: 0,
22+
identifier: "obj.color",
23+
selector: None,
24+
style_order: Some(
25+
10,
26+
),
27+
},
28+
),
29+
},
30+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={isActive ? \"a\" : \"c\"} style={{ \"--b\": obj.color }} />;\n",
31+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.jsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box styleOrder={isActive ? 5 : 10} />\n\"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: true, import_main_css: false,\n import_aliases: HashMap::new()\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {},
7+
code: "<div />;\n",
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.mjs\",\nr#\"import { jsx as e } from \"react/jsx-runtime\";\nimport { Box as o } from \"@devup-ui/react\";\nfunction c() {\n return e(o, { styleOrder: isActive ? 5 : 10 });\n}\nexport { c as Lib };\"#,\nExtractOption\n{\n package: \"@devup-ui/react\".to_string(), css_dir:\n \"@devup-ui/react\".to_string(), single_css: true, import_main_css: false,\n import_aliases: HashMap::new()\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {},
7+
code: "import { jsx as e } from \"react/jsx-runtime\";\nfunction c() {\n\treturn e(\"div\", {});\n}\nexport { c as Lib };\n",
8+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.mjs\",\nr#\"import { jsx as e } from \"react/jsx-runtime\";\nimport { Box as o } from \"@devup-ui/react\";\nfunction c() {\n return e(o, { styleOrder: order, bg: \"red\" });\n}\nexport { c as Lib };\"#,\nExtractOption\n{\n package: \"@devup-ui/react\".to_string(), css_dir:\n \"@devup-ui/react\".to_string(), single_css: true, import_main_css: false,\n import_aliases: HashMap::new()\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Static(
8+
ExtractStaticStyle {
9+
property: "background",
10+
value: "red",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
},
18+
code: "import \"@devup-ui/react/devup-ui.css\";\nimport { jsx as e } from \"react/jsx-runtime\";\nfunction c() {\n\treturn e(\"div\", { className: \"a\" });\n}\nexport { c as Lib };\n",
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.mjs\",\nr#\"import { jsx as e } from \"react/jsx-runtime\";\nimport { Box as o } from \"@devup-ui/react\";\nfunction c() {\n return e(o, { bg: \"red\" });\n}\nexport { c as Lib };\"#,\nExtractOption\n{\n package: \"@devup-ui/react\".to_string(), css_dir:\n \"@devup-ui/react\".to_string(), single_css: true, import_main_css: false,\n import_aliases: HashMap::new()\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Static(
8+
ExtractStaticStyle {
9+
property: "background",
10+
value: "red",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
},
18+
code: "import \"@devup-ui/react/devup-ui.css\";\nimport { jsx as e } from \"react/jsx-runtime\";\nfunction c() {\n\treturn e(\"div\", { className: \"a\" });\n}\nexport { c as Lib };\n",
19+
}

0 commit comments

Comments
 (0)