diff --git a/ng2-components/ng2-alfresco-viewer/src/notSupportedFormat.component.spec.ts b/ng2-components/ng2-alfresco-viewer/src/notSupportedFormat.component.spec.ts index e23a3838de..fc511ef881 100644 --- a/ng2-components/ng2-alfresco-viewer/src/notSupportedFormat.component.spec.ts +++ b/ng2-components/ng2-alfresco-viewer/src/notSupportedFormat.component.spec.ts @@ -15,23 +15,14 @@ * limitations under the License. */ -import { describe, it, expect } from '@angular/core/testing'; - -describe('Not Supported Format View', () => { - it ('should be migrated to angular 2 rc.1', () => { - expect(false).toBe(true); - }); -}); - - -/* -import { describe, expect, it, injectAsync, TestComponentBuilder } from 'angular2/testing'; +import { describe, expect, it, inject } from '@angular/core/testing'; +import { TestComponentBuilder } from '@angular/compiler/testing'; import { NotSupportedFormat } from './notSupportedFormat.component'; describe('Not Supported Format View', () => { describe('View', () => { - it('Download button should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { + it('Download button should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { return tcb .createAsync(NotSupportedFormat) .then((fixture) => { @@ -42,7 +33,7 @@ describe('Not Supported Format View', () => { expect(element.querySelector('#viewer-download-button')).not.toBeNull(); }); })); - it('should display the name of the file', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { + it('should display the name of the file', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { return tcb .createAsync(NotSupportedFormat) .then((fixture) => { @@ -58,7 +49,7 @@ describe('Not Supported Format View', () => { }); describe('User Interaction', () => { - it('Click on Download button should call download method', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { + it('Click on Download button should call download method', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { return tcb .createAsync(NotSupportedFormat) .then((fixture) => { @@ -77,4 +68,4 @@ describe('Not Supported Format View', () => { })); }); }); -*/ + diff --git a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts index b1bdb117d1..d22ba9a324 100644 --- a/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts +++ b/ng2-components/ng2-alfresco-viewer/src/pdfViewer.component.spec.ts @@ -15,172 +15,168 @@ * limitations under the License. */ -import { describe, it, expect } from '@angular/core/testing'; +import { describe, expect, it, inject, setBaseTestProviders } from '@angular/core/testing'; +import { TestComponentBuilder } from '@angular/compiler/testing'; +import { + TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, + TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS +} from '@angular/platform-browser-dynamic/testing'; +import { PdfViewerComponent } from './pdfViewer.component'; +import { PDFJSmock } from './assets/PDFJS.mock'; +import { PDFViewermock } from './assets/PDFViewer.mock'; describe('PdfViewer', () => { - it ('should be migrated to angular 2 rc.1', () => { - expect(false).toBe(true); + setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, + TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); + + describe('View', () => { + it('Canvas should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + + fixture.detectChanges(); + + expect(element.querySelector('#viewer-viewerPdf')).not.toBeNull(); + expect(element.querySelector('#viewer-pdf-container')).not.toBeNull(); + }); + })); + + it('Loader should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + + fixture.detectChanges(); + + expect(element.querySelector('#viewer-loader')).not.toBeNull(); + }); + })); + + + it('Next an Previous Buttons should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + + fixture.detectChanges(); + + expect(element.querySelector('#viewer-previous-page-button')).not.toBeNull(); + expect(element.querySelector('#viewer-next-page-button')).not.toBeNull(); + }); + })); + + it('Input Page elements should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + + fixture.detectChanges(); + + expect(element.querySelector('#viewer-pagenumber-input')).toBeDefined(); + expect(element.querySelector('#viewer-total-pages')).toBeDefined(); + + expect(element.querySelector('#viewer-previous-page-button')).not.toBeNull(); + expect(element.querySelector('#viewer-next-page-button')).not.toBeNull(); + }); + })); + }); + + describe('User interaction', () => { + it('Total number of pages should be loaded', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + component.urlFile = 'fake-url-file'; + spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); + spyOn(component, 'initPDFViewer').and.callFake(() => { + component.pdfViewer = new PDFViewermock(); + }); + + component.ngOnChanges().then(() => { + expect(component.totalPages).toEqual('10'); + }); + }); + })); + + it('nextPage should move to the next page', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); + spyOn(component, 'initPDFViewer').and.callFake(() => { + component.pdfViewer = new PDFViewermock(); + }); + + component.urlFile = 'fake-url-file'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(component.displayPage).toBe(1); + component.nextPage(); + fixture.detectChanges(); + expect(component.displayPage).toBe(2); + }).catch((error) => { + expect(error).toBeUndefined(); + }); + }); + })); + + it('previous page should move to the previous page', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); + spyOn(component, 'initPDFViewer').and.callFake(() => { + component.pdfViewer = new PDFViewermock(); + }); + + component.urlFile = 'fake-url-file'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(component.displayPage).toBe(1); + component.nextPage(); + component.nextPage(); + component.previousPage(); + fixture.detectChanges(); + expect(component.displayPage).toBe(2); + }).catch((error) => { + expect(error).toBeUndefined(); + }); + }); + })); + + /* tslint:disable:max-line-length */ + it('previous page should not move to the previous page if is page 1', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(PdfViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); + spyOn(component, 'initPDFViewer').and.callFake(() => { + component.pdfViewer = new PDFViewermock(); + }); + + component.urlFile = 'fake-url-file'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(component.displayPage).toBe(1); + component.previousPage(); + fixture.detectChanges(); + expect(component.displayPage).toBe(1); + }).catch((error) => { + expect(error).toBeUndefined(); + }); + }); + })); }); }); - -/* tslint:disable:max-line-length */ -// import { describe, expect, it, injectAsync, TestComponentBuilder, setBaseTestProviders } from 'angular2/testing'; -// import { TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS } from 'angular2/platform/testing/browser'; -// import { PdfViewerComponent } from './pdfViewer.component'; -// import { PDFJSmock } from './assets/PDFJS.mock'; -// import { PDFViewermock } from './assets/PDFViewer.mock'; -// -// describe('PdfViewer', () => { -// setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS); -// -// describe('View', () => { -// it('Canvas should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// -// fixture.detectChanges(); -// -// expect(element.querySelector('#viewer-viewerPdf')).not.toBeNull(); -// expect(element.querySelector('#viewer-pdf-container')).not.toBeNull(); -// }); -// })); -// -// it('Loader should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// -// fixture.detectChanges(); -// -// expect(element.querySelector('#viewer-loader')).not.toBeNull(); -// }); -// })); -// -// -// it('Next an Previous Buttons should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// -// fixture.detectChanges(); -// -// expect(element.querySelector('#viewer-previous-page-button')).not.toBeNull(); -// expect(element.querySelector('#viewer-next-page-button')).not.toBeNull(); -// }); -// })); -// -// it('Input Page elements should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// -// fixture.detectChanges(); -// -// expect(element.querySelector('#viewer-pagenumber-input')).toBeDefined(); -// expect(element.querySelector('#viewer-total-pages')).toBeDefined(); -// -// expect(element.querySelector('#viewer-previous-page-button')).not.toBeNull(); -// expect(element.querySelector('#viewer-next-page-button')).not.toBeNull(); -// }); -// })); -// }); -// -// describe('User interaction', () => { -// it('Total number of pages should be loaded', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// component.urlFile = 'fake-url-file'; -// spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); -// spyOn(component, 'initPDFViewer').and.callFake(() => { -// component.pdfViewer = new PDFViewermock(); -// }); -// -// component.ngOnChanges().then(() => { -// expect(component.totalPages).toEqual('10'); -// }); -// }); -// })); -// -// it('nextPage should move to the next page', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); -// spyOn(component, 'initPDFViewer').and.callFake(() => { -// component.pdfViewer = new PDFViewermock(); -// }); -// -// component.urlFile = 'fake-url-file'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(component.displayPage).toBe(1); -// component.nextPage(); -// fixture.detectChanges(); -// expect(component.displayPage).toBe(2); -// }).catch((error) => { -// expect(error).toBeUndefined(); -// }); -// }); -// })); -// -// it('previous page should move to the previous page', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); -// spyOn(component, 'initPDFViewer').and.callFake(() => { -// component.pdfViewer = new PDFViewermock(); -// }); -// -// component.urlFile = 'fake-url-file'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(component.displayPage).toBe(1); -// component.nextPage(); -// component.nextPage(); -// component.previousPage(); -// fixture.detectChanges(); -// expect(component.displayPage).toBe(2); -// }).catch((error) => { -// expect(error).toBeUndefined(); -// }); -// }); -// })); -// -// /* tslint:disable:max-line-length */ -// it('previous page should not move to the previous page if is page 1', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(PdfViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock()); -// spyOn(component, 'initPDFViewer').and.callFake(() => { -// component.pdfViewer = new PDFViewermock(); -// }); -// -// component.urlFile = 'fake-url-file'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(component.displayPage).toBe(1); -// component.previousPage(); -// fixture.detectChanges(); -// expect(component.displayPage).toBe(1); -// }).catch((error) => { -// expect(error).toBeUndefined(); -// }); -// }); -// })); -// }); -// }); diff --git a/ng2-components/ng2-alfresco-viewer/src/viewer.component.spec.ts b/ng2-components/ng2-alfresco-viewer/src/viewer.component.spec.ts index 7c943e628e..45418484d3 100644 --- a/ng2-components/ng2-alfresco-viewer/src/viewer.component.spec.ts +++ b/ng2-components/ng2-alfresco-viewer/src/viewer.component.spec.ts @@ -15,251 +15,243 @@ * limitations under the License. */ -import { describe, it, expect } from '@angular/core/testing'; +import {describe, expect, it, inject } from '@angular/core/testing'; +import { TestComponentBuilder } from '@angular/compiler/testing'; +import { ViewerComponent } from './viewer.component'; -describe('ViewerComponent', () => { - it ('should be migrated to angular 2 rc.1', () => { - expect(false).toBe(true); - }); -}); + describe('ViewerComponent', () => { -/* tslint:disable:max-line-length */ -// import { describe, expect, it, injectAsync, TestComponentBuilder } from 'angular2/testing'; -// import { ViewerComponent } from './viewer.component'; -// -// describe('ViewerComponent', () => { -// -// describe('View', () => { -// it('shadow overlay should be present if overlay is true', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// let component = fixture.componentInstance; -// component.urlFile = 'fake-url-file'; -// component.overlayMode = true; -// -// fixture.detectChanges(); -// -// expect(element.querySelector('#viewer-shadow-transparent')).not.toBeNull(); -// }); -// })); -// -// it('Name File should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// let component = fixture.componentInstance; -// component.urlFile = 'http://localhost:9876/fake-url-file.pdf'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-name-file').innerHTML).toEqual('fake-url-file.pdf'); -// }); -// }); -// })); -// -// /* tslint:disable:max-line-length */ -// it('should pick up filename from the fileName property when specified', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// let component = fixture.componentInstance; -// component.urlFile = 'http://localhost:9876/fake-url-file.pdf'; -// component.fileName = 'My Example.pdf'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-name-file').innerHTML).toEqual('My Example.pdf'); -// }); -// }); -// })); -// -// it('Close button should be present', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// let component = fixture.componentInstance; -// component.urlFile = 'fake-url-file'; -// -// fixture.detectChanges(); -// -// expect(element.querySelector('#viewer-close-button')).not.toBeNull(); -// }); -// })); -// -// it('Click on close button should hide the viewer', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let element = fixture.nativeElement; -// let component = fixture.componentInstance; -// component.urlFile = 'fake-url-file'; -// -// fixture.detectChanges(); -// element.querySelector('#viewer-close-button').click(); -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-main-container')).toBeNull(); -// }); -// })); -// }); -// -// describe('Attribute', () => { -// it('Url File should be mandatory', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// component.showViewer = true; -// -// expect(() => { -// component.ngOnChanges(); -// }).toThrow(); -// }); -// })); -// -// it('showViewer default value should be true', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// -// expect(component.showViewer).toBe(true); -// }); -// })); -// -// it('if showViewer value is false the viewer should be hide', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'fake-url-file'; -// component.showViewer = false; -// -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-main-container')).toBeNull(); -// }); -// })); -// }); -// -// /* tslint:disable:max-line-length */ -// describe('Extension Type Test', () => { -// it('if extension file is a pdf the pdf viewer should be loaded', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'fake-url-file.pdf'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('pdf-viewer')).not.toBeNull(); -// }); -// }); -// })); -// -// /* tslint:disable:max-line-length */ -// it('if extension file is a image the img viewer should be loaded', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'fake-url-file.png'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-image')).not.toBeNull(); -// }); -// }); -// })); -// -// /* tslint:disable:max-line-length */ -// it('if extension file is a not supported the not supported div should be loaded', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'fake-url-file.unsupported'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('not-supported-format')).not.toBeNull(); -// }); -// }); -// })); -// }); -// -// /* tslint:disable:max-line-length */ -// describe('MimeType handling', () => { -// it('should display a PDF file identified by mimetype when the filename has no extension', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'content'; -// component.mimeType = 'application/pdf'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('pdf-viewer')).not.toBeNull(); -// }); -// }); -// })); -// -// it('should display a PDF file identified by mimetype when the file extension is wrong', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'content.bin'; -// component.mimeType = 'application/pdf'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('pdf-viewer')).not.toBeNull(); -// }); -// }); -// })); -// -// it('should display an image file identified by mimetype when the filename has no extension', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'content'; -// component.mimeType = 'image/png'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-image')).not.toBeNull(); -// }); -// }); -// })); -// -// it('should display a image file identified by mimetype when the file extension is wrong', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => { -// return tcb -// .createAsync(ViewerComponent) -// .then((fixture) => { -// let component = fixture.componentInstance; -// let element = fixture.nativeElement; -// component.urlFile = 'content.bin'; -// component.mimeType = 'image/png'; -// -// component.ngOnChanges().then(() => { -// fixture.detectChanges(); -// expect(element.querySelector('#viewer-image')).not.toBeNull(); -// }); -// }); -// })); -// }); -// }); + describe('View', () => { + it('shadow overlay should be present if overlay is true', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + let component = fixture.componentInstance; + component.urlFile = 'fake-url-file'; + component.overlayMode = true; + + fixture.detectChanges(); + + expect(element.querySelector('#viewer-shadow-transparent')).not.toBeNull(); + }); + })); + + it('Name File should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + let component = fixture.componentInstance; + component.urlFile = 'http://localhost:9876/fake-url-file.pdf'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('#viewer-name-file').innerHTML).toEqual('fake-url-file.pdf'); + }); + }); + })); + + /* tslint:disable:max-line-length */ + it('should pick up filename from the fileName property when specified', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + let component = fixture.componentInstance; + component.urlFile = 'http://localhost:9876/fake-url-file.pdf'; + component.fileName = 'My Example.pdf'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('#viewer-name-file').innerHTML).toEqual('My Example.pdf'); + }); + }); + })); + + it('Close button should be present', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + let component = fixture.componentInstance; + component.urlFile = 'fake-url-file'; + + fixture.detectChanges(); + + expect(element.querySelector('#viewer-close-button')).not.toBeNull(); + }); + })); + + it('Click on close button should hide the viewer', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let element = fixture.nativeElement; + let component = fixture.componentInstance; + component.urlFile = 'fake-url-file'; + + fixture.detectChanges(); + element.querySelector('#viewer-close-button').click(); + fixture.detectChanges(); + expect(element.querySelector('#viewer-main-container')).toBeNull(); + }); + })); + }); + + describe('Attribute', () => { + it('Url File should be mandatory', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + component.showViewer = true; + + expect(() => { + component.ngOnChanges(); + }).toThrow(); + }); + })); + + it('showViewer default value should be true', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + + expect(component.showViewer).toBe(true); + }); + })); + + it('if showViewer value is false the viewer should be hide', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'fake-url-file'; + component.showViewer = false; + + fixture.detectChanges(); + expect(element.querySelector('#viewer-main-container')).toBeNull(); + }); + })); + }); + + /* tslint:disable:max-line-length */ + describe('Extension Type Test', () => { + it('if extension file is a pdf the pdf viewer should be loaded', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'fake-url-file.pdf'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('pdf-viewer')).not.toBeNull(); + }); + }); + })); + + /* tslint:disable:max-line-length */ + it('if extension file is a image the img viewer should be loaded', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'fake-url-file.png'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('#viewer-image')).not.toBeNull(); + }); + }); + })); + + /* tslint:disable:max-line-length */ + it('if extension file is a not supported the not supported div should be loaded', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'fake-url-file.unsupported'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('not-supported-format')).not.toBeNull(); + }); + }); + })); + }); + + /* tslint:disable:max-line-length */ + describe('MimeType handling', () => { + it('should display a PDF file identified by mimetype when the filename has no extension', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'content'; + component.mimeType = 'application/pdf'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('pdf-viewer')).not.toBeNull(); + }); + }); + })); + + it('should display a PDF file identified by mimetype when the file extension is wrong', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'content.bin'; + component.mimeType = 'application/pdf'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('pdf-viewer')).not.toBeNull(); + }); + }); + })); + + it('should display an image file identified by mimetype when the filename has no extension', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'content'; + component.mimeType = 'image/png'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('#viewer-image')).not.toBeNull(); + }); + }); + })); + + it('should display a image file identified by mimetype when the file extension is wrong', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + return tcb + .createAsync(ViewerComponent) + .then((fixture) => { + let component = fixture.componentInstance; + let element = fixture.nativeElement; + component.urlFile = 'content.bin'; + component.mimeType = 'image/png'; + + component.ngOnChanges().then(() => { + fixture.detectChanges(); + expect(element.querySelector('#viewer-image')).not.toBeNull(); + }); + }); + })); + }); + });