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