Skip to content

Commit 111dd1e

Browse files
committed
refactor(tests): update test cases for v-pre and template behavior
1 parent 28cd370 commit 111dd1e

3 files changed

Lines changed: 135 additions & 104 deletions

File tree

tests/bind.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fn data() -> Value {
1010
"num": 123,
1111
"truthy": true,
1212
"falsy": false,
13-
"nullval": null,
13+
"nullish": null,
1414
},
1515
"dynamicKey": "data-id",
1616
"dynamic-key": "data-id",

tests/pre.rs

Lines changed: 62 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
use prevue::render;
22
use serde_json::{Value, json};
33

4+
fn data() -> Value {
5+
json!({
6+
"message": "Hello, world!",
7+
"count": 42,
8+
"isVisible": true,
9+
"elementId": "item-1"
10+
})
11+
}
12+
13+
// === Basic Behavior ===
14+
415
#[test]
5-
fn test_pre() {
16+
fn test_pre_basic() {
617
let input = r#"
718
<div>
819
<div v-pre>PRE</div>
920
</div>
1021
"#;
11-
let output = render(input.to_string(), Value::Null).unwrap();
22+
let output = render(input.to_string(), data()).unwrap();
1223

1324
let expected = r#"<html><head></head><body><div>
1425
<div>PRE</div>
@@ -24,7 +35,7 @@ fn test_pre_empty() {
2435
<div v-pre></div>
2536
</div>
2637
"#;
27-
let output = render(input.to_string(), Value::Null).unwrap();
38+
let output = render(input.to_string(), data()).unwrap();
2839

2940
let expected = r#"<html><head></head><body><div>
3041
<div></div>
@@ -33,55 +44,59 @@ fn test_pre_empty() {
3344
assert_eq!(output, expected);
3445
}
3546

47+
// === Interpolation ===
48+
3649
#[test]
3750
fn test_pre_with_mustache() {
3851
let input = r#"
3952
<div>
40-
<div v-pre>{{ text }} {{ number }}</div>
53+
<div v-pre>{{ message }} {{ count }}</div>
4154
</div>
4255
"#;
43-
let output = render(input.to_string(), Value::Null).unwrap();
56+
let output = render(input.to_string(), data()).unwrap();
4457

4558
let expected = r#"<html><head></head><body><div>
46-
<div>{{ text }} {{ number }}</div>
59+
<div>{{ message }} {{ count }}</div>
4760
</div>
4861
</body></html>"#;
4962
assert_eq!(output, expected);
5063
}
5164

5265
#[test]
53-
fn test_pre_with_if() {
66+
fn test_pre_multiline() {
5467
let input = r#"
5568
<div>
56-
<div v-pre v-if="show">{{ text }}</div>
69+
<div v-pre>
70+
Line 1: {{ message }}
71+
Line 2: {{ count }}
72+
</div>
5773
</div>
5874
"#;
59-
let output = render(input.to_string(), Value::Null).unwrap();
75+
let output = render(input.to_string(), data()).unwrap();
6076

6177
let expected = r#"<html><head></head><body><div>
62-
<div v-if="show">{{ text }}</div>
78+
<div>
79+
Line 1: {{ message }}
80+
Line 2: {{ count }}
81+
</div>
6382
</div>
6483
</body></html>"#;
6584
assert_eq!(output, expected);
6685
}
6786

87+
// === Directives & Attributes ===
88+
6889
#[test]
69-
fn test_pre_with_nested_directives() {
90+
fn test_pre_with_if() {
7091
let input = r#"
7192
<div>
72-
<div v-pre>
73-
<p v-if="show">{{ text }}</p>
74-
<span v-for="item in [1, 2, 3]">{{ item }}</span>
75-
</div>
93+
<div v-pre v-if="isVisible">{{ message }}</div>
7694
</div>
7795
"#;
78-
let output = render(input.to_string(), Value::Null).unwrap();
96+
let output = render(input.to_string(), data()).unwrap();
7997

8098
let expected = r#"<html><head></head><body><div>
81-
<div>
82-
<p v-if="show">{{ text }}</p>
83-
<span v-for="item in [1, 2, 3]">{{ item }}</span>
84-
</div>
99+
<div v-if="isVisible">{{ message }}</div>
85100
</div>
86101
</body></html>"#;
87102
assert_eq!(output, expected);
@@ -91,34 +106,38 @@ fn test_pre_with_nested_directives() {
91106
fn test_pre_with_bind() {
92107
let input = r#"
93108
<div>
94-
<div v-pre :id="id">{{ text }}</div>
109+
<div v-pre :id="elementId">{{ message }}</div>
95110
</div>
96111
"#;
97-
let output = render(input.to_string(), Value::Null).unwrap();
112+
let output = render(input.to_string(), data()).unwrap();
98113

99114
let expected = r#"<html><head></head><body><div>
100-
<div :id="id">{{ text }}</div>
115+
<div :id="elementId">{{ message }}</div>
101116
</div>
102117
</body></html>"#;
103118
assert_eq!(output, expected);
104119
}
105120

121+
// === Nested Elements ===
122+
106123
#[test]
107-
fn test_pre_multiline() {
124+
fn test_pre_with_nested_directives() {
108125
let input = r#"
109126
<div>
110127
<div v-pre>
111-
Line 1: {{ text }}
112-
Line 2: {{ number }}
128+
<p v-if="isVisible">{{ message }}</p>
129+
<span v-for="item in [1, 2, 3]">{{ item }}</span>
130+
<div :id="elementId"></div>
113131
</div>
114132
</div>
115133
"#;
116-
let output = render(input.to_string(), Value::Null).unwrap();
134+
let output = render(input.to_string(), data()).unwrap();
117135

118136
let expected = r#"<html><head></head><body><div>
119137
<div>
120-
Line 1: {{ text }}
121-
Line 2: {{ number }}
138+
<p v-if="isVisible">{{ message }}</p>
139+
<span v-for="item in [1, 2, 3]">{{ item }}</span>
140+
<div :id="elementId"></div>
122141
</div>
123142
</div>
124143
</body></html>"#;
@@ -130,38 +149,40 @@ fn test_pre_nested_pre() {
130149
let input = r#"
131150
<div>
132151
<div v-pre>
133-
Outer {{ text }}
134-
<div v-pre>Inner {{ text }}</div>
152+
Outer {{ message }}
153+
<div v-pre>Inner {{ message }}</div>
135154
</div>
136155
</div>
137156
"#;
138-
let output = render(input.to_string(), Value::Null).unwrap();
157+
let output = render(input.to_string(), data()).unwrap();
139158

140159
let expected = r#"<html><head></head><body><div>
141160
<div>
142-
Outer {{ text }}
143-
<div v-pre="">Inner {{ text }}</div>
161+
Outer {{ message }}
162+
<div v-pre="">Inner {{ message }}</div>
144163
</div>
145164
</div>
146165
</body></html>"#;
147166
assert_eq!(output, expected);
148167
}
149168

169+
// === Isolation ===
170+
150171
#[test]
151172
fn test_pre_sibling_elements() {
152173
let input = r#"
153174
<div>
154-
<p>{{ text }}</p>
155-
<p v-pre>{{ text }}</p>
156-
<p>{{ text }}</p>
175+
<p>{{ message }}</p>
176+
<p v-pre>{{ message }}</p>
177+
<p>{{ message }}</p>
157178
</div>
158179
"#;
159-
let output = render(input.to_string(), json!({ "text": "Hello" })).unwrap();
180+
let output = render(input.to_string(), data()).unwrap();
160181

161182
let expected = r#"<html><head></head><body><div>
162-
<p>Hello</p>
163-
<p>{{ text }}</p>
164-
<p>Hello</p>
183+
<p>Hello, world!</p>
184+
<p>{{ message }}</p>
185+
<p>Hello, world!</p>
165186
</div>
166187
</body></html>"#;
167188
assert_eq!(output, expected);

0 commit comments

Comments
 (0)