mirror of https://github.com/Squidex/squidex.git
36 changed files with 798 additions and 165 deletions
@ -0,0 +1,334 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Sebastian Stehle. All rights reserved |
|||
*/ |
|||
|
|||
import { Response, ResponseOptions } from '@angular/http'; |
|||
import { Observable } from 'rxjs'; |
|||
import { It, IMock, Mock, Times } from 'typemoq'; |
|||
|
|||
import { |
|||
AddFieldDto, |
|||
ApiUrlConfig, |
|||
AuthService, |
|||
CreateSchemaDto, |
|||
createProperties, |
|||
DateTime, |
|||
EntityCreatedDto, |
|||
FieldDto, |
|||
SchemaDetailsDto, |
|||
SchemaDto, |
|||
SchemasService, |
|||
UpdateFieldDto, |
|||
UpdateSchemaDto |
|||
} from './../'; |
|||
|
|||
describe('SchemasService', () => { |
|||
let authService: IMock<AuthService>; |
|||
let schemasService: SchemasService; |
|||
|
|||
beforeEach(() => { |
|||
authService = Mock.ofType(AuthService); |
|||
schemasService = new SchemasService(authService.object, new ApiUrlConfig('http://service/p/')); |
|||
}); |
|||
|
|||
it('should throw if creating invalid property type', () => { |
|||
expect(() => createProperties('invalid')).toThrow('Invalid properties type'); |
|||
}); |
|||
|
|||
it('should make get request to get schemas', () => { |
|||
authService.setup(x => x.authGet('http://service/p/api/apps/my-app/schemas')) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions({ |
|||
body: [{ |
|||
id: 'id1', |
|||
name: 'name1', |
|||
label: 'label1', |
|||
isPublished: true, |
|||
created: '2016-12-12T10:10', |
|||
createdBy: 'Created1', |
|||
lastModified: '2017-12-12T10:10', |
|||
lastModifiedBy: 'LastModifiedBy1', |
|||
data: {} |
|||
}, { |
|||
id: 'id2', |
|||
name: 'name2', |
|||
label: 'label2', |
|||
isPublished: true, |
|||
created: '2016-10-12T10:10', |
|||
createdBy: 'Created2', |
|||
lastModified: '2017-10-12T10:10', |
|||
lastModifiedBy: 'LastModifiedBy2', |
|||
data: {} |
|||
}] |
|||
}) |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
let schemas: SchemaDto[] | null = null; |
|||
|
|||
schemasService.getSchemas('my-app').subscribe(result => { |
|||
schemas = result; |
|||
}).unsubscribe(); |
|||
|
|||
expect(schemas).toEqual([ |
|||
new SchemaDto('id1', 'name1', 'label1', true, 'Created1', 'LastModifiedBy1', DateTime.parseISO_UTC('2016-12-12T10:10'), DateTime.parseISO_UTC('2017-12-12T10:10')), |
|||
new SchemaDto('id2', 'name2', 'label2', true, 'Created2', 'LastModifiedBy2', DateTime.parseISO_UTC('2016-10-12T10:10'), DateTime.parseISO_UTC('2017-10-12T10:10')) |
|||
]); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make get request to get schema', () => { |
|||
authService.setup(x => x.authGet('http://service/p/api/apps/my-app/schemas/my-schema')) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions({ |
|||
body: { |
|||
id: 'id1', |
|||
name: 'name1', |
|||
label: 'label1', |
|||
hints: 'hints1', |
|||
isPublished: true, |
|||
created: '2016-12-12T10:10', |
|||
createdBy: 'Created1', |
|||
lastModified: '2017-12-12T10:10', |
|||
lastModifiedBy: 'LastModifiedBy1', |
|||
fields: [{ |
|||
fieldId: 123, |
|||
name: 'field1', |
|||
isHidden: true, |
|||
isDisabled: true, |
|||
properties: { |
|||
fieldType: 'number' |
|||
} |
|||
}, { |
|||
fieldId: 234, |
|||
name: 'field2', |
|||
isHidden: true, |
|||
isDisabled: true, |
|||
properties: { |
|||
fieldType: 'string' |
|||
} |
|||
}, { |
|||
fieldId: 345, |
|||
name: 'field3', |
|||
isHidden: true, |
|||
isDisabled: true, |
|||
properties: { |
|||
fieldType: 'boolean' |
|||
} |
|||
}] |
|||
} |
|||
}) |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
let schema: SchemaDetailsDto | null = null; |
|||
|
|||
schemasService.getSchema('my-app', 'my-schema').subscribe(result => { |
|||
schema = result; |
|||
}).unsubscribe(); |
|||
|
|||
expect(schema).toEqual( |
|||
new SchemaDetailsDto('id1', 'name1', 'label1', 'hints1', true, 'Created1', 'LastModifiedBy1', |
|||
DateTime.parseISO_UTC('2016-12-12T10:10'), |
|||
DateTime.parseISO_UTC('2017-12-12T10:10'), [ |
|||
new FieldDto(123, 'field1', true, true, createProperties('number')), |
|||
new FieldDto(234, 'field2', true, true, createProperties('string')), |
|||
new FieldDto(345, 'field3', true, true, createProperties('boolean')) |
|||
])); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
|
|||
it('should make post request to create schema', () => { |
|||
const dto = new CreateSchemaDto('name'); |
|||
|
|||
authService.setup(x => x.authPost('http://service/p/api/apps/my-app/schemas', dto)) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions({ |
|||
body: { |
|||
id: 'my-schema' |
|||
} |
|||
}) |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
let created: EntityCreatedDto | null = null; |
|||
|
|||
schemasService.postSchema('my-app', dto).subscribe(result => { |
|||
created = result; |
|||
}); |
|||
|
|||
expect(created).toEqual( |
|||
new EntityCreatedDto('my-schema')); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make post request to add field', () => { |
|||
const dto = new AddFieldDto('name', createProperties('number')); |
|||
|
|||
authService.setup(x => x.authPost('http://service/p/api/apps/my-app/schemas/my-schema/fields', dto)) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions({ |
|||
body: { |
|||
id: 123 |
|||
} |
|||
}) |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
let created: EntityCreatedDto | null = null; |
|||
|
|||
schemasService.postField('my-app', 'my-schema', dto).subscribe(result => { |
|||
created = result; |
|||
}); |
|||
|
|||
expect(created).toEqual( |
|||
new EntityCreatedDto(123)); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to update schema', () => { |
|||
const dto = new UpdateSchemaDto('label', 'hints'); |
|||
|
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema', dto)) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.putSchema('my-app', 'my-schema', dto); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to update field', () => { |
|||
const dto = new UpdateFieldDto(createProperties('number')); |
|||
|
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/fields/1', dto)) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.putField('my-app', 'my-schema', 1, dto); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to publish schema', () => { |
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/publish', It.isAny())) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.publishSchema('my-app', 'my-schema'); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to unpublish schema', () => { |
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/unpublish', It.isAny())) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.unpublishSchema('my-app', 'my-schema'); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to enable field', () => { |
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/fields/1/enable', It.isAny())) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.enableField('my-app', 'my-schema', 1); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to disable field', () => { |
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/fields/1/disable', It.isAny())) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.disableField('my-app', 'my-schema', 1); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to show field', () => { |
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/fields/1/show', It.isAny())) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.showField('my-app', 'my-schema', 1); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make put request to hide field', () => { |
|||
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/schemas/my-schema/fields/1/hide', It.isAny())) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.hideField('my-app', 'my-schema', 1); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
|
|||
it('should make delete request to delete field', () => { |
|||
authService.setup(x => x.authDelete('http://service/p/api/apps/my-app/schemas/my-schema/fields/1')) |
|||
.returns(() => Observable.of( |
|||
new Response( |
|||
new ResponseOptions() |
|||
) |
|||
)) |
|||
.verifiable(Times.once()); |
|||
|
|||
schemasService.deleteField('my-app', 'my-schema', 1); |
|||
|
|||
authService.verifyAll(); |
|||
}); |
|||
}); |
|||
Loading…
Reference in new issue