Skip to content

Commit 525544a

Browse files
authored
test: Minor clean up of router test suite (#76)
* test: Remove extraneous timeouts * test: Fix 'scope' test names * test: Further revisions to tests
1 parent 89140b7 commit 525544a

File tree

1 file changed

+27
-43
lines changed

1 file changed

+27
-43
lines changed

test/router.test.js

Lines changed: 27 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ import './setup.js';
1212
const expect = chai.expect;
1313
chai.use(sinonChai);
1414

15+
/**
16+
* Usage:
17+
* - `await sleep(1)` for nav + loc/pushState/sync component check
18+
* - `await sleep(10)` for nav + async component check
19+
*/
1520
const sleep = ms => new Promise(r => setTimeout(r, ms));
1621

1722
// delayed lazy()
@@ -335,8 +340,6 @@ describe('Router', () => {
335340
scratch
336341
);
337342

338-
await sleep(10);
339-
340343
expect(scratch).to.have.property('innerHTML', '<h1>a</h1>');
341344
expect(renderRefCount).to.equal(2);
342345

@@ -401,7 +404,7 @@ describe('Router', () => {
401404
loadStart.resetHistory();
402405
loadEnd.resetHistory();
403406
routeChange.resetHistory();
404-
await sleep(10);
407+
await sleep(1);
405408

406409
expect(scratch).to.have.property('innerHTML', '<h1>A</h1><p>hello</p>');
407410
expect(A).to.have.been.calledWith({ path: '/', query: {}, params: {}, rest: '' });
@@ -417,7 +420,7 @@ describe('Router', () => {
417420
<p>hello</p>
418421
</>
419422
);
420-
const A = sinon.fake(groggy(() => route('A'), 1));
423+
const A = sinon.fake(() => route('A'));
421424
const B = sinon.fake(groggy(() => route('B'), 1));
422425
const loadStart = sinon.fake();
423426
const loadEnd = sinon.fake();
@@ -440,15 +443,12 @@ describe('Router', () => {
440443
scratch
441444
);
442445

443-
await sleep(10);
444-
445446
A.resetHistory();
446447
loadStart.resetHistory();
447448
loadEnd.resetHistory();
448449
routeChange.resetHistory();
449450

450451
loc.route('/b');
451-
452452
await sleep(1);
453453

454454
expect(loadStart).to.have.been.calledWith('/b');
@@ -459,7 +459,6 @@ describe('Router', () => {
459459
loadStart.resetHistory();
460460
loadEnd.resetHistory();
461461
routeChange.resetHistory();
462-
463462
await sleep(10);
464463

465464
expect(scratch).to.have.property('innerHTML', '<h1>B</h1><p>hello</p>');
@@ -497,6 +496,7 @@ describe('Router', () => {
497496

498497
await sleep(10);
499498

499+
expect(loadEnd).to.have.been.calledWith('/');
500500
loadEnd.resetHistory();
501501

502502
set('2');
@@ -543,7 +543,6 @@ describe('Router', () => {
543543
</LocationProvider>,
544544
scratch
545545
);
546-
await sleep(10);
547546
Route.resetHistory();
548547
clickHandler.resetHistory();
549548
pushState.resetHistory();
@@ -554,8 +553,6 @@ describe('Router', () => {
554553
// these should all be intercepted by the router.
555554
for (const target of shouldIntercept) {
556555
it(`should intercept clicks on links with ${getName(target)}`, async () => {
557-
await sleep(10);
558-
559556
const sel = target == null ? `a:not([target])` : `a[target="${target}"]`;
560557
const el = scratch.querySelector(sel);
561558
if (!el) throw Error(`Unable to find link: ${sel}`);
@@ -572,8 +569,6 @@ describe('Router', () => {
572569
// these should all navigate.
573570
for (const target of shouldNavigate) {
574571
it(`should allow default browser navigation for links with ${getName(target)}`, async () => {
575-
await sleep(10);
576-
577572
const sel = target == null ? `a:not([target])` : `a[target="${target}"]`;
578573
const el = scratch.querySelector(sel);
579574
if (!el) throw Error(`Unable to find link: ${sel}`);
@@ -626,11 +621,9 @@ describe('Router', () => {
626621
</LocationProvider>,
627622
scratch
628623
);
629-
await sleep(10);
630624

631625
for (const url of shouldIntercept) {
632-
const el = scratch.querySelector(`a[href="${url}"]`);
633-
el.click();
626+
scratch.querySelector(`a[href="${url}"]`).click();
634627
await sleep(1);
635628
expect(loc).to.deep.include({ url });
636629
expect(pushState).to.have.been.calledWith(null, '', url);
@@ -641,19 +634,17 @@ describe('Router', () => {
641634
}
642635
});
643636

644-
it('should allow default browser navigation for links not matching the `limit` props (string)', async () => {
637+
it('should allow default browser navigation for links not matching the `scope` props (string)', async () => {
645638
render(
646639
<LocationProvider scope="app">
647640
<Links />
648641
<ShallowLocation />
649642
</LocationProvider>,
650643
scratch
651644
);
652-
await sleep(10);
653645

654646
for (const url of shouldNavigate) {
655-
const el = scratch.querySelector(`a[href="${url}"]`);
656-
el.click();
647+
scratch.querySelector(`a[href="${url}"]`).click();
657648
await sleep(1);
658649
expect(pushState).not.to.have.been.called;
659650
expect(clickHandler).to.have.been.called;
@@ -663,19 +654,17 @@ describe('Router', () => {
663654
}
664655
});
665656

666-
it('should intercept clicks on links matching the `limit` props (regex)', async () => {
657+
it('should intercept clicks on links matching the `scope` props (regex)', async () => {
667658
render(
668659
<LocationProvider scope={/^\/app/}>
669660
<Links />
670661
<ShallowLocation />
671662
</LocationProvider>,
672663
scratch
673664
);
674-
await sleep(10);
675665

676666
for (const url of shouldIntercept) {
677-
const el = scratch.querySelector(`a[href="${url}"]`);
678-
el.click();
667+
scratch.querySelector(`a[href="${url}"]`).click();
679668
await sleep(1);
680669
expect(loc).to.deep.include({ url });
681670
expect(pushState).to.have.been.calledWith(null, '', url);
@@ -686,19 +675,17 @@ describe('Router', () => {
686675
}
687676
});
688677

689-
it('should allow default browser navigation for links not matching the `limit` props (regex)', async () => {
678+
it('should allow default browser navigation for links not matching the `scope` props (regex)', async () => {
690679
render(
691680
<LocationProvider scope={/^\/app/}>
692681
<Links />
693682
<ShallowLocation />
694683
</LocationProvider>,
695684
scratch
696685
);
697-
await sleep(10);
698686

699687
for (const url of shouldNavigate) {
700-
const el = scratch.querySelector(`a[href="${url}"]`);
701-
el.click();
688+
scratch.querySelector(`a[href="${url}"]`).click();
702689
await sleep(1);
703690
expect(pushState).not.to.have.been.called;
704691
expect(clickHandler).to.have.been.called;
@@ -723,14 +710,13 @@ describe('Router', () => {
723710
scratch
724711
);
725712

726-
await sleep(20);
727-
728713
expect(scrollTo).not.to.have.been.called;
729714
expect(Route).to.have.been.calledOnce;
730715
Route.resetHistory();
731716

732717
loc.route('/programmatic');
733-
await sleep(10);
718+
await sleep(1);
719+
734720
expect(loc).to.deep.include({ url: '/programmatic' });
735721
expect(scrollTo).to.have.been.calledWith(0, 0);
736722
expect(scrollTo).to.have.been.calledOnce;
@@ -739,14 +725,14 @@ describe('Router', () => {
739725
scrollTo.resetHistory();
740726

741727
scratch.querySelector('a').click();
742-
await sleep(10);
728+
await sleep(1);
729+
743730
expect(loc).to.deep.include({ url: '/link' });
744731
expect(scrollTo).to.have.been.calledWith(0, 0);
745732
expect(scrollTo).to.have.been.calledOnce;
746733
expect(Route).to.have.been.calledOnce;
747734
Route.resetHistory();
748735

749-
await sleep(10);
750736
scrollTo.restore();
751737
});
752738

@@ -773,20 +759,19 @@ describe('Router', () => {
773759

774760
expect(Route).to.have.been.calledOnce;
775761
Route.resetHistory();
776-
await sleep(20);
777762

778763
scratch.querySelector('a[href="#foo"]').click();
779-
await sleep(20);
764+
await sleep(1);
765+
780766
// NOTE: we don't (currently) propagate in-page anchor navigations into context, to avoid useless renders.
781767
expect(loc).to.deep.include({ url: '/' });
782768
expect(Route).not.to.have.been.called;
783769
expect(pushState).not.to.have.been.called;
784770
expect(location.hash).to.equal('#foo');
785771

786-
await sleep(10);
787-
788772
scratch.querySelector('a[href="/other#bar"]').click();
789-
await sleep(10);
773+
await sleep(1);
774+
790775
expect(Route).to.have.been.calledOnce;
791776
expect(loc).to.deep.include({ url: '/other#bar', path: '/other' });
792777
expect(pushState).to.have.been.called;
@@ -813,10 +798,10 @@ describe('Router', () => {
813798

814799
expect(Route).to.have.been.calledOnce;
815800
Route.resetHistory();
816-
await sleep(20);
817801

818802
scratch.querySelector('a[href="/foo#foo"]').click();
819-
await sleep(20);
803+
await sleep(10);
804+
820805
expect(Route).to.have.been.calledOnce;
821806
expect(loc).to.deep.include({ url: '/foo#foo', path: '/foo' });
822807
expect(pushState).to.have.been.called;
@@ -849,7 +834,7 @@ describe('Router', () => {
849834
);
850835

851836
scratch.querySelector('a[href="/foo/bar/bob"]').click();
852-
await sleep(20);
837+
await sleep(1);
853838
expect(route).to.deep.include({ path: '/bob', params: { id: 'bar' } });
854839
});
855840

@@ -878,7 +863,7 @@ describe('Router', () => {
878863
);
879864

880865
scratch.querySelector('a[href="/foo/bar/bob"]').click();
881-
await sleep(20);
866+
await sleep(1);
882867
expect(params).to.deep.include({ id: 'bar' });
883868
});
884869

@@ -896,7 +881,6 @@ describe('Router', () => {
896881
scratch
897882
);
898883

899-
await sleep(20);
900884
loc.route("/foo", true);
901885
expect(pushState).not.to.have.been.called;
902886
expect(replaceState).to.have.been.calledWith(null, "", "/foo");

0 commit comments

Comments
 (0)