mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3719] added rendition when creating a shared link (#3968)
* [ADF-3719] i nserted rendition generation for shared link nodes * [ADF-3719] added rendition when creating a shared link * [ADF-3719] added fake parameter to subscribe
This commit is contained in:
@@ -110,3 +110,77 @@ export let fakeRenditionsList = {
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
export let fakeRenditionsListWithACreated = {
|
||||
list: {
|
||||
pagination: {
|
||||
count: 6,
|
||||
hasMoreItems: false,
|
||||
totalItems: 6,
|
||||
skipCount: 0,
|
||||
maxItems: 100
|
||||
},
|
||||
entries: [
|
||||
{
|
||||
entry: {
|
||||
id: 'avatar',
|
||||
content: {
|
||||
mimeType: 'image/png',
|
||||
mimeTypeName: 'PNG Image'
|
||||
},
|
||||
status: 'NOT_CREATED'
|
||||
}
|
||||
},
|
||||
{
|
||||
entry: {
|
||||
id: 'avatar32',
|
||||
content: {
|
||||
mimeType: 'image/png',
|
||||
mimeTypeName: 'PNG Image'
|
||||
},
|
||||
status: 'NOT_CREATED'
|
||||
}
|
||||
},
|
||||
{
|
||||
entry: {
|
||||
id: 'doclib',
|
||||
content: {
|
||||
mimeType: 'image/png',
|
||||
mimeTypeName: 'PNG Image'
|
||||
},
|
||||
status: 'NOT_CREATED'
|
||||
}
|
||||
},
|
||||
{
|
||||
entry: {
|
||||
id: 'imgpreview',
|
||||
content: {
|
||||
mimeType: 'image/jpeg',
|
||||
mimeTypeName: 'JPEG Image'
|
||||
},
|
||||
status: 'NOT_CREATED'
|
||||
}
|
||||
},
|
||||
{
|
||||
entry: {
|
||||
id: 'medium',
|
||||
content: {
|
||||
mimeType: 'image/jpeg',
|
||||
mimeTypeName: 'JPEG Image'
|
||||
},
|
||||
status: 'NOT_CREATED'
|
||||
}
|
||||
},
|
||||
{
|
||||
entry: {
|
||||
id: 'pdf',
|
||||
content: {
|
||||
mimeType: 'application/pdf',
|
||||
mimeTypeName: 'Adobe PDF Document'
|
||||
},
|
||||
status: 'CREATED'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
@@ -16,12 +16,13 @@
|
||||
*/
|
||||
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
import { fakeRendition, fakeRenditionCreated, fakeRenditionsList } from '../mock/renditionsService.mock';
|
||||
import { fakeRendition, fakeRenditionCreated, fakeRenditionsList, fakeRenditionsListWithACreated } from '../mock/renditionsService.mock';
|
||||
import { RenditionsService } from './renditions.service';
|
||||
import { setupTestBed } from '../testing/setupTestBed';
|
||||
import { CoreModule } from '../core.module';
|
||||
import { AlfrescoApiService } from './alfresco-api.service';
|
||||
import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock';
|
||||
import { RenditionEntry } from 'alfresco-js-api';
|
||||
|
||||
declare let jasmine: any;
|
||||
|
||||
@@ -46,6 +47,34 @@ describe('RenditionsService', () => {
|
||||
jasmine.Ajax.uninstall();
|
||||
});
|
||||
|
||||
it('Should return the image rendition for the file if no rendition is already available', (done) => {
|
||||
service.getAvailableRenditionForNode('fake-node-id').subscribe((res: RenditionEntry) => {
|
||||
expect(res.entry.status).toBe('NOT_CREATED');
|
||||
expect(res.entry.id).toBe('imgpreview');
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(fakeRenditionsList)
|
||||
});
|
||||
});
|
||||
|
||||
it('Should return the available rendition for the file', (done) => {
|
||||
service.getAvailableRenditionForNode('fake-node-id').subscribe((res: RenditionEntry) => {
|
||||
expect(res.entry.status).toBe('CREATED');
|
||||
expect(res.entry.id).toBe('pdf');
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(fakeRenditionsListWithACreated)
|
||||
});
|
||||
});
|
||||
|
||||
it('Get rendition list service should return the list', (done) => {
|
||||
service.getRenditionsListByNodeId('fake-node-id').subscribe((res) => {
|
||||
expect(res.list.entries[0].entry.id).toBe('avatar');
|
||||
|
@@ -17,15 +17,10 @@
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { RenditionEntry, RenditionPaging } from 'alfresco-js-api';
|
||||
import { Observable, from, interval } from 'rxjs';
|
||||
import { Observable, from, interval, empty } from 'rxjs';
|
||||
import { AlfrescoApiService } from './alfresco-api.service';
|
||||
import { concatMap, switchMap, takeWhile } from 'rxjs/operators';
|
||||
import { concatMap, switchMap, takeWhile, map } from 'rxjs/operators';
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* RenditionsService
|
||||
* (this service is deprecated in 2.2.0 and will be removed in future revisions)
|
||||
*/
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
@@ -34,6 +29,28 @@ export class RenditionsService {
|
||||
constructor(private apiService: AlfrescoApiService) {
|
||||
}
|
||||
|
||||
getAvailableRenditionForNode(nodeId: string): Observable<RenditionEntry> {
|
||||
return from(this.apiService.renditionsApi.getRenditions(nodeId)).pipe(
|
||||
map((availableRenditions: RenditionPaging) => {
|
||||
let renditionsAvailable: RenditionEntry[] = availableRenditions.list.entries.filter(
|
||||
(rendition) => (rendition.entry.id === 'pdf' || rendition.entry.id === 'imgpreview'));
|
||||
let existingRendition = renditionsAvailable.find((rend) => rend.entry.status === 'CREATED');
|
||||
return existingRendition ? existingRendition : renditionsAvailable[0];
|
||||
}));
|
||||
}
|
||||
|
||||
generateRenditionForNode(nodeId: string): Observable<any> {
|
||||
return this.getAvailableRenditionForNode(nodeId).pipe(
|
||||
map((rendition: RenditionEntry) => {
|
||||
if (rendition.entry.status !== 'CREATED') {
|
||||
return from(this.apiService.renditionsApi.createRendition(nodeId, { id: rendition.entry.id }));
|
||||
} else {
|
||||
return empty();
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/** @deprecated */
|
||||
isRenditionAvailable(nodeId: string, encoding: string): Observable<boolean> {
|
||||
return new Observable((observer) => {
|
||||
|
Reference in New Issue
Block a user