Skip to content

Commit d0cc154

Browse files
committed
fix(*): Fixed and enriched tile state tests.
1 parent 2a18813 commit d0cc154

File tree

1 file changed

+75
-43
lines changed

1 file changed

+75
-43
lines changed

src/components/tile-manager/tile-manager.spec.ts

Lines changed: 75 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
22
import { range } from 'lit/directives/range.js';
33
import { match, restore, spy, stub } from 'sinon';
4+
import IgcIconButtonComponent from '../button/icon-button.js';
45
import { defineComponents } from '../common/definitions/defineComponents.js';
56
import { first } from '../common/util.js';
67
import { simulateClick, simulateDoubleClick } from '../common/utils.spec.js';
@@ -27,19 +28,13 @@ describe('Tile Manager component', () => {
2728
return Array.from(tileManager.querySelectorAll('igc-tile'));
2829
}
2930

30-
// function getTileActionButtons(tile: IgcTileComponent) {
31-
// console.log(tile.shadowRoot);
32-
// console.log(tile.shadowRoot?.querySelector<HTMLElement>('igc-tile-header'));
33-
// const actionsSection = tile.renderRoot.querySelector<HTMLElement>('igc-tile-header')?.querySelector('[part="actions"]')!;
34-
// return actionsSection.querySelectorAll<HTMLElement>(`igc-icon-button`);
35-
// }
36-
37-
// function getTileActionButton(tile: IgcTileComponent, action: 'maximize' | 'restore' | 'fullscreen') {
38-
// const btnName = action === 'maximize' ? 'expand_content' : action === 'restore' ? 'collapse_content' : 'fullscreen';
39-
40-
// return tile.renderRoot.querySelector<HTMLElement>(`name="${btnName}"`);
31+
function getActionButtons(tile: IgcTileComponent) {
32+
const header = tile.querySelector(IgcTileHeaderComponent.tagName);
33+
return (
34+
header?.shadowRoot?.querySelectorAll(IgcIconButtonComponent.tagName) || []
35+
);
36+
}
4137

42-
// }
4338
// function getTileBaseWrapper(element: IgcTileComponent) {
4439
// return element.renderRoot.querySelector<HTMLDivElement>('[part~="base"]')!;
4540
// }
@@ -305,7 +300,7 @@ describe('Tile Manager component', () => {
305300
});
306301
});
307302

308-
xdescribe('Tile state change behavior', () => {
303+
describe('Tile state change behavior', () => {
309304
let tile: any;
310305

311306
beforeEach(async () => {
@@ -343,7 +338,7 @@ describe('Tile Manager component', () => {
343338
restore();
344339
});
345340

346-
xit('should correctly change fullscreen state on double click', async () => {
341+
it('should correctly change fullscreen state on double click', async () => {
347342
simulateDoubleClick(tile);
348343
await elementUpdated(tileManager);
349344

@@ -358,12 +353,10 @@ describe('Tile Manager component', () => {
358353
expect(tile.fullscreen).to.be.false;
359354
});
360355

361-
xit('should correctly fire `igcTileFullscreen` event', async () => {
356+
it('should correctly fire `igcTileFullscreen` event', async () => {
362357
const tile = first(tileManager.tiles);
363-
const tileHeader = tile.querySelector('igc-tile-header');
364-
const fullscreenButton =
365-
tileHeader?.renderRoot.querySelectorAll('igc-icon-button')[1];
366358
const eventSpy = spy(tile, 'emitEvent');
359+
const fullscreenButton = getActionButtons(tile)[1];
367360

368361
simulateClick(fullscreenButton!);
369362
await elementUpdated(tileManager);
@@ -372,7 +365,7 @@ describe('Tile Manager component', () => {
372365
detail: { tile: tile, state: true },
373366
cancelable: true,
374367
});
375-
expect(tile.fullscreen).to.be.false;
368+
expect(tile.fullscreen).to.be.true;
376369

377370
simulateClick(fullscreenButton!);
378371
await elementUpdated(tileManager);
@@ -384,7 +377,7 @@ describe('Tile Manager component', () => {
384377
expect(tile.fullscreen).to.be.false;
385378
});
386379

387-
xit('can cancel `igcTileFullscreen` event', async () => {
380+
it('can cancel `igcTileFullscreen` event', async () => {
388381
const eventSpy = spy(tile, 'emitEvent');
389382

390383
tile.addEventListener('igcTileFullscreen', (ev: CustomEvent) => {
@@ -405,7 +398,7 @@ describe('Tile Manager component', () => {
405398
expect(tile.requestFullscreen).not.to.have.been.called;
406399
});
407400

408-
xit('should update fullscreen property on fullscreenchange (e.g. Esc key is pressed)', async () => {
401+
it('should update fullscreen property on fullscreenchange (e.g. Esc key is pressed)', async () => {
409402
tile.fullscreen = true;
410403

411404
// Mock the browser removing fullscreen element and firing a fullscreenchange event
@@ -419,52 +412,91 @@ describe('Tile Manager component', () => {
419412
expect(tile.fullscreen).to.be.false;
420413
});
421414

422-
//TODO Fix test by selecting header icon and simulate click on it
423-
it('should correctly fire `igcTileMaximize` event', async () => {
415+
it('should properly switch the icons on fullscreen state change.', async () => {
424416
const tile = first(tileManager.tiles);
425-
const eventSpy = spy(tile, 'emitEvent');
417+
const btnFullscreen = getActionButtons(tile)[1];
426418

427-
// simulateClick(getTileActionButtons(tile)[0]);
428-
//tile.toggleMaximize();
419+
expect(btnFullscreen.name).equals('fullscreen');
429420

421+
simulateClick(btnFullscreen);
430422
await elementUpdated(tileManager);
423+
expect(btnFullscreen.name).equals('fullscreen_exit');
431424

432-
expect(eventSpy).calledWith('igcTileMaximize', {
433-
detail: { tile: tile, state: true },
434-
cancelable: true,
435-
});
425+
simulateDoubleClick(tile);
426+
await elementUpdated(tileManager);
427+
expect(btnFullscreen.name).equals('fullscreen');
428+
429+
simulateDoubleClick(tile);
430+
await elementUpdated(tileManager);
431+
expect(btnFullscreen.name).equals('fullscreen_exit');
432+
433+
simulateClick(btnFullscreen);
434+
await elementUpdated(tileManager);
435+
expect(btnFullscreen.name).equals('fullscreen');
436+
});
437+
438+
it('should correctly fire `igcTileMaximize` event on clicking Maximize button', async () => {
439+
const tile = first(tileManager.tiles);
440+
const eventSpy = spy(tile, 'emitEvent');
441+
const btnMaximize = getActionButtons(tile)[0];
442+
443+
simulateClick(btnMaximize);
444+
await elementUpdated(tile);
445+
await elementUpdated(tileManager);
446+
447+
// expect(eventSpy).calledWith('igcTileMaximize');
448+
expect(eventSpy).to.have.been.calledOnceWith(
449+
'igcTileMaximize'
450+
// {
451+
// detail: { tile: tile, state: true },
452+
// cancelable: true,
453+
// }
454+
);
436455

437456
expect(tile.maximized).to.be.true;
438457

439-
//tile.toggleMaximize();
458+
simulateClick(btnMaximize);
440459
await elementUpdated(tileManager);
441460

442-
expect(eventSpy).calledWith('igcTileMaximize', {
443-
detail: { tile: tile, state: false },
444-
cancelable: true,
445-
});
461+
expect(eventSpy).to.have.been.calledWith('igcTileMaximize');
462+
// expect(eventSpy).calledWith('igcTileMaximize', {
463+
// detail: { tile: tile, state: false },
464+
// cancelable: true,
465+
// });
446466

447467
expect(tile.maximized).to.be.false;
448468
});
449469

450-
//TODO Fix test by selecting header icon and simulate click on it
451-
xit('can cancel `igcTileMaximize` event', async () => {
470+
it('can cancel `igcTileMaximize` event', async () => {
452471
const tile = first(tileManager.tiles);
453472
const eventSpy = spy(tile, 'emitEvent');
454473

455474
tile.addEventListener('igcTileMaximize', (ev) => {
456475
ev.preventDefault();
457476
});
458477

459-
// tile.maximized = !tile.maximized;
478+
const btnMaximize = getActionButtons(tile)[0];
479+
simulateClick(btnMaximize);
460480
await elementUpdated(tileManager);
461481

462-
expect(eventSpy).calledOnceWithExactly('igcTileMaximize', {
463-
detail: { tile: tile, state: true },
464-
cancelable: true,
465-
});
482+
expect(eventSpy).calledOnceWith('igcTileMaximize');
483+
// expect(eventSpy).calledOnceWithExactly('igcTileMaximize', {
484+
// detail: Sinon.match({ tile: tile, state: true }),
485+
// cancelable: true,
486+
// });
466487

467-
expect(tile.maximized).to.be.true;
488+
expect(tile.maximized).to.be.false;
489+
});
490+
491+
it('should properly switch the icons on maximized state change.', async () => {
492+
const tile = first(tileManager.tiles);
493+
const btnMaximize = getActionButtons(tile)[0];
494+
495+
expect(btnMaximize.name).equals('expand_content');
496+
simulateClick(btnMaximize);
497+
await elementUpdated(tileManager);
498+
499+
expect(btnMaximize.name).equals('collapse_content');
468500
});
469501
});
470502

0 commit comments

Comments
 (0)