mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-09-10 14:11:42 +00:00
[MNT-25285] Unable to change version preview from within the preview … (#11165)
This commit is contained in:
committed by
GitHub
parent
09c35ea903
commit
3b5e98b182
@@ -149,6 +149,11 @@ const getSimpleChanges = (currentValue: string, previousValue?: string): SimpleC
|
|||||||
nodeId: new SimpleChange(previousValue || null, currentValue, false)
|
nodeId: new SimpleChange(previousValue || null, currentValue, false)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const getSimpleChangesWithVersion = (nodeId: string, versionId?: string, previousNodeId?: string, previousVersionId?: string): SimpleChanges => ({
|
||||||
|
nodeId: new SimpleChange(previousNodeId || null, nodeId, false),
|
||||||
|
versionId: new SimpleChange(previousVersionId || null, versionId, false)
|
||||||
|
});
|
||||||
|
|
||||||
const verifyCustomElement = (component: any, selector: string, done: DoneFn) => {
|
const verifyCustomElement = (component: any, selector: string, done: DoneFn) => {
|
||||||
const customFixture = TestBed.createComponent(component);
|
const customFixture = TestBed.createComponent(component);
|
||||||
const customElement: HTMLElement = customFixture.nativeElement;
|
const customElement: HTMLElement = customFixture.nativeElement;
|
||||||
@@ -255,11 +260,11 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
const contentUrl = '/content/url/path';
|
const contentUrl = '/content/url/path';
|
||||||
|
|
||||||
component.nodeId = '12';
|
component.nodeId = '12';
|
||||||
spyOn(component['nodesApi'], 'getNode').and.returnValue(
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
Promise.resolve(new NodeEntry({ entry: new Node({ name: displayName, id: '12', content: new ContentInfo() }) }))
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: displayName, id: '12', content: new ContentInfo() }) }))
|
||||||
);
|
);
|
||||||
|
|
||||||
spyOn(component['contentApi'], 'getContentUrl').and.returnValue(contentUrl);
|
spyOn(component.contentApi, 'getContentUrl').and.returnValue(contentUrl);
|
||||||
|
|
||||||
component.ngOnChanges({});
|
component.ngOnChanges({});
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
@@ -271,7 +276,7 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should change display name every time node changes', fakeAsync(() => {
|
it('should change display name every time node changes', fakeAsync(() => {
|
||||||
spyOn(component['nodesApi'], 'getNode').and.returnValues(
|
spyOn(component.nodesApi, 'getNode').and.returnValues(
|
||||||
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) })),
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) })),
|
||||||
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file2', content: new ContentInfo() }) }))
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file2', content: new ContentInfo() }) }))
|
||||||
);
|
);
|
||||||
@@ -289,22 +294,98 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
tick();
|
tick();
|
||||||
|
|
||||||
expect(component.fileName).toBe('file2');
|
expect(component.fileName).toBe('file2');
|
||||||
expect(component['nodesApi'].getNode).toHaveBeenCalledTimes(2);
|
expect(component.nodesApi.getNode).toHaveBeenCalledTimes(2);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should not setup the node twice if the node id is not changed', fakeAsync(() => {
|
it('should not setup the node twice if both nodeId and versionId remain the same', fakeAsync(() => {
|
||||||
spyOn(component['nodesApi'], 'getNode').and.stub();
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
spyOn(component.versionsApi, 'getVersion').and.returnValue(
|
||||||
|
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
|
||||||
component.showViewer = true;
|
component.showViewer = true;
|
||||||
component.nodeId = 'id1';
|
component.nodeId = 'id1';
|
||||||
component.ngOnChanges(getSimpleChanges('id0', 'id1'));
|
component.versionId = '1.0';
|
||||||
|
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id1', '1.0'));
|
||||||
tick();
|
tick();
|
||||||
component.ngOnChanges(getSimpleChanges('id1', 'id1'));
|
component.ngOnChanges(getSimpleChangesWithVersion('id1', '1.0', 'id1', '1.0'));
|
||||||
tick();
|
tick();
|
||||||
expect(component['nodesApi'].getNode).toHaveBeenCalledTimes(1);
|
|
||||||
|
expect(component.nodesApi.getNode).toHaveBeenCalledTimes(1);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should setup the node when versionId changes even if nodeId stays the same', fakeAsync(() => {
|
||||||
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
spyOn(component.versionsApi, 'getVersion').and.returnValue(
|
||||||
|
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
|
||||||
|
component.showViewer = true;
|
||||||
|
component.nodeId = 'id1';
|
||||||
|
component.versionId = '1.0';
|
||||||
|
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id1', '1.0'));
|
||||||
|
tick();
|
||||||
|
|
||||||
|
component.versionId = '2.0';
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id1', '2.0', 'id1', '1.0'));
|
||||||
|
tick();
|
||||||
|
|
||||||
|
expect(component.nodesApi.getNode).toHaveBeenCalledTimes(2);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should setup the node when nodeId changes even if versionId stays the same', fakeAsync(() => {
|
||||||
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
spyOn(component.versionsApi, 'getVersion').and.returnValue(
|
||||||
|
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
|
||||||
|
component.showViewer = true;
|
||||||
|
component.nodeId = 'id1';
|
||||||
|
component.versionId = '1.0';
|
||||||
|
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id1', '1.0'));
|
||||||
|
tick();
|
||||||
|
|
||||||
|
component.nodeId = 'id2';
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id2', '1.0', 'id1', '1.0'));
|
||||||
|
tick();
|
||||||
|
|
||||||
|
expect(component.nodesApi.getNode).toHaveBeenCalledTimes(2);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should setup the node when both nodeId and versionId change', fakeAsync(() => {
|
||||||
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
spyOn(component.versionsApi, 'getVersion').and.returnValue(
|
||||||
|
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) }))
|
||||||
|
);
|
||||||
|
|
||||||
|
component.showViewer = true;
|
||||||
|
component.nodeId = 'id1';
|
||||||
|
component.versionId = '1.0';
|
||||||
|
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id1', '1.0'));
|
||||||
|
tick();
|
||||||
|
|
||||||
|
component.nodeId = 'id2';
|
||||||
|
component.versionId = '2.0';
|
||||||
|
component.ngOnChanges(getSimpleChangesWithVersion('id2', '2.0', 'id1', '1.0'));
|
||||||
|
tick();
|
||||||
|
|
||||||
|
expect(component.nodesApi.getNode).toHaveBeenCalledTimes(2);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should append version of the file to the file content URL', fakeAsync(() => {
|
it('should append version of the file to the file content URL', fakeAsync(() => {
|
||||||
spyOn(component['nodesApi'], 'getNode').and.returnValue(
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
Promise.resolve(
|
Promise.resolve(
|
||||||
new NodeEntry({
|
new NodeEntry({
|
||||||
entry: new Node({
|
entry: new Node({
|
||||||
@@ -315,7 +396,7 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
spyOn(component['versionsApi'], 'getVersion').and.returnValue(Promise.resolve(undefined));
|
spyOn(component.versionsApi, 'getVersion').and.returnValue(Promise.resolve(undefined));
|
||||||
|
|
||||||
component.nodeId = 'id1';
|
component.nodeId = 'id1';
|
||||||
component.showViewer = true;
|
component.showViewer = true;
|
||||||
@@ -328,11 +409,11 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should change display name every time node`s version changes', fakeAsync(() => {
|
it('should change display name every time node`s version changes', fakeAsync(() => {
|
||||||
spyOn(component['nodesApi'], 'getNode').and.returnValue(
|
spyOn(component.nodesApi, 'getNode').and.returnValue(
|
||||||
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'node1', content: new ContentInfo() }) }))
|
Promise.resolve(new NodeEntry({ entry: new Node({ name: 'node1', content: new ContentInfo() }) }))
|
||||||
);
|
);
|
||||||
|
|
||||||
spyOn(component['versionsApi'], 'getVersion').and.returnValues(
|
spyOn(component.versionsApi, 'getVersion').and.returnValues(
|
||||||
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) })),
|
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file1', content: new ContentInfo() }) })),
|
||||||
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file2', content: new ContentInfo() }) }))
|
Promise.resolve(new VersionEntry({ entry: new Node({ name: 'file2', content: new ContentInfo() }) }))
|
||||||
);
|
);
|
||||||
@@ -419,7 +500,7 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
|
|
||||||
describe('error handling', () => {
|
describe('error handling', () => {
|
||||||
it('should show unknown view when node file not found', (done) => {
|
it('should show unknown view when node file not found', (done) => {
|
||||||
spyOn(component['nodesApi'], 'getNode').and.returnValue(Promise.reject(new Error('error')));
|
spyOn(component.nodesApi, 'getNode').and.returnValue(Promise.reject(new Error('error')));
|
||||||
|
|
||||||
component.nodeId = 'the-node-id-of-the-file-to-preview';
|
component.nodeId = 'the-node-id-of-the-file-to-preview';
|
||||||
component.mimeType = null;
|
component.mimeType = null;
|
||||||
@@ -433,7 +514,7 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should show unknown view when sharedLink file not found', (done) => {
|
it('should show unknown view when sharedLink file not found', (done) => {
|
||||||
spyOn(component['sharedLinksApi'], 'getSharedLink').and.returnValue(Promise.reject(new Error('error')));
|
spyOn(component.sharedLinksApi, 'getSharedLink').and.returnValue(Promise.reject(new Error('error')));
|
||||||
|
|
||||||
component.sharedLinkId = 'the-Shared-Link-id';
|
component.sharedLinkId = 'the-Shared-Link-id';
|
||||||
component.mimeType = null;
|
component.mimeType = null;
|
||||||
@@ -448,7 +529,7 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should raise an event when the shared link is invalid', fakeAsync(() => {
|
it('should raise an event when the shared link is invalid', fakeAsync(() => {
|
||||||
spyOn(component['sharedLinksApi'], 'getSharedLink').and.returnValue(Promise.reject(new Error('error')));
|
spyOn(component.sharedLinksApi, 'getSharedLink').and.returnValue(Promise.reject(new Error('error')));
|
||||||
|
|
||||||
component.sharedLinkId = 'the-Shared-Link-id';
|
component.sharedLinkId = 'the-Shared-Link-id';
|
||||||
component.mimeType = null;
|
component.mimeType = null;
|
||||||
@@ -667,8 +748,8 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
|
|
||||||
const node = new NodeEntry(nodeDetails);
|
const node = new NodeEntry(nodeDetails);
|
||||||
|
|
||||||
spyOn(component['nodesApi'], 'getNode').and.returnValue(Promise.resolve(node));
|
spyOn(component.nodesApi, 'getNode').and.returnValue(Promise.resolve(node));
|
||||||
spyOn(component['contentApi'], 'getContentUrl').and.returnValue(contentUrl);
|
spyOn(component.contentApi, 'getContentUrl').and.returnValue(contentUrl);
|
||||||
|
|
||||||
component.ngOnChanges(getSimpleChanges('id1'));
|
component.ngOnChanges(getSimpleChanges('id1'));
|
||||||
fixture.whenStable().then(() => {
|
fixture.whenStable().then(() => {
|
||||||
@@ -689,7 +770,7 @@ describe('AlfrescoViewerComponent', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should not render close viewer button if it is a shared link', (done) => {
|
it('should not render close viewer button if it is a shared link', (done) => {
|
||||||
spyOn(component['sharedLinksApi'], 'getSharedLink').and.returnValue(Promise.reject(new Error('error')));
|
spyOn(component.sharedLinksApi, 'getSharedLink').and.returnValue(Promise.reject(new Error('error')));
|
||||||
|
|
||||||
component.sharedLinkId = 'the-Shared-Link-id';
|
component.sharedLinkId = 'the-Shared-Link-id';
|
||||||
component.mimeType = null;
|
component.mimeType = null;
|
||||||
|
@@ -315,8 +315,8 @@ export class AlfrescoViewerComponent implements OnChanges, OnInit {
|
|||||||
await this.setUpNodeFile(this.nodeEntry.entry, this.versionEntry.entry);
|
await this.setUpNodeFile(this.nodeEntry.entry, this.versionEntry.entry);
|
||||||
} else {
|
} else {
|
||||||
await this.setUpNodeFile(this.nodeEntry.entry);
|
await this.setUpNodeFile(this.nodeEntry.entry);
|
||||||
this.cdr.detectChanges();
|
|
||||||
}
|
}
|
||||||
|
this.cdr.detectChanges();
|
||||||
} catch {
|
} catch {
|
||||||
this.urlFileContent = 'invalid-node';
|
this.urlFileContent = 'invalid-node';
|
||||||
}
|
}
|
||||||
@@ -462,7 +462,10 @@ export class AlfrescoViewerComponent implements OnChanges, OnInit {
|
|||||||
throw new Error('A content source attribute value is missing.');
|
throw new Error('A content source attribute value is missing.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changes.nodeId?.currentValue !== changes.nodeId?.previousValue) {
|
if (
|
||||||
|
changes.nodeId?.currentValue !== changes.nodeId?.previousValue ||
|
||||||
|
changes.versionId?.currentValue !== changes.versionId?.previousValue
|
||||||
|
) {
|
||||||
this.setupNode();
|
this.setupNode();
|
||||||
} else if (this.sharedLinkId) {
|
} else if (this.sharedLinkId) {
|
||||||
this.setupSharedLink();
|
this.setupSharedLink();
|
||||||
|
Reference in New Issue
Block a user