mirror of https://github.com/Squidex/squidex.git
23 changed files with 254 additions and 484 deletions
@ -0,0 +1,38 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|||
*/ |
|||
|
|||
import { IMock, Mock, Times } from 'typemoq'; |
|||
import { Observable } from 'rxjs'; |
|||
|
|||
import { AppsState } from '@app/shared'; |
|||
|
|||
import { LoadAppsGuard } from './load-apps.guard'; |
|||
|
|||
describe('LoadAppsGuard', () => { |
|||
let appsState: IMock<AppsState>; |
|||
let appGuard: LoadAppsGuard; |
|||
|
|||
beforeEach(() => { |
|||
appsState = Mock.ofType<AppsState>(); |
|||
appGuard = new LoadAppsGuard(appsState.object); |
|||
}); |
|||
|
|||
it('should load apps', () => { |
|||
appsState.setup(x => x.loadApps()) |
|||
.returns(() => Observable.of(null)); |
|||
|
|||
let result = false; |
|||
|
|||
appGuard.canActivate().subscribe(value => { |
|||
result = value; |
|||
}); |
|||
|
|||
expect(result).toBeTruthy(); |
|||
|
|||
appsState.verify(x => x.loadApps(), Times.once()); |
|||
}); |
|||
}); |
|||
@ -1,90 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|||
*/ |
|||
|
|||
import { IMock, Mock } from 'typemoq'; |
|||
import { Observable } from 'rxjs'; |
|||
|
|||
import { |
|||
AppLanguagesDto, |
|||
AppLanguagesService, |
|||
Version |
|||
} from '@app/shared'; |
|||
|
|||
import { ResolveAppLanguagesGuard } from './resolve-app-languages.guard'; |
|||
import { RouterMockup } from './router-mockup'; |
|||
|
|||
describe('ResolveAppLanguagesGuard', () => { |
|||
const route = { |
|||
params: { }, |
|||
parent: { |
|||
params: { |
|||
appName: 'my-app' |
|||
} |
|||
} |
|||
}; |
|||
|
|||
let appLanguagesService: IMock<AppLanguagesService>; |
|||
|
|||
beforeEach(() => { |
|||
appLanguagesService = Mock.ofType(AppLanguagesService); |
|||
}); |
|||
|
|||
it('should throw if route does not contain parameter', () => { |
|||
const guard = new ResolveAppLanguagesGuard(appLanguagesService.object, <any>new RouterMockup()); |
|||
|
|||
expect(() => guard.resolve(<any>{ params: {} }, <any>{})).toThrow('Route must contain app name.'); |
|||
}); |
|||
|
|||
it('should navigate to 404 page if languages are not found', (done) => { |
|||
appLanguagesService.setup(x => x.getLanguages('my-app')) |
|||
.returns(() => Observable.of(null!)); |
|||
const router = new RouterMockup(); |
|||
|
|||
const guard = new ResolveAppLanguagesGuard(appLanguagesService.object, <any>router); |
|||
|
|||
guard.resolve(<any>route, <any>{}) |
|||
.subscribe(result => { |
|||
expect(result).toBeFalsy(); |
|||
expect(router.lastNavigation).toEqual(['/404']); |
|||
|
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should navigate to 404 page if languages loading fails', (done) => { |
|||
appLanguagesService.setup(x => x.getLanguages('my-app')) |
|||
.returns(() => Observable.throw(null!)); |
|||
const router = new RouterMockup(); |
|||
|
|||
const guard = new ResolveAppLanguagesGuard(appLanguagesService.object, <any>router); |
|||
|
|||
guard.resolve(<any>route, <any>{}) |
|||
.subscribe(result => { |
|||
expect(result).toBeFalsy(); |
|||
expect(router.lastNavigation).toEqual(['/404']); |
|||
|
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should return languages if loading succeeded', (done) => { |
|||
const languages = new AppLanguagesDto([], new Version('2')); |
|||
|
|||
appLanguagesService.setup(x => x.getLanguages('my-app')) |
|||
.returns(() => Observable.of(languages)); |
|||
const router = new RouterMockup(); |
|||
|
|||
const guard = new ResolveAppLanguagesGuard(appLanguagesService.object, <any>router); |
|||
|
|||
guard.resolve(<any>route, <any>{}) |
|||
.subscribe(result => { |
|||
expect(result).toBe(languages.languages); |
|||
|
|||
done(); |
|||
}); |
|||
}); |
|||
}); |
|||
@ -1,105 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|||
*/ |
|||
|
|||
import { IMock, Mock } from 'typemoq'; |
|||
import { Observable } from 'rxjs'; |
|||
|
|||
import { ContentsService } from '@app/shared'; |
|||
|
|||
import { ResolveContentGuard } from './resolve-content.guard'; |
|||
import { RouterMockup } from './router-mockup'; |
|||
|
|||
describe('ResolveContentGuard', () => { |
|||
const route = { |
|||
params: { |
|||
appName: 'my-app' |
|||
}, |
|||
parent: { |
|||
params: { |
|||
schemaName: 'my-schema' |
|||
}, |
|||
parent: { |
|||
params: { |
|||
contentId: '123' |
|||
} |
|||
} |
|||
} |
|||
}; |
|||
|
|||
let appsStore: IMock<ContentsService>; |
|||
|
|||
beforeEach(() => { |
|||
appsStore = Mock.ofType(ContentsService); |
|||
}); |
|||
|
|||
it('should throw if route does not contain app name', () => { |
|||
const guard = new ResolveContentGuard(appsStore.object, <any>new RouterMockup()); |
|||
|
|||
expect(() => guard.resolve(<any>{ params: {} }, <any>{})).toThrow('Route must contain app name.'); |
|||
}); |
|||
|
|||
it('should throw if route does not contain schema name', () => { |
|||
const guard = new ResolveContentGuard(appsStore.object, <any>new RouterMockup()); |
|||
|
|||
expect(() => guard.resolve(<any>{ params: { appName: 'my-app' } }, <any>{})).toThrow('Route must contain schema name.'); |
|||
}); |
|||
|
|||
it('should throw if route does not contain content id', () => { |
|||
const guard = new ResolveContentGuard(appsStore.object, <any>new RouterMockup()); |
|||
|
|||
expect(() => guard.resolve(<any>{ params: { appName: 'my-app', schemaName: 'my-schema' } }, <any>{})).toThrow('Route must contain content id.'); |
|||
}); |
|||
|
|||
it('should navigate to 404 page if schema is not found', (done) => { |
|||
appsStore.setup(x => x.getContent('my-app', 'my-schema', '123')) |
|||
.returns(() => Observable.of(null!)); |
|||
const router = new RouterMockup(); |
|||
|
|||
const guard = new ResolveContentGuard(appsStore.object, <any>router); |
|||
|
|||
guard.resolve(<any>route, <any>{}) |
|||
.subscribe(result => { |
|||
expect(result).toBeFalsy(); |
|||
expect(router.lastNavigation).toEqual(['/404']); |
|||
|
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should navigate to 404 page if schema loading fails', (done) => { |
|||
appsStore.setup(x => x.getContent('my-app', 'my-schema', '123')) |
|||
.returns(() => Observable.throw(null!)); |
|||
const router = new RouterMockup(); |
|||
|
|||
const guard = new ResolveContentGuard(appsStore.object, <any>router); |
|||
|
|||
guard.resolve(<any>route, <any>{}) |
|||
.subscribe(result => { |
|||
expect(result).toBeFalsy(); |
|||
expect(router.lastNavigation).toEqual(['/404']); |
|||
|
|||
done(); |
|||
}); |
|||
}); |
|||
|
|||
it('should return content if loading succeeded', (done) => { |
|||
const content: any = {}; |
|||
|
|||
appsStore.setup(x => x.getContent('my-app', 'my-schema', '123')) |
|||
.returns(() => Observable.of(content)); |
|||
const router = new RouterMockup(); |
|||
|
|||
const guard = new ResolveContentGuard(appsStore.object, <any>router); |
|||
|
|||
guard.resolve(<any>route, <any>{}) |
|||
.subscribe(result => { |
|||
expect(result).toBe(content); |
|||
|
|||
done(); |
|||
}); |
|||
}); |
|||
}); |
|||
@ -1,14 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. |
|||
*/ |
|||
|
|||
export class RouterMockup { |
|||
public lastNavigation: any[]; |
|||
|
|||
public navigate(target: any[]) { |
|||
this.lastNavigation = target; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue