Skip to content

Commit a41d1be

Browse files
authored
test: simplify nested popover tests to not use renderers (#10328)
1 parent 8aa0f35 commit a41d1be

File tree

1 file changed

+58
-55
lines changed

1 file changed

+58
-55
lines changed

packages/popover/test/nested.test.js

Lines changed: 58 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,15 @@ describe('nested popover', () => {
1414
});
1515

1616
beforeEach(async () => {
17-
popover = fixtureSync('<vaadin-popover></vaadin-popover>');
17+
popover = fixtureSync(`
18+
<vaadin-popover>
19+
<button id="nested-target">Nested target</button>
20+
<vaadin-popover for="nested-target">Nested</vaadin-popover>
21+
</vaadin-popover>
22+
`);
1823
target = fixtureSync('<button>Target</button>');
1924
popover.target = target;
20-
popover.renderer = (root) => {
21-
if (root.firstChild) {
22-
return;
23-
}
24-
root.innerHTML = `
25-
<button id="nested-target">Nested target</button>
26-
<vaadin-popover for="nested-target"></vaadin-popover>
27-
`;
28-
[nestedTarget, nestedPopover] = root.children;
29-
nestedPopover.renderer = (root2) => {
30-
root2.textContent = 'Nested';
31-
};
32-
};
25+
[nestedTarget, nestedPopover] = popover.children;
3326
await nextRender();
3427
});
3528

@@ -170,100 +163,110 @@ describe('nested popover', () => {
170163
});
171164

172165
describe('not nested popover', () => {
173-
let popover, popoverContent, target, secondPopover, secondPopoverContent, secondTarget;
166+
let popover1, content1, target1, popover2, content2, target2;
174167

175168
beforeEach(async () => {
176-
popover = fixtureSync('<vaadin-popover></vaadin-popover>');
177-
target = fixtureSync('<button>Target</button>');
178-
popover.target = target;
179-
popover.renderer = (root) => {
180-
root.innerHTML = '<button>Popover content</button>';
181-
popoverContent = root.firstElementChild;
182-
};
183-
184-
secondPopover = fixtureSync('<vaadin-popover></vaadin-popover>');
185-
secondTarget = fixtureSync('<button>Second Target</button>');
186-
secondPopover.target = secondTarget;
187-
secondPopover.trigger = [];
188-
secondPopover.renderer = (root) => {
189-
root.innerHTML = '<button>Second Popover content</button>';
190-
secondPopoverContent = root.firstElementChild;
191-
};
169+
[popover1, popover2] = fixtureSync(`
170+
<div>
171+
<vaadin-popover>
172+
<button>Content 1</button>
173+
</vaadin-popover>
174+
<vaadin-popover>
175+
<button>Content 2</button>
176+
</vaadin-popover>
177+
</div>
178+
`).children;
179+
180+
[target1, target2] = fixtureSync(`
181+
<div>
182+
<button>Target 1</button>
183+
<button>Target 2</button>
184+
</div>
185+
`).children;
186+
187+
popover1.target = target1;
188+
popover2.target = target2;
189+
190+
content1 = popover1.firstElementChild;
191+
content2 = popover2.firstElementChild;
192+
193+
popover2.trigger = [];
194+
192195
await nextRender();
193196
});
194197

195198
describe('focus', () => {
196199
beforeEach(() => {
197-
popover.trigger = ['focus'];
200+
popover1.trigger = ['focus'];
198201
});
199202

200203
it('should close the popover when focus moves from target to non-nested popover', async () => {
201-
target.focus();
204+
target1.focus();
202205
await nextRender();
203206

204207
// open second popover
205-
secondPopover.opened = true;
208+
popover2.opened = true;
206209
await nextRender();
207210

208-
secondPopoverContent.focus();
211+
content2.focus();
209212

210-
expect(popover.opened).to.be.false;
213+
expect(popover1.opened).to.be.false;
211214
});
212215

213216
it('should close when focus moves from the overlay to non-nested popover', async () => {
214-
target.focus();
217+
target1.focus();
215218
await nextRender();
216219

217-
popoverContent.focus();
220+
content1.focus();
218221
await nextRender();
219-
expect(popover.opened).to.be.true;
222+
expect(popover1.opened).to.be.true;
220223

221224
// open second popover
222-
secondPopover.opened = true;
225+
popover2.opened = true;
223226
await nextRender();
224227

225-
secondPopoverContent.focus();
228+
content2.focus();
226229
await nextRender();
227230

228-
expect(popover.opened).to.be.false;
231+
expect(popover1.opened).to.be.false;
229232
});
230233
});
231234

232235
describe('hover', () => {
233236
beforeEach(() => {
234-
popover.trigger = ['hover'];
237+
popover1.trigger = ['hover'];
235238
});
236239

237240
it('should close the popover when mouse leaves target to non-nested popover', async () => {
238-
mouseenter(target);
241+
mouseenter(target1);
239242
await nextRender();
240243

241244
// open second popover
242-
secondPopover.opened = true;
245+
popover2.opened = true;
243246
await nextRender();
244247

245-
mouseleave(target, secondPopoverContent);
246-
await nextUpdate(popover);
248+
mouseleave(target1, content2);
249+
await nextUpdate(popover1);
247250

248-
expect(popover.opened).to.be.false;
251+
expect(popover1.opened).to.be.false;
249252
});
250253

251254
it('should close when mouse leaves the overlay to non-nested popover', async () => {
252-
mouseenter(target);
255+
mouseenter(target1);
253256
await nextRender();
254257

255-
mouseenter(popoverContent);
258+
mouseenter(content1);
256259
await nextRender();
257-
expect(popover.opened).to.be.true;
260+
expect(popover1.opened).to.be.true;
258261

259262
// open second popover
260-
secondPopover.opened = true;
263+
popover2.opened = true;
261264
await nextRender();
262265

263-
mouseleave(popoverContent, secondPopoverContent);
264-
await nextUpdate(popover);
266+
mouseleave(content1, content2);
267+
await nextUpdate(popover1);
265268

266-
expect(popover.opened).to.be.false;
269+
expect(popover1.opened).to.be.false;
267270
});
268271
});
269272
});

0 commit comments

Comments
 (0)