Skip to content

Commit 23ebad7

Browse files
committed
Add testcase
1 parent 82a8552 commit 23ebad7

7 files changed

+360
-0
lines changed

libs/extractor/src/lib.rs

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13328,6 +13328,162 @@ export const Card = () => (
1332813328
<Box className={`${enabled ? 'text-green-500' : 'text-blue-500'} text-3xl pr-5`}>
1332913329
hello
1333013330
</Box>
13331+
"#,
13332+
ExtractOption {
13333+
package: "@devup-ui/core".to_string(),
13334+
css_dir: "@devup-ui/core".to_string(),
13335+
single_css: true,
13336+
import_main_css: false,
13337+
import_aliases: HashMap::new()
13338+
}
13339+
)
13340+
.unwrap()
13341+
));
13342+
}
13343+
13344+
#[test]
13345+
#[serial]
13346+
fn test_tailwind_template_literal_with_logical_expression() {
13347+
// Test LogicalExpression in template literal (covers lines 239-242, 290-292 in prop_modify_utils.rs)
13348+
reset_class_map();
13349+
reset_file_map();
13350+
assert_debug_snapshot!(ToBTreeSet::from(
13351+
extract(
13352+
"test.tsx",
13353+
r#"import {Box} from '@devup-ui/core'
13354+
<Box className={`${isActive && 'text-red-500'} ${fallback || 'text-blue-500'} p-4`}>
13355+
hello
13356+
</Box>
13357+
"#,
13358+
ExtractOption {
13359+
package: "@devup-ui/core".to_string(),
13360+
css_dir: "@devup-ui/core".to_string(),
13361+
single_css: true,
13362+
import_main_css: false,
13363+
import_aliases: HashMap::new()
13364+
}
13365+
)
13366+
.unwrap()
13367+
));
13368+
}
13369+
13370+
#[test]
13371+
#[serial]
13372+
fn test_tailwind_template_literal_with_parenthesized_expression() {
13373+
// Test ParenthesizedExpression in template literal (covers lines 244-246, 295-296 in prop_modify_utils.rs)
13374+
reset_class_map();
13375+
reset_file_map();
13376+
assert_debug_snapshot!(ToBTreeSet::from(
13377+
extract(
13378+
"test.tsx",
13379+
r#"import {Box} from '@devup-ui/core'
13380+
<Box className={`${(cond ? 'text-red-500' : 'text-blue-500')} p-4`}>
13381+
hello
13382+
</Box>
13383+
"#,
13384+
ExtractOption {
13385+
package: "@devup-ui/core".to_string(),
13386+
css_dir: "@devup-ui/core".to_string(),
13387+
single_css: true,
13388+
import_main_css: false,
13389+
import_aliases: HashMap::new()
13390+
}
13391+
)
13392+
.unwrap()
13393+
));
13394+
}
13395+
13396+
#[test]
13397+
#[serial]
13398+
fn test_tailwind_template_literal_with_nested_template_literal() {
13399+
// Test nested TemplateLiteral (covers lines 248, 299-302 in prop_modify_utils.rs)
13400+
reset_class_map();
13401+
reset_file_map();
13402+
assert_debug_snapshot!(ToBTreeSet::from(
13403+
extract(
13404+
"test.tsx",
13405+
r#"import {Box} from '@devup-ui/core'
13406+
<Box className={`${`text-${color}-500`} p-4`}>
13407+
hello
13408+
</Box>
13409+
"#,
13410+
ExtractOption {
13411+
package: "@devup-ui/core".to_string(),
13412+
css_dir: "@devup-ui/core".to_string(),
13413+
single_css: true,
13414+
import_main_css: false,
13415+
import_aliases: HashMap::new()
13416+
}
13417+
)
13418+
.unwrap()
13419+
));
13420+
}
13421+
13422+
#[test]
13423+
#[serial]
13424+
fn test_tailwind_template_literal_with_variable_expression() {
13425+
// Test non-string expressions (variables/identifiers) - covers line 250 in prop_modify_utils.rs
13426+
reset_class_map();
13427+
reset_file_map();
13428+
assert_debug_snapshot!(ToBTreeSet::from(
13429+
extract(
13430+
"test.tsx",
13431+
r#"import {Box} from '@devup-ui/core'
13432+
<Box className={`${dynamicClass} text-red-500 p-4`}>
13433+
hello
13434+
</Box>
13435+
"#,
13436+
ExtractOption {
13437+
package: "@devup-ui/core".to_string(),
13438+
css_dir: "@devup-ui/core".to_string(),
13439+
single_css: true,
13440+
import_main_css: false,
13441+
import_aliases: HashMap::new()
13442+
}
13443+
)
13444+
.unwrap()
13445+
));
13446+
}
13447+
13448+
#[test]
13449+
#[serial]
13450+
fn test_tailwind_template_literal_with_function_call_expression() {
13451+
// Test function call expressions in template literal (covers line 250 default branch)
13452+
reset_class_map();
13453+
reset_file_map();
13454+
assert_debug_snapshot!(ToBTreeSet::from(
13455+
extract(
13456+
"test.tsx",
13457+
r#"import {Box} from '@devup-ui/core'
13458+
<Box className={`${getClass()} text-blue-500 p-4`}>
13459+
hello
13460+
</Box>
13461+
"#,
13462+
ExtractOption {
13463+
package: "@devup-ui/core".to_string(),
13464+
css_dir: "@devup-ui/core".to_string(),
13465+
single_css: true,
13466+
import_main_css: false,
13467+
import_aliases: HashMap::new()
13468+
}
13469+
)
13470+
.unwrap()
13471+
));
13472+
}
13473+
13474+
#[test]
13475+
#[serial]
13476+
fn test_tailwind_template_literal_with_style_order() {
13477+
// Test style_order parameter in build_tailwind_class_mapping (covers line 178)
13478+
reset_class_map();
13479+
reset_file_map();
13480+
assert_debug_snapshot!(ToBTreeSet::from(
13481+
extract(
13482+
"test.tsx",
13483+
r#"import {Box} from '@devup-ui/core'
13484+
<Box bg="blue" className={`${enabled ? 'text-green-500' : 'text-blue-500'} p-4`}>
13485+
hello
13486+
</Box>
1333113487
"#,
1333213488
ExtractOption {
1333313489
package: "@devup-ui/core".to_string(),
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box className={`${getClass()} text-blue-500 p-4`}>\n hello\n</Box>\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+
Static(
8+
ExtractStaticStyle {
9+
property: "color",
10+
value: "#3B82F6",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
Static(
18+
ExtractStaticStyle {
19+
property: "padding",
20+
value: "1rem",
21+
level: 0,
22+
selector: None,
23+
style_order: None,
24+
layer: None,
25+
},
26+
),
27+
},
28+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={`${getClass()} a b`}>\n hello\n</div>;\n",
29+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box className={`${isActive && 'text-red-500'} ${fallback || 'text-blue-500'} p-4`}>\n hello\n</Box>\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+
Static(
8+
ExtractStaticStyle {
9+
property: "color",
10+
value: "#3B82F6",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
Static(
18+
ExtractStaticStyle {
19+
property: "color",
20+
value: "#EF4444",
21+
level: 0,
22+
selector: None,
23+
style_order: None,
24+
layer: None,
25+
},
26+
),
27+
Static(
28+
ExtractStaticStyle {
29+
property: "padding",
30+
value: "1rem",
31+
level: 0,
32+
selector: None,
33+
style_order: None,
34+
layer: None,
35+
},
36+
),
37+
},
38+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={`${isActive && \"b\"} ${fallback || \"c\"} a`}>\n hello\n</div>;\n",
39+
}
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.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box className={`${`text-${color}-500`} p-4`}>\n hello\n</Box>\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+
Static(
8+
ExtractStaticStyle {
9+
property: "padding",
10+
value: "1rem",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
},
18+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={`${`text-${color}-500`} a`}>\n hello\n</div>;\n",
19+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box className={`${(cond ? 'text-red-500' : 'text-blue-500')} p-4`}>\n hello\n</Box>\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+
Static(
8+
ExtractStaticStyle {
9+
property: "color",
10+
value: "#3B82F6",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
Static(
18+
ExtractStaticStyle {
19+
property: "color",
20+
value: "#EF4444",
21+
level: 0,
22+
selector: None,
23+
style_order: None,
24+
layer: None,
25+
},
26+
),
27+
Static(
28+
ExtractStaticStyle {
29+
property: "padding",
30+
value: "1rem",
31+
level: 0,
32+
selector: None,
33+
style_order: None,
34+
layer: None,
35+
},
36+
),
37+
},
38+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={`${cond ? \"b\" : \"c\"} a`}>\n hello\n</div>;\n",
39+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box bg=\"blue\" className={`${enabled ? 'text-green-500' : 'text-blue-500'} p-4`}>\n hello\n</Box>\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+
Static(
8+
ExtractStaticStyle {
9+
property: "background",
10+
value: "blue",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
Static(
18+
ExtractStaticStyle {
19+
property: "color",
20+
value: "#22C55E",
21+
level: 0,
22+
selector: None,
23+
style_order: None,
24+
layer: None,
25+
},
26+
),
27+
Static(
28+
ExtractStaticStyle {
29+
property: "color",
30+
value: "#3B82F6",
31+
level: 0,
32+
selector: None,
33+
style_order: None,
34+
layer: None,
35+
},
36+
),
37+
Static(
38+
ExtractStaticStyle {
39+
property: "padding",
40+
value: "1rem",
41+
level: 0,
42+
selector: None,
43+
style_order: None,
44+
layer: None,
45+
},
46+
),
47+
},
48+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={`${enabled ? \"b\" : \"c\"} a d`}>\n hello\n</div>;\n",
49+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n<Box className={`${dynamicClass} text-red-500 p-4`}>\n hello\n</Box>\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+
Static(
8+
ExtractStaticStyle {
9+
property: "color",
10+
value: "#EF4444",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
layer: None,
15+
},
16+
),
17+
Static(
18+
ExtractStaticStyle {
19+
property: "padding",
20+
value: "1rem",
21+
level: 0,
22+
selector: None,
23+
style_order: None,
24+
layer: None,
25+
},
26+
),
27+
},
28+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className={`${dynamicClass} a b`}>\n hello\n</div>;\n",
29+
}

0 commit comments

Comments
 (0)