diff --git a/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.html b/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.html
index dee55dae7e..324e6dc4a5 100644
--- a/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.html
+++ b/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.html
@@ -17,7 +17,7 @@
arrow_back
- {{ displayName }}
+ {{ displayName }}
diff --git a/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.spec.ts b/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.spec.ts
index 450cc0b043..ce5343043e 100644
--- a/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.spec.ts
+++ b/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.spec.ts
@@ -20,9 +20,11 @@ import { SpyLocation } from '@angular/common/testing';
import { Component, DebugElement } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-import { CoreModule } from 'ng2-alfresco-core';
+import { CoreModule, RenditionsService } from 'ng2-alfresco-core';
import { MaterialModule } from './../material.module';
+import { AlfrescoApiService } from 'ng2-alfresco-core';
+import { Observable } from 'rxjs/Rx';
import { EventMock } from '../assets/event.mock';
import { RenderingQueueServices } from '../services/rendering-queue.services';
import { ImgViewerComponent } from './imgViewer.component';
@@ -113,6 +115,7 @@ describe('ViewerComponent', () => {
let component: ViewerComponent;
let fixture: ComponentFixture;
let debug: DebugElement;
+ let alfrescoApiService: AlfrescoApiService;
let element: HTMLElement;
beforeEach(async(() => {
@@ -138,6 +141,12 @@ describe('ViewerComponent', () => {
ViewerWithCustomMoreActionsComponent
],
providers: [
+ {provide: RenditionsService, useValue: {
+ getRendition: () => {
+ return Observable.throw('throwed');
+ }
+ }},
+ AlfrescoApiService,
RenderingQueueServices,
{ provide: Location, useClass: SpyLocation }
]
@@ -153,6 +162,8 @@ describe('ViewerComponent', () => {
jasmine.Ajax.install();
+ alfrescoApiService = TestBed.get(AlfrescoApiService);
+
component.showToolbar = true;
component.urlFile = 'base/src/assets/fake-test-file.pdf';
component.mimeType = 'application/pdf';
@@ -582,4 +593,89 @@ describe('ViewerComponent', () => {
component.ngOnChanges(null);
});
});
+
+ describe('display name property override by urlFile', () => {
+ it('should displayName override the default name if is present and urlFile is set' , (done) => {
+ component.urlFile = 'base/src/assets/fake-test-file.pdf';
+ component.displayName = 'test name';
+
+ component.ngOnChanges(null).then(() => {
+ fixture.detectChanges();
+ expect(element.querySelector('#adf-viewer-display-name').textContent).toEqual('test name');
+ done();
+ });
+ });
+
+ it('should use the urlFile name if displayName is NOT set and urlFile is set' , (done) => {
+ component.urlFile = 'base/src/assets/fake-test-file.pdf';
+ component.displayName = null;
+
+ component.ngOnChanges(null).then(() => {
+ fixture.detectChanges();
+ expect(element.querySelector('#adf-viewer-display-name').textContent).toEqual('fake-test-file.pdf');
+ done();
+ });
+ });
+ });
+
+ describe('display name property override by blobFile', () => {
+ it('should displayName override the name if is present and blobFile is set' , (done) => {
+ component.displayName = 'blob file display name';
+ component.blobFile = new Blob(['This is my blob content'], {type : 'text/plain'});
+
+ component.ngOnChanges(null).then(() => {
+ fixture.detectChanges();
+ expect(element.querySelector('#adf-viewer-display-name').textContent).toEqual('blob file display name');
+ done();
+ });
+ });
+
+ it('should show uknownn name if displayName is NOT set and blobFile is set' , (done) => {
+ component.displayName = null;
+ component.blobFile = new Blob(['This is my blob content'], {type : 'text/plain'});
+
+ component.ngOnChanges(null).then(() => {
+ fixture.detectChanges();
+ expect(element.querySelector('#adf-viewer-display-name').textContent).toEqual('Unknown');
+ done();
+ });
+ });
+ });
+
+ describe('display name property override by nodeId', () => {
+ const displayName = 'the-name';
+ const nodeDetails = { name: displayName, id: '12', content: { mimeType: 'txt' }};
+ const contentUrl = '/content/url/path';
+ const alfrescoApiInstanceMock = {
+ nodes: { getNodeInfo: () => Promise.resolve(nodeDetails) },
+ content: { getContentUrl: () => contentUrl }
+ };
+
+ it('should use the displayName if displayName is set and fileNodeId is set' , (done) => {
+ const userDefinedDisplayName = 'user defined display name';
+ component.fileNodeId = '12';
+ component.urlFile = null;
+ component.displayName = userDefinedDisplayName;
+
+ spyOn(alfrescoApiService, 'getInstance').and.returnValue(alfrescoApiInstanceMock);
+ component.ngOnChanges(null).then(() => {
+ fixture.detectChanges();
+ expect(element.querySelector('#adf-viewer-display-name').textContent).toEqual(userDefinedDisplayName);
+ done();
+ });
+ });
+
+ it('should use the node name if displayName is NOT set and fileNodeId is set' , (done) => {
+ component.fileNodeId = '12';
+ component.urlFile = null;
+ component.displayName = null;
+
+ spyOn(alfrescoApiService, 'getInstance').and.returnValue(alfrescoApiInstanceMock);
+ component.ngOnChanges(null).then(() => {
+ fixture.detectChanges();
+ expect(element.querySelector('#adf-viewer-display-name').textContent).toEqual(displayName);
+ done();
+ });
+ });
+ });
});
diff --git a/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.ts b/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.ts
index 68138380a8..4d0ae9eeef 100644
--- a/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.ts
+++ b/ng2-components/ng2-alfresco-viewer/src/components/viewer.component.ts
@@ -68,7 +68,7 @@ export class ViewerComponent implements OnDestroy, OnChanges {
showToolbar = true;
@Input()
- displayName = 'Unknown';
+ displayName: string;
@Input()
allowGoBack = true;
@@ -144,8 +144,8 @@ export class ViewerComponent implements OnDestroy, OnChanges {
return new Promise((resolve, reject) => {
if (this.blobFile) {
+ this.displayName = this.getDisplayName('Unknown');
this.isLoading = true;
-
this.mimeType = this.blobFile.type;
this.viewerType = this.getViewerTypeByMimeType(this.mimeType);
@@ -159,7 +159,7 @@ export class ViewerComponent implements OnDestroy, OnChanges {
} else if (this.urlFile) {
this.isLoading = true;
let filenameFromUrl = this.getFilenameFromUrl(this.urlFile);
- this.displayName = filenameFromUrl || 'Unknown';
+ this.displayName = this.getDisplayName(filenameFromUrl);
this.extension = this.getFileExtension(filenameFromUrl);
this.urlFileContent = this.urlFile;
@@ -180,7 +180,7 @@ export class ViewerComponent implements OnDestroy, OnChanges {
this.apiService.getInstance().nodes.getNodeInfo(this.fileNodeId).then(
(data: MinimalNodeEntryEntity) => {
this.mimeType = data.content.mimeType;
- this.displayName = data.name;
+ this.displayName = this.getDisplayName( data.name);
this.urlFileContent = this.apiService.getInstance().content.getContentUrl(data.id);
this.extension = this.getFileExtension(data.name);
@@ -213,6 +213,10 @@ export class ViewerComponent implements OnDestroy, OnChanges {
}
}
+ private getDisplayName(name) {
+ return this.displayName || name;
+ }
+
scrollTop() {
window.scrollTo(0, 1);
}