diff options
| author | 杨宇千 <crupest@outlook.com> | 2019-04-11 20:02:33 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-11 20:02:33 +0800 |
| commit | 5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95 (patch) | |
| tree | 695f7fc0bd2f6d940f64739a1f1f500c36806cef /Timeline/ClientApp/src/app/test-utilities | |
| parent | 1c9edc5914869a3bbde20742c483182636ee4d43 (diff) | |
| parent | c28941c6d86f8ea33521bba49d811bf3ff60b3d1 (diff) | |
| download | timeline-5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95.tar.gz timeline-5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95.tar.bz2 timeline-5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95.zip | |
Merge pull request #17 from crupest/15-user
Remember me and log out feature.
Diffstat (limited to 'Timeline/ClientApp/src/app/test-utilities')
4 files changed, 49 insertions, 3 deletions
diff --git a/Timeline/ClientApp/src/app/test-utilities/activated-route.mock.ts b/Timeline/ClientApp/src/app/test-utilities/activated-route.mock.ts index 1743e615..40484387 100644 --- a/Timeline/ClientApp/src/app/test-utilities/activated-route.mock.ts +++ b/Timeline/ClientApp/src/app/test-utilities/activated-route.mock.ts @@ -1,11 +1,13 @@ -import { ParamMap } from '@angular/router'; +import { ParamMap, ActivatedRouteSnapshot, ActivatedRoute } from '@angular/router'; import { Observable, BehaviorSubject } from 'rxjs'; import { map } from 'rxjs/operators'; +import { PartialMock } from './mock'; + export interface ParamMapCreator { [name: string]: string | string[]; } -export class MockActivatedRouteSnapshot { +export class MockActivatedRouteSnapshot implements PartialMock<ActivatedRouteSnapshot> { private paramMapInternal: ParamMap; @@ -44,7 +46,7 @@ export class MockActivatedRouteSnapshot { } } -export class MockActivatedRoute { +export class MockActivatedRoute implements PartialMock<ActivatedRoute> { snapshot$ = new BehaviorSubject<MockActivatedRouteSnapshot>(new MockActivatedRouteSnapshot()); diff --git a/Timeline/ClientApp/src/app/test-utilities/mock.ts b/Timeline/ClientApp/src/app/test-utilities/mock.ts new file mode 100644 index 00000000..c3e368f0 --- /dev/null +++ b/Timeline/ClientApp/src/app/test-utilities/mock.ts @@ -0,0 +1,7 @@ +export type Mock<T> = { + [P in keyof T]: T[P] extends Function ? T[P] : T[P] | Mock<T[P]>; +}; + +export type PartialMock<T> = { + [P in keyof T]?: T[P] extends Function ? T[P] : T[P] | PartialMock<T[P]> | Mock<T[P]>; +}; diff --git a/Timeline/ClientApp/src/app/test-utilities/router-link.mock.ts b/Timeline/ClientApp/src/app/test-utilities/router-link.mock.ts new file mode 100644 index 00000000..7f4cde4d --- /dev/null +++ b/Timeline/ClientApp/src/app/test-utilities/router-link.mock.ts @@ -0,0 +1,9 @@ +import { Directive, Input } from '@angular/core'; + +@Directive({ + /* tslint:disable-next-line:directive-selector*/ + selector: '[routerLink]' +}) +export class RouterLinkStubDirective { + @Input('routerLink') linkParams: any; +} diff --git a/Timeline/ClientApp/src/app/test-utilities/storage.mock.ts b/Timeline/ClientApp/src/app/test-utilities/storage.mock.ts new file mode 100644 index 00000000..0ba5aa35 --- /dev/null +++ b/Timeline/ClientApp/src/app/test-utilities/storage.mock.ts @@ -0,0 +1,28 @@ +import { Mock } from './mock'; +import { nullIfUndefined } from '../utilities/language-untilities'; + +export function createMockStorage(): Mock<Storage> { + const map: { [key: string]: string } = {}; + return { + get length(): number { + return Object.keys(map).length; + }, + key(index: number): string | null { + const keys = Object.keys(map); + if (index >= keys.length) { return null; } + return keys[index]; + }, + clear() { + Object.keys(map).forEach(key => delete map.key); + }, + getItem(key: string): string | null { + return nullIfUndefined(map[key]); + }, + setItem(key: string, value: string) { + map[key] = value; + }, + removeItem(key: string) { + delete map[key]; + } + }; +} |
