From 9f93c08b21ff64a37b1a964cdca8ef02bd23d587 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 31 Jul 2018 14:43:07 +0200 Subject: [PATCH] Reduces TS size with tslib and added tests backup. --- .../administration/services/users.service.ts | 4 - .../shared/services/app-clients.service.ts | 4 - .../services/app-contributors.service.ts | 8 -- .../shared/services/app-languages.service.ts | 8 -- .../shared/services/app-patterns.service.ts | 8 -- .../app/shared/services/apps.service.ts | 4 - .../app/shared/services/assets.service.ts | 4 - .../shared/services/backups.service.spec.ts | 94 ++++++++++++++++++- .../app/shared/services/backups.service.ts | 6 +- .../shared/services/contents.service.spec.ts | 13 +++ .../app/shared/services/contents.service.ts | 6 +- .../app/shared/services/plans.service.ts | 8 -- .../app/shared/services/rules.service.spec.ts | 5 + .../app/shared/services/rules.service.ts | 8 -- src/Squidex/package.json | 1 + src/Squidex/tsconfig.json | 2 + 16 files changed, 116 insertions(+), 67 deletions(-) diff --git a/src/Squidex/app/features/administration/services/users.service.ts b/src/Squidex/app/features/administration/services/users.service.ts index 4b23dbff4..8ffa5cabb 100644 --- a/src/Squidex/app/features/administration/services/users.service.ts +++ b/src/Squidex/app/features/administration/services/users.service.ts @@ -24,10 +24,6 @@ export class UsersDto extends Model { ) { super(); } - - public with(value: Partial): UsersDto { - return this.clone(value); - } } export class UserDto extends Model { diff --git a/src/Squidex/app/shared/services/app-clients.service.ts b/src/Squidex/app/shared/services/app-clients.service.ts index 2d4186ecd..81aede153 100644 --- a/src/Squidex/app/shared/services/app-clients.service.ts +++ b/src/Squidex/app/shared/services/app-clients.service.ts @@ -27,10 +27,6 @@ export class AppClientsDto extends Model { ) { super(); } - - public with(value: Partial): AppClientsDto { - return this.clone(value); - } } export class AppClientDto extends Model { diff --git a/src/Squidex/app/shared/services/app-contributors.service.ts b/src/Squidex/app/shared/services/app-contributors.service.ts index 9b90e4ad9..bad2c9770 100644 --- a/src/Squidex/app/shared/services/app-contributors.service.ts +++ b/src/Squidex/app/shared/services/app-contributors.service.ts @@ -28,10 +28,6 @@ export class AppContributorsDto extends Model { ) { super(); } - - public with(value: Partial): AppContributorsDto { - return this.clone(value); - } } export class AppContributorDto extends Model { @@ -41,10 +37,6 @@ export class AppContributorDto extends Model { ) { super(); } - - public with(value: Partial): AppContributorDto { - return this.clone(value); - } } export class ContributorAssignedDto { diff --git a/src/Squidex/app/shared/services/app-languages.service.ts b/src/Squidex/app/shared/services/app-languages.service.ts index 936c30f04..7f68eaa6a 100644 --- a/src/Squidex/app/shared/services/app-languages.service.ts +++ b/src/Squidex/app/shared/services/app-languages.service.ts @@ -27,10 +27,6 @@ export class AppLanguagesDto extends Model { ) { super(); } - - public with(value: Partial): AppLanguagesDto { - return this.clone(value); - } } export class AppLanguageDto extends Model { @@ -43,10 +39,6 @@ export class AppLanguageDto extends Model { ) { super(); } - - public with(value: Partial): AppLanguageDto { - return this.clone(value); - } } export class AddAppLanguageDto { diff --git a/src/Squidex/app/shared/services/app-patterns.service.ts b/src/Squidex/app/shared/services/app-patterns.service.ts index b32979415..31f688a22 100644 --- a/src/Squidex/app/shared/services/app-patterns.service.ts +++ b/src/Squidex/app/shared/services/app-patterns.service.ts @@ -26,10 +26,6 @@ export class AppPatternsDto extends Model { ) { super(); } - - public with(value: Partial): AppPatternsDto { - return this.clone(value); - } } export class AppPatternDto extends Model { @@ -41,10 +37,6 @@ export class AppPatternDto extends Model { ) { super(); } - - public with(value: Partial): AppPatternDto { - return this.clone(value); - } } export class EditAppPatternDto { diff --git a/src/Squidex/app/shared/services/apps.service.ts b/src/Squidex/app/shared/services/apps.service.ts index 59d647ac4..792c8575d 100644 --- a/src/Squidex/app/shared/services/apps.service.ts +++ b/src/Squidex/app/shared/services/apps.service.ts @@ -31,10 +31,6 @@ export class AppDto extends Model { ) { super(); } - - public with(value: Partial): AppDto { - return this.clone(value); - } } export class CreateAppDto { diff --git a/src/Squidex/app/shared/services/assets.service.ts b/src/Squidex/app/shared/services/assets.service.ts index 0f781729b..e2436b4f7 100644 --- a/src/Squidex/app/shared/services/assets.service.ts +++ b/src/Squidex/app/shared/services/assets.service.ts @@ -29,10 +29,6 @@ export class AssetsDto extends Model { ) { super(); } - - public with(value: Partial): AssetsDto { - return this.clone(value); - } } export class AssetDto extends Model { diff --git a/src/Squidex/app/shared/services/backups.service.spec.ts b/src/Squidex/app/shared/services/backups.service.spec.ts index d61640fa2..22a51cb2d 100644 --- a/src/Squidex/app/shared/services/backups.service.spec.ts +++ b/src/Squidex/app/shared/services/backups.service.spec.ts @@ -13,7 +13,8 @@ import { ApiUrlConfig, BackupDto, BackupsService, - DateTime + DateTime, + RestoreDto } from './../'; describe('BackupsService', () => { @@ -74,6 +75,84 @@ describe('BackupsService', () => { ]); })); + it('should make get request to get restore', + inject([BackupsService, HttpTestingController], (backupsService: BackupsService, httpMock: HttpTestingController) => { + + let restore: RestoreDto; + + backupsService.getRestore().subscribe(result => { + restore = result!; + }); + + const req = httpMock.expectOne('http://service/p/api/apps/restore'); + + expect(req.request.method).toEqual('GET'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({ + url: 'http://url', + started: '2017-02-03', + stopped: '2017-02-04', + status: 'Failed', + log: [ + 'log1', + 'log2' + ] + }); + + expect(restore!).toEqual( + new RestoreDto('http://url', + DateTime.parseISO_UTC('2017-02-03'), + DateTime.parseISO_UTC('2017-02-04'), + 'Failed', + [ + 'log1', + 'log2' + ])); + })); + + it('should return null when get restore return 404', + inject([BackupsService, HttpTestingController], (backupsService: BackupsService, httpMock: HttpTestingController) => { + + let restore: RestoreDto | null; + + backupsService.getRestore().subscribe(result => { + restore = result; + }); + + const req = httpMock.expectOne('http://service/p/api/apps/restore'); + + expect(req.request.method).toEqual('GET'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}, { status: 404, statusText: '404' }); + + expect(restore!).toBeNull(); + })); + + it('should throw error when get restore return non 404', + inject([BackupsService, HttpTestingController], (backupsService: BackupsService, httpMock: HttpTestingController) => { + + let restore: RestoreDto | null; + let error: any; + + backupsService.getRestore().subscribe(result => { + restore = result; + }, err => { + error = err; + }); + + const req = httpMock.expectOne('http://service/p/api/apps/restore'); + + expect(req.request.method).toEqual('GET'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}, { status: 500, statusText: '500' }); + + expect(restore!).toBeUndefined(); + expect(error)!.toBeDefined(); + })); + it('should make post request to start backup', inject([BackupsService, HttpTestingController], (backupsService: BackupsService, httpMock: HttpTestingController) => { @@ -87,6 +166,19 @@ describe('BackupsService', () => { req.flush({}); })); + it('should make post request to start restore', + inject([BackupsService, HttpTestingController], (backupsService: BackupsService, httpMock: HttpTestingController) => { + + backupsService.postRestore('http://url').subscribe(); + + const req = httpMock.expectOne('http://service/p/api/apps/restore'); + + expect(req.request.method).toEqual('POST'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}); + })); + it('should make delete request to remove language', inject([BackupsService, HttpTestingController], (backupsService: BackupsService, httpMock: HttpTestingController) => { diff --git a/src/Squidex/app/shared/services/backups.service.ts b/src/Squidex/app/shared/services/backups.service.ts index 2c8bc79ec..676e968a9 100644 --- a/src/Squidex/app/shared/services/backups.service.ts +++ b/src/Squidex/app/shared/services/backups.service.ts @@ -30,10 +30,6 @@ export class BackupDto extends Model { ) { super(); } - - public with(value: Partial): BackupDto { - return this.clone(value); - } } export class RestoreDto { @@ -84,7 +80,7 @@ export class BackupsService { const body: any = response; return new RestoreDto( - body.id, + body.url, DateTime.parseISO_UTC(body.started), body.stopped ? DateTime.parseISO_UTC(body.stopped) : null, body.status, diff --git a/src/Squidex/app/shared/services/contents.service.spec.ts b/src/Squidex/app/shared/services/contents.service.spec.ts index 8d92f9763..6e9d7fb9f 100644 --- a/src/Squidex/app/shared/services/contents.service.spec.ts +++ b/src/Squidex/app/shared/services/contents.service.spec.ts @@ -285,6 +285,19 @@ describe('ContentsService', () => { req.flush({}); })); + it('should make put request to discard changes', + inject([ContentsService, HttpTestingController], (contentsService: ContentsService, httpMock: HttpTestingController) => { + + contentsService.discardChanges('my-app', 'my-schema', 'content1', version).subscribe(); + + const req = httpMock.expectOne('http://service/p/api/content/my-app/my-schema/content1/discard'); + + expect(req.request.method).toEqual('PUT'); + expect(req.request.headers.get('If-Match')).toBe(version.value); + + req.flush({}); + })); + it('should make put request to change content status', inject([ContentsService, HttpTestingController], (contentsService: ContentsService, httpMock: HttpTestingController) => { diff --git a/src/Squidex/app/shared/services/contents.service.ts b/src/Squidex/app/shared/services/contents.service.ts index d1a2eed27..9052d8852 100644 --- a/src/Squidex/app/shared/services/contents.service.ts +++ b/src/Squidex/app/shared/services/contents.service.ts @@ -43,10 +43,6 @@ export class ScheduleDto extends Model { ) { super(); } - - public with(value: Partial): ScheduleDto { - return this.clone(value); - } } export class ContentDto extends Model { @@ -233,7 +229,7 @@ export class ContentsService { public discardChanges(appName: string, schemaName: string, id: string, version: Version): Observable> { const url = this.apiUrl.buildUrl(`/api/content/${appName}/${schemaName}/${id}/discard`); - return HTTP.putVersioned(this.http, url, version).pipe( + return HTTP.putVersioned(this.http, url, {}, version).pipe( tap(() => { this.analytics.trackEvent('Content', 'Discarded', appName); }), diff --git a/src/Squidex/app/shared/services/plans.service.ts b/src/Squidex/app/shared/services/plans.service.ts index 491a6062c..9ab81561f 100644 --- a/src/Squidex/app/shared/services/plans.service.ts +++ b/src/Squidex/app/shared/services/plans.service.ts @@ -30,10 +30,6 @@ export class PlansDto extends Model { ) { super(); } - - public with(value: Partial): PlansDto { - return this.clone(value); - } } export class PlanDto extends Model { @@ -49,10 +45,6 @@ export class PlanDto extends Model { ) { super(); } - - public with(value: Partial): PlanDto { - return this.clone(value); - } } export class PlanChangedDto { diff --git a/src/Squidex/app/shared/services/rules.service.spec.ts b/src/Squidex/app/shared/services/rules.service.spec.ts index 3905ffa67..3d6927f41 100644 --- a/src/Squidex/app/shared/services/rules.service.spec.ts +++ b/src/Squidex/app/shared/services/rules.service.spec.ts @@ -201,6 +201,8 @@ describe('RulesService', () => { expect(req.request.method).toEqual('DELETE'); expect(req.request.headers.get('If-Match')).toEqual(version.value); + + req.flush({}); })); it('should make get request to get app rule events', @@ -265,5 +267,8 @@ describe('RulesService', () => { const req = httpMock.expectOne('http://service/p/api/apps/my-app/rules/events/123'); expect(req.request.method).toEqual('PUT'); + expect(req.request.headers.get('If-Match')).toBeNull(); + + req.flush({}); })); }); \ No newline at end of file diff --git a/src/Squidex/app/shared/services/rules.service.ts b/src/Squidex/app/shared/services/rules.service.ts index e5df0d780..fd4b79fb0 100644 --- a/src/Squidex/app/shared/services/rules.service.ts +++ b/src/Squidex/app/shared/services/rules.service.ts @@ -83,10 +83,6 @@ export class RuleEventsDto extends Model { ) { super(); } - - public with(value: Partial): RuleEventsDto { - return this.clone(value); - } } export class RuleEventDto extends Model { @@ -103,10 +99,6 @@ export class RuleEventDto extends Model { ) { super(); } - - public with(value: Partial): RuleEventDto { - return this.clone(value); - } } export class CreateRuleDto { diff --git a/src/Squidex/package.json b/src/Squidex/package.json index 5ab170f23..3bc7cc1c6 100644 --- a/src/Squidex/package.json +++ b/src/Squidex/package.json @@ -43,6 +43,7 @@ "rxjs": "6.2.0", "slugify": "1.3.0", "sortablejs": "1.7.0", + "tslib": "^1.9.3", "zone.js": "0.8.26" }, "devDependencies": { diff --git a/src/Squidex/tsconfig.json b/src/Squidex/tsconfig.json index af90295f4..f93597800 100644 --- a/src/Squidex/tsconfig.json +++ b/src/Squidex/tsconfig.json @@ -3,8 +3,10 @@ "baseUrl": ".", "emitDecoratorMetadata": true, "experimentalDecorators": true, + "importHelpers": true, "lib": ["es6", "esnext", "dom"], "moduleResolution": "node", + "noEmitHelpers": true, "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": false,