Skip to content

Commit 61ffa60

Browse files
committed
test: improve test case
1 parent c6b383e commit 61ffa60

File tree

1 file changed

+213
-15
lines changed

1 file changed

+213
-15
lines changed

test/lib/Router.test.ts

Lines changed: 213 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { strict as assert } from 'assert';
22
import ServerDriver from '../../src/driver/Server';
3-
import { IRouteConfig, IRouter } from '../../src/interface/router';
3+
import { ILocation, RouteActionType } from '../../src/interface/common';
4+
import { IPopNavigationOptions, IRouteConfig, IRouter, RouteEventType } from '../../src/interface/router';
45
import RouteManager from '../../src/lib/route/RouteManager';
56
import Router from '../../src/lib/Router';
67
// tslint:disable: max-classes-per-file
@@ -197,21 +198,22 @@ describe('src/lib/Router.ts', () => {
197198
it('the wrong parameter n should be ok', () => {
198199
class TestDriver extends ServerDriver {
199200
public pop(n: number, payload?: unknown): void {
200-
assert.equal(1, 2);
201-
assert.equal(n, 1);
202-
assert.equal(payload, undefined);
201+
assert.equal(n, 2);
202+
assert.equal((payload as any).transition, undefined);
203203
}
204204
}
205-
const router = new Router({ routes: [] }, new TestDriver());
206-
router.pop({ n: 100 });
207-
class TestDriver1 extends ServerDriver {
208-
public pop(n: number, payload?: unknown): void {
209-
assert.equal(n, 1);
210-
assert.equal(payload, undefined);
205+
const routes = [
206+
{
207+
path: 'test1',
208+
component: 'aa'
211209
}
212-
}
213-
const router1 = new Router({ routes: [] }, new TestDriver1());
214-
router1.pop({ n: 0 });
210+
];
211+
const driver = new TestDriver();
212+
driver.push('/test1?a=2');
213+
const router = new Router({ routes }, driver);
214+
driver.push('/test1?a=3');
215+
driver.push('/test1?a=4');
216+
router.pop({ n: 100 });
215217
});
216218
});
217219
it('Router#replace');
@@ -227,8 +229,204 @@ describe('src/lib/Router.ts', () => {
227229
assert.equal(router.currentRouteInfo!.index, 0);
228230
assert.equal(router.currentRouteInfo!.route.name, '');
229231
});
230-
it('Router#prepush');
231-
it('Router#prepop');
232+
describe('Router#prepush', () => {
233+
it('route info should be correct', done => {
234+
let id: string | undefined;
235+
class TestDriver extends ServerDriver {
236+
public generateNextId() {
237+
id = super.generateNextId();
238+
return id;
239+
}
240+
}
241+
const driver = new TestDriver();
242+
driver.push('/test1?a=2');
243+
const routes = [
244+
{
245+
path: 'test1',
246+
component: 'aa'
247+
}
248+
];
249+
250+
const router = new Router({ routes }, driver);
251+
router.on(RouteEventType.WILL_CHANGE, (type, route, transitionOption) => {
252+
assert.equal(type, RouteActionType.PUSH);
253+
assert(route);
254+
assert.equal(route!.index, 1);
255+
assert.equal(route!.route.id, id);
256+
assert.equal(route!.route.path, '/test1?a=3');
257+
done();
258+
});
259+
router.prepush('/test1?a=3');
260+
assert(id);
261+
});
262+
it('incorrect path should be ok', done => {
263+
class TestDriver extends ServerDriver {
264+
public deprecateNextId() {
265+
done();
266+
}
267+
}
268+
const driver = new TestDriver();
269+
driver.push('/test1?a=2');
270+
const routes = [
271+
{
272+
path: 'test1',
273+
component: 'aa'
274+
}
275+
];
276+
277+
const router = new Router({ routes }, driver);
278+
router.on(RouteEventType.WILL_CHANGE, (type, route, transitionOption) => {
279+
assert.fail('should not emit events');
280+
});
281+
router.prepush('/test2?a=3');
282+
});
283+
it('cancel prepush should be ok', done => {
284+
let deprecatedNextId = false;
285+
class TestDriver extends ServerDriver {
286+
public deprecateNextId() {
287+
deprecatedNextId = true;
288+
}
289+
}
290+
const driver = new TestDriver();
291+
driver.push('/test1?a=2');
292+
const routes = [
293+
{
294+
path: 'test1',
295+
component: 'aa'
296+
}
297+
];
298+
299+
const router = new Router({ routes }, driver);
300+
router.on(RouteEventType.CANCEL_CHANGE, route => {
301+
assert(deprecatedNextId);
302+
done();
303+
});
304+
const confirm = router.prepush('/test1?a=3');
305+
confirm(true);
306+
});
307+
it('confirm prepush should be ok', done => {
308+
class TestRouter extends Router<string> {
309+
public push(path: ILocation) {
310+
assert.equal(path, '/test1?a=3');
311+
done();
312+
}
313+
}
314+
const driver = new ServerDriver();
315+
driver.push('/test1?a=2');
316+
const routes = [
317+
{
318+
path: 'test1',
319+
component: 'aa'
320+
}
321+
];
322+
323+
const router = new TestRouter({ routes }, driver);
324+
const confirm = router.prepush('/test1?a=3');
325+
confirm();
326+
});
327+
});
328+
describe('Router#prepop', () => {
329+
it('empty stack should be ok', () => {
330+
const routes = [
331+
{
332+
path: 'test1',
333+
component: 'aa'
334+
}
335+
];
336+
const driver = new ServerDriver();
337+
driver.push('/test1?a=2');
338+
const router = new Router({ routes }, driver);
339+
router.on(RouteEventType.WILL_CHANGE, type => {
340+
assert.fail('should not emit events');
341+
});
342+
router.prepop();
343+
});
344+
it('prepop with confirm should be ok', done => {
345+
const routes = [
346+
{
347+
path: 'test1',
348+
component: 'aa'
349+
}
350+
];
351+
const driver = new ServerDriver();
352+
driver.push('/test1?a=2');
353+
const router = new Router({ routes }, driver);
354+
driver.push('/test1?a=3');
355+
356+
router.on(RouteEventType.WILL_CHANGE, (type, route, transition) => {
357+
assert.equal(type, RouteActionType.POP);
358+
assert(route);
359+
assert.equal(route!.index, 0);
360+
assert.equal(route!.route.path, '/test1?a=2');
361+
done();
362+
});
363+
router.prepop();
364+
});
365+
it('cancel prepop should be ok', done => {
366+
const driver = new ServerDriver();
367+
driver.push('/test1?a=2');
368+
const routes = [
369+
{
370+
path: 'test1',
371+
component: 'aa'
372+
}
373+
];
374+
375+
const router = new Router({ routes }, driver);
376+
driver.push('/test1?a=3');
377+
router.on(RouteEventType.CANCEL_CHANGE, route => {
378+
done();
379+
});
380+
const confirm = router.prepop();
381+
confirm(true);
382+
});
383+
it('confirm prepop should be ok', done => {
384+
class TestRouter extends Router<string> {
385+
public pop<T extends Partial<IPopNavigationOptions>>(option?: T) {
386+
assert.equal(option!.transition, 'test');
387+
done();
388+
}
389+
}
390+
const driver = new ServerDriver();
391+
driver.push('/test1?a=2');
392+
const routes = [
393+
{
394+
path: 'test1',
395+
component: 'aa'
396+
}
397+
];
398+
399+
const router = new TestRouter({ routes }, driver);
400+
driver.push('/test1?a=3');
401+
driver.push('/test1?a=4');
402+
403+
const confirm = router.prepop({ transition: 'test', n: 2 });
404+
confirm();
405+
});
406+
it('invalid prepop params should be ok', done => {
407+
class TestRouter extends Router<string> {
408+
public pop<T extends Partial<IPopNavigationOptions>>(option?: T) {
409+
assert.equal(option!.transition, 'test');
410+
done();
411+
}
412+
}
413+
const driver = new ServerDriver();
414+
driver.push('/test1?a=2');
415+
const routes = [
416+
{
417+
path: 'test1',
418+
component: 'aa'
419+
}
420+
];
421+
422+
const router = new TestRouter({ routes }, driver);
423+
driver.push('/test1?a=3');
424+
driver.push('/test1?a=4');
425+
426+
const confirm = router.prepop({ transition: 'test', n: 100 });
427+
confirm();
428+
});
429+
});
232430
it('Router#prereplace');
233431
});
234432

0 commit comments

Comments
 (0)