mirror of https://github.com/Squidex/squidex.git
9 changed files with 321 additions and 33 deletions
@ -0,0 +1,278 @@ |
|||||
|
/* |
||||
|
* Squidex Headless CMS |
||||
|
* |
||||
|
* @license |
||||
|
* Copyright (c) Sebastian Stehle. All rights reserved |
||||
|
*/ |
||||
|
|
||||
|
import { Response, ResponseOptions } from '@angular/http'; |
||||
|
import { Observable } from 'rxjs'; |
||||
|
import { ProgressHttp } from 'angular-progress-http'; |
||||
|
import { IMock, It, Mock, Times } from 'typemoq'; |
||||
|
|
||||
|
import { |
||||
|
ApiUrlConfig, |
||||
|
AssetsDto, |
||||
|
AssetDto, |
||||
|
AssetCreatedDto, |
||||
|
AssetReplacedDto, |
||||
|
AssetsService, |
||||
|
AuthService, |
||||
|
DateTime, |
||||
|
Profile, |
||||
|
UpdateAssetDto, |
||||
|
Version |
||||
|
} from './../'; |
||||
|
|
||||
|
describe('AssetsService', () => { |
||||
|
let authService: IMock<AuthService>; |
||||
|
let assetsService: AssetsService; |
||||
|
let progressHttp: IMock<ProgressHttp>; |
||||
|
let version = new Version('1'); |
||||
|
|
||||
|
beforeEach(() => { |
||||
|
const factory = { |
||||
|
create: () => { |
||||
|
return <any>null; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
progressHttp = Mock.ofInstance(new ProgressHttp(null, null, factory, null)); |
||||
|
progressHttp.setup(x => x.withUploadProgressListener(It.isAny())).returns(() => <any> progressHttp.object); |
||||
|
|
||||
|
authService = Mock.ofType(AuthService); |
||||
|
authService.setup(x => x.user).returns(() => new Profile(<any>{})); |
||||
|
|
||||
|
assetsService = new AssetsService(authService.object, new ApiUrlConfig('http://service/p/'), progressHttp.object); |
||||
|
}); |
||||
|
|
||||
|
it('should make get request to get assets', () => { |
||||
|
authService.setup(x => x.authGet('http://service/p/api/apps/my-app/assets?take=17&skip=13')) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions({ |
||||
|
body: { |
||||
|
total: 10, |
||||
|
items: [{ |
||||
|
id: 'id1', |
||||
|
created: '2016-12-12T10:10', |
||||
|
createdBy: 'Created1', |
||||
|
lastModified: '2017-12-12T10:10', |
||||
|
lastModifiedBy: 'LastModifiedBy1', |
||||
|
fileName: 'my-asset1.png', |
||||
|
fileSize: 1024, |
||||
|
fileVersion: 2, |
||||
|
mimeType: 'text/plain', |
||||
|
isImage: true, |
||||
|
pixelWidth: 1024, |
||||
|
pixelHeight: 2048, |
||||
|
version: 11 |
||||
|
}, { |
||||
|
id: 'id2', |
||||
|
created: '2016-10-12T10:10', |
||||
|
createdBy: 'Created2', |
||||
|
lastModified: '2017-10-12T10:10', |
||||
|
lastModifiedBy: 'LastModifiedBy2', |
||||
|
fileName: 'my-asset2.png', |
||||
|
fileSize: 1024, |
||||
|
fileVersion: 2, |
||||
|
mimeType: 'text/plain', |
||||
|
isImage: true, |
||||
|
pixelWidth: 1024, |
||||
|
pixelHeight: 2048, |
||||
|
version: 22 |
||||
|
}] |
||||
|
} |
||||
|
}) |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
let assets: AssetsDto | null = null; |
||||
|
|
||||
|
assetsService.getAssets('my-app', 17, 13, null, null).subscribe(result => { |
||||
|
assets = result; |
||||
|
}).unsubscribe(); |
||||
|
|
||||
|
expect(assets).toEqual( |
||||
|
new AssetsDto(10, [ |
||||
|
new AssetDto( |
||||
|
'id1', 'Created1', 'LastModifiedBy1', |
||||
|
DateTime.parseISO_UTC('2016-12-12T10:10'), |
||||
|
DateTime.parseISO_UTC('2017-12-12T10:10'), |
||||
|
'my-asset1.png', |
||||
|
1024, 2, |
||||
|
'text/plain', |
||||
|
true, |
||||
|
1024, |
||||
|
2048, |
||||
|
new Version('11')), |
||||
|
new AssetDto('id2', 'Created2', 'LastModifiedBy2', |
||||
|
DateTime.parseISO_UTC('2016-10-12T10:10'), |
||||
|
DateTime.parseISO_UTC('2017-10-12T10:10'), |
||||
|
'my-asset2.png', |
||||
|
1024, 2, |
||||
|
'text/plain', |
||||
|
true, |
||||
|
1024, |
||||
|
2048, |
||||
|
new Version('22')) |
||||
|
])); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
|
||||
|
it('should append query to find by name', () => { |
||||
|
authService.setup(x => x.authGet('http://service/p/api/apps/my-app/assets?query=my-query&take=17&skip=13')) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions({ |
||||
|
body: { |
||||
|
total: 10, |
||||
|
items: [] |
||||
|
} |
||||
|
}) |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
let assets: AssetsDto | null = null; |
||||
|
|
||||
|
assetsService.getAssets('my-app', 17, 13, 'my-query', null).subscribe(result => { |
||||
|
assets = result; |
||||
|
}).unsubscribe(); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
|
||||
|
it('should append mime types to find by types', () => { |
||||
|
authService.setup(x => x.authGet('http://service/p/api/apps/my-app/assets?mimeTypes=text/plain,image/png&take=17&skip=13')) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions({ |
||||
|
body: { |
||||
|
total: 10, |
||||
|
items: [] |
||||
|
} |
||||
|
}) |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
let assets: AssetsDto | null = null; |
||||
|
|
||||
|
assetsService.getAssets('my-app', 17, 13, null, ['text/plain', 'image/png']).subscribe(result => { |
||||
|
assets = result; |
||||
|
}).unsubscribe(); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
|
||||
|
it('should make post request to create asset', () => { |
||||
|
progressHttp.setup(x => x.post('http://service/p/api/apps/my-app/assets', It.isAny(), It.isAny())) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions({ |
||||
|
body: { |
||||
|
id: 'id1', |
||||
|
fileName: 'my-asset1.png', |
||||
|
fileSize: 1024, |
||||
|
fileVersion: 2, |
||||
|
mimeType: 'text/plain', |
||||
|
isImage: true, |
||||
|
pixelWidth: 1024, |
||||
|
pixelHeight: 2048, |
||||
|
version: 11 |
||||
|
} |
||||
|
}) |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
let asset: AssetCreatedDto | null = null; |
||||
|
|
||||
|
assetsService.uploadFile('my-app', null).subscribe(result => { |
||||
|
asset = <AssetCreatedDto>result; |
||||
|
}); |
||||
|
|
||||
|
expect(asset).toEqual( |
||||
|
new AssetCreatedDto( |
||||
|
'id1', |
||||
|
'my-asset1.png', |
||||
|
1024, 2, |
||||
|
'text/plain', |
||||
|
true, |
||||
|
1024, |
||||
|
2048, |
||||
|
new Version('11'))); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
|
||||
|
it('should make put request to replace asset content', () => { |
||||
|
progressHttp.setup(x => x.put('http://service/p/api/apps/my-app/assets/123/content', It.isAny(), It.isAny())) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions({ |
||||
|
body: { |
||||
|
fileSize: 1024, |
||||
|
fileVersion: 2, |
||||
|
mimeType: 'text/plain', |
||||
|
isImage: true, |
||||
|
pixelWidth: 1024, |
||||
|
pixelHeight: 2048, |
||||
|
version: 11 |
||||
|
} |
||||
|
}) |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
let asset: AssetReplacedDto | null = null; |
||||
|
|
||||
|
assetsService.replaceFile('my-app', '123', null, version).subscribe(result => { |
||||
|
asset = <AssetReplacedDto>result; |
||||
|
}); |
||||
|
|
||||
|
expect(asset).toEqual( |
||||
|
new AssetReplacedDto( |
||||
|
1024, 2, |
||||
|
'text/plain', |
||||
|
true, |
||||
|
1024, |
||||
|
2048, |
||||
|
new Version('11'))); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
|
||||
|
it('should make put request to update asset', () => { |
||||
|
const dto = new UpdateAssetDto('My-Asset.pdf'); |
||||
|
|
||||
|
authService.setup(x => x.authPut('http://service/p/api/apps/my-app/assets/123', dto, version)) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions() |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
assetsService.putAsset('my-app', '123', dto, version); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
|
||||
|
it('should make delete request to delete asset', () => { |
||||
|
authService.setup(x => x.authDelete('http://service/p/api/apps/my-app/assets/123', version)) |
||||
|
.returns(() => Observable.of( |
||||
|
new Response( |
||||
|
new ResponseOptions() |
||||
|
) |
||||
|
)) |
||||
|
.verifiable(Times.once()); |
||||
|
|
||||
|
assetsService.deleteAsset('my-app', '123', version); |
||||
|
|
||||
|
authService.verifyAll(); |
||||
|
}); |
||||
|
}); |
||||
Loading…
Reference in new issue