Skip to content

Commit d5a1212

Browse files
committed
Improve tests
1 parent 95cb785 commit d5a1212

4 files changed

Lines changed: 131 additions & 11 deletions

File tree

packages/@glimmer-workspace/integration-tests/test/keywords/eq-runtime-test.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,17 @@ class KeywordEqRuntime extends RenderTest {
2121
}
2222

2323
@test
24-
'implicit scope'() {
24+
'explicit scope (shadowed)'() {
25+
const compiled = template('{{if (eq a b) "yes" "no"}}', {
26+
strictMode: true,
27+
scope: () => ({ eq: () => false, a: 1, b: 1 }),
28+
});
29+
this.renderComponent(compiled);
30+
this.assertHTML('no');
31+
}
32+
33+
@test
34+
'implicit scope (eval)'() {
2535
let a = 1;
2636
let b = 1;
2737
hide(a);

packages/@glimmer-workspace/integration-tests/test/keywords/eq-test.ts

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,64 @@ import { DEBUG } from '@glimmer/env';
22
import { jitSuite, RenderTest, test } from '@glimmer-workspace/integration-tests';
33

44
import { template } from '@ember/template-compiler';
5-
import { eq } from '@ember/helper';
65

76
class KeywordEq extends RenderTest {
87
static suiteName = 'keyword helper: eq';
98

9+
@test
10+
'explicit scope'() {
11+
let a = 1;
12+
let b = 1;
13+
14+
const compiled = template('{{eq a b}}', {
15+
strictMode: true,
16+
scope: () => ({ a, b }),
17+
});
18+
19+
this.renderComponent(compiled);
20+
this.assertHTML('true');
21+
}
22+
23+
@test
24+
'explicit scope (shadowed)'() {
25+
let a = 1;
26+
let b = 2;
27+
let eq = () => 'surprise';
28+
const compiled = template('{{eq a b}}', {
29+
strictMode: true,
30+
scope: () => ({ eq, a, b }),
31+
});
32+
33+
this.renderComponent(compiled);
34+
this.assertHTML('surprise');
35+
}
36+
37+
@test
38+
'implicit scope (eval)'() {
39+
let a = 1;
40+
let b = 1;
41+
42+
hide(a);
43+
hide(b);
44+
45+
const compiled = template('{{if (eq a b) "yes" "no"}}', {
46+
strictMode: true,
47+
eval() {
48+
return eval(arguments[0]);
49+
},
50+
});
51+
52+
this.renderComponent(compiled);
53+
this.assertHTML('yes');
54+
}
55+
1056
@test
1157
'returns true for equal numbers'() {
1258
let a = 1;
1359
let b = 1;
1460
const compiled = template('{{if (eq a b) "yes" "no"}}', {
1561
strictMode: true,
16-
scope: () => ({ eq, a, b }),
62+
scope: () => ({ a, b }),
1763
});
1864
this.renderComponent(compiled);
1965
this.assertHTML('yes');
@@ -25,7 +71,7 @@ class KeywordEq extends RenderTest {
2571
let b = 2;
2672
const compiled = template('{{if (eq a b) "yes" "no"}}', {
2773
strictMode: true,
28-
scope: () => ({ eq, a, b }),
74+
scope: () => ({ a, b }),
2975
});
3076
this.renderComponent(compiled);
3177
this.assertHTML('no');
@@ -37,7 +83,7 @@ class KeywordEq extends RenderTest {
3783
let b = 'hello';
3884
const compiled = template('{{if (eq a b) "yes" "no"}}', {
3985
strictMode: true,
40-
scope: () => ({ eq, a, b }),
86+
scope: () => ({ a, b }),
4187
});
4288
this.renderComponent(compiled);
4389
this.assertHTML('yes');
@@ -48,7 +94,7 @@ class KeywordEq extends RenderTest {
4894
let a = 1;
4995
const compiled = template('{{eq a}}', {
5096
strictMode: true,
51-
scope: () => ({ eq, a }),
97+
scope: () => ({ a }),
5298
});
5399

54100
assert.throws(() => {
@@ -58,3 +104,7 @@ class KeywordEq extends RenderTest {
58104
}
59105

60106
jitSuite(KeywordEq);
107+
108+
const hide = (variable: unknown) => {
109+
new Function(`return (${JSON.stringify(variable)});`);
110+
};

packages/@glimmer-workspace/integration-tests/test/keywords/neq-runtime-test.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,17 @@ class KeywordNeqRuntime extends RenderTest {
2121
}
2222

2323
@test
24-
'implicit scope'() {
24+
'explicit scope (shadowed)'() {
25+
const compiled = template('{{if (neq a b) "yes" "no"}}', {
26+
strictMode: true,
27+
scope: () => ({ neq: () => false, a: 1, b: 2 }),
28+
});
29+
this.renderComponent(compiled);
30+
this.assertHTML('no');
31+
}
32+
33+
@test
34+
'implicit scope (eval)'() {
2535
let a = 1;
2636
let b = 2;
2737
hide(a);

packages/@glimmer-workspace/integration-tests/test/keywords/neq-test.ts

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,64 @@ import { DEBUG } from '@glimmer/env';
22
import { jitSuite, RenderTest, test } from '@glimmer-workspace/integration-tests';
33

44
import { template } from '@ember/template-compiler';
5-
import { neq } from '@ember/helper';
65

76
class KeywordNeq extends RenderTest {
87
static suiteName = 'keyword helper: neq';
98

9+
@test
10+
'explicit scope'() {
11+
let a = 1;
12+
let b = 2;
13+
14+
const compiled = template('{{neq a b}}', {
15+
strictMode: true,
16+
scope: () => ({ a, b }),
17+
});
18+
19+
this.renderComponent(compiled);
20+
this.assertHTML('true');
21+
}
22+
23+
@test
24+
'explicit scope (shadowed)'() {
25+
let a = 1;
26+
let b = 1;
27+
let neq = () => 'surprise';
28+
const compiled = template('{{neq a b}}', {
29+
strictMode: true,
30+
scope: () => ({ neq, a, b }),
31+
});
32+
33+
this.renderComponent(compiled);
34+
this.assertHTML('surprise');
35+
}
36+
37+
@test
38+
'implicit scope (eval)'() {
39+
let a = 1;
40+
let b = 2;
41+
42+
hide(a);
43+
hide(b);
44+
45+
const compiled = template('{{if (neq a b) "yes" "no"}}', {
46+
strictMode: true,
47+
eval() {
48+
return eval(arguments[0]);
49+
},
50+
});
51+
52+
this.renderComponent(compiled);
53+
this.assertHTML('yes');
54+
}
55+
1056
@test
1157
'returns true for unequal numbers'() {
1258
let a = 1;
1359
let b = 2;
1460
const compiled = template('{{if (neq a b) "yes" "no"}}', {
1561
strictMode: true,
16-
scope: () => ({ neq, a, b }),
62+
scope: () => ({ a, b }),
1763
});
1864
this.renderComponent(compiled);
1965
this.assertHTML('yes');
@@ -25,7 +71,7 @@ class KeywordNeq extends RenderTest {
2571
let b = 1;
2672
const compiled = template('{{if (neq a b) "yes" "no"}}', {
2773
strictMode: true,
28-
scope: () => ({ neq, a, b }),
74+
scope: () => ({ a, b }),
2975
});
3076
this.renderComponent(compiled);
3177
this.assertHTML('no');
@@ -36,7 +82,7 @@ class KeywordNeq extends RenderTest {
3682
let a = 1;
3783
const compiled = template('{{neq a}}', {
3884
strictMode: true,
39-
scope: () => ({ neq, a }),
85+
scope: () => ({ a }),
4086
});
4187

4288
assert.throws(() => {
@@ -46,3 +92,7 @@ class KeywordNeq extends RenderTest {
4692
}
4793

4894
jitSuite(KeywordNeq);
95+
96+
const hide = (variable: unknown) => {
97+
new Function(`return (${JSON.stringify(variable)});`);
98+
};

0 commit comments

Comments
 (0)