-
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathslot.spec.ts
121 lines (102 loc) · 2.93 KB
/
slot.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import { Linter, Rule } from 'template-lint';
import { SlotRule } from '../source/rules/slot';
describe("Slot Rule", () => {
var linter: Linter = new Linter([
new SlotRule()
]);
it("will reject duplicate default slot", (done) => {
linter.lint('<slot></slot><slot></slot>')
.then((issues) => {
expect(issues.length).toBe(1);
expect(issues[0].message).toBe("more than one default slot detected");
done();
});
});
it("will reject duplicate named slot", (done) => {
linter.lint("<slot name='foo'></slot><slot name='foo'></slot><slot></slot>")
.then((issues) => {
expect(issues.length).toBe(1);
expect(issues[0].message).toBe("duplicated slot name (foo)");
done();
});
});
it("will accept multiple slots with different names", (done) => {
linter.lint("<slot name='boo'></slot><slot name='foo'></slot><slot></slot>")
.then((issues) => {
expect(issues.length).toBe(0);
done();
});
});
it("will accept slots with content", (done) => {
linter.lint("<slot> hello world </slot>")
.then((issues) => {
expect(issues.length).toBe(0);
done();
});
});
it("will accept slots with template controllers in slot content", (done) => {
linter.lint(`
<slot>
<div if.bind='addMe'>valid</div>
<div repeat.for="item of items">also valid</div>
</slot>`)
.then((issues) => {
expect(issues.length).toBe(0);
done();
});
});
it("will reject slot elements inside if.bind template controller", (done) => {
linter.lint(`
<div if.bind="">
<div>
<slot></slot>
</div>
</div>
`)
.then((issues) => {
expect(issues.length).toBe(1);
expect(issues[0].message).toContain("slot cannot have ancestor using");
done();
});
});
it("will reject slot elements inside repeat.for template controllers", (done) => {
linter.lint(`
<div repeat.for="">
<div>
<slot></slot>
</div>
</div>
`)
.then((issues) => {
expect(issues.length).toBe(1);
expect(issues[0].message).toContain("slot cannot have ancestor using");
done();
});
});
it("will reject slot elements inside with.bind template controllers", (done) => {
linter.lint(`
<div with.bind="">
<div>
<slot></slot>
</div>
</div>
`)
.then((issues) => {
expect(issues.length).toBe(1);
expect(issues[0].message).toContain("slot cannot have ancestor using");
done();
});
});
it("will accept slot element outside of template controllers", (done) => {
linter.lint(`
<div if.bind=""></div>
<div repeat.for=""></div>
<div with.bind=""></div>
<slot></slot>
`)
.then((issues) => {
expect(issues.length).toBe(0);
done();
});
});
});