add test resize view and input value

This commit is contained in:
Eugenio Romano 2016-06-21 12:43:40 +01:00
parent d8856b541d
commit 3add949925
4 changed files with 117 additions and 40 deletions

View File

@ -23,4 +23,25 @@ export class PDFViewermock {
currentPage = { currentPage = {
renderingState: 3 as number renderingState: 3 as number
}; };
_pages: any =
[{
width: 793,
scale: 1,
update: this.update
}, {
width: 793,
scale: 1,
update: this.update
}, {
width: 793,
scale: 1,
update: this.update
}];
_currentPageNumber: number = 0;
update() {
console.log('update page');
}
} }

View File

@ -25,6 +25,11 @@ export class EventMock {
document.dispatchEvent(event); document.dispatchEvent(event);
} }
static resizeMobileView() {
window.innerWidth = 320;
window.innerHeight = 568;
window.dispatchEvent(new Event('resize'));
}
} }

View File

@ -237,5 +237,56 @@ describe('PdfViewer', () => {
}); });
}); });
})); }));
it('Input page should move to the inserted 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.inputPage('4');
fixture.detectChanges();
expect(component.displayPage).toBe(4);
}).catch((error) => {
expect(error).toBeUndefined();
});
});
}));
}); });
describe('Rezize interaction', () => {
it('resize event should trigger setScaleUpdatePages', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => {
return tcb
.createAsync(PdfViewerComponent)
.then((fixture) => {
let component = fixture.componentInstance;
let element = fixture.nativeElement;
spyOn(component, 'getPDFJS').and.returnValue(new PDFJSmock());
spyOn(component, 'initPDFViewer');
spyOn(component, 'setScaleUpdatePages');
component.documentContainer = element.querySelector('#viewer-pdf-container');
component.pdfViewer = new PDFViewermock();
component.urlFile = 'fake-url-file';
EventMock.resizeMobileView();
expect(component.setScaleUpdatePages).toHaveBeenCalled();
});
}));
});
}); });

View File

@ -24,7 +24,7 @@ declare let __moduleName: string;
moduleId: __moduleName, moduleId: __moduleName,
selector: 'pdf-viewer', selector: 'pdf-viewer',
templateUrl: './pdfViewer.component.html', templateUrl: './pdfViewer.component.html',
styleUrls: ['./pdfViewer.component.css', './pdfViewerHost.component.css' ] styleUrls: ['./pdfViewer.component.css', './pdfViewerHost.component.css']
}) })
export class PdfViewerComponent { export class PdfViewerComponent {
@ -41,11 +41,9 @@ export class PdfViewerComponent {
pdfViewer: any; pdfViewer: any;
currentScaleMode: string; currentScaleMode: string = 'auto';
currentScale: number; currentScale: number;
documentContainer: any;
MAX_AUTO_SCALE: number = 1.25; MAX_AUTO_SCALE: number = 1.25;
ngOnChanges(changes) { ngOnChanges(changes) {
@ -86,11 +84,11 @@ export class PdfViewerComponent {
PDFJS.verbosity = 5; PDFJS.verbosity = 5;
PDFJS.disableWorker = true; PDFJS.disableWorker = true;
this.documentContainer = document.getElementById('viewer-pdf-container'); let documentContainer = document.getElementById('viewer-pdf-container');
let viewer: any = document.getElementById('viewer-viewerPdf'); let viewer: any = document.getElementById('viewer-viewerPdf');
this.pdfViewer = new PDFJS.PDFViewer({ this.pdfViewer = new PDFJS.PDFViewer({
container: this.documentContainer, container: documentContainer,
viewer: viewer viewer: viewer
}); });
@ -105,43 +103,46 @@ export class PdfViewerComponent {
scalePage(scaleMode) { scalePage(scaleMode) {
this.currentScaleMode = scaleMode; this.currentScaleMode = scaleMode;
let currentPage = this.pdfViewer._pages[this.pdfViewer._currentPageNumber]; if (this.pdfViewer) {
let documentContainer = document.getElementById('viewer-pdf-container');
let currentPage = this.pdfViewer._pages[this.pdfViewer._currentPageNumber];
let padding = 20; let padding = 20;
let pageWidthScale = (this.documentContainer.clientWidth - padding) / currentPage.width * currentPage.scale; let pageWidthScale = (documentContainer.clientWidth - padding) / currentPage.width * currentPage.scale;
let pageHeightScale = (this.documentContainer.clientHeight - padding) / currentPage.width * currentPage.scale; let pageHeightScale = (documentContainer.clientHeight - padding) / currentPage.width * currentPage.scale;
let scale; let scale;
switch (this.currentScaleMode) { switch (this.currentScaleMode) {
case 'page-actual': case 'page-actual':
scale = 1; scale = 1;
break; break;
case 'page-width': case 'page-width':
scale = pageWidthScale; scale = pageWidthScale;
break; break;
case 'page-height': case 'page-height':
scale = pageHeightScale; scale = pageHeightScale;
break; break;
case 'page-fit': case 'page-fit':
scale = Math.min(pageWidthScale, pageHeightScale); scale = Math.min(pageWidthScale, pageHeightScale);
break; break;
case 'auto': case 'auto':
let horizontalScale; let horizontalScale;
if (this.isLandscape) { if (this.isLandscape) {
horizontalScale = Math.min(pageHeightScale, pageWidthScale); horizontalScale = Math.min(pageHeightScale, pageWidthScale);
} else { } else {
horizontalScale = pageWidthScale; horizontalScale = pageWidthScale;
} }
scale = Math.min(this.MAX_AUTO_SCALE, horizontalScale); scale = Math.min(this.MAX_AUTO_SCALE, horizontalScale);
break; break;
default: default:
console.error('pdfViewSetScale: \'' + scaleMode + '\' is an unknown zoom value.'); console.error('pdfViewSetScale: \'' + scaleMode + '\' is an unknown zoom value.');
return; return;
}
this.setScaleUpdatePages(scale);
} }
this.setScaleUpdatePages(scale);
} }
/** /**
@ -154,7 +155,6 @@ export class PdfViewerComponent {
this.pdfViewer._pages.forEach(function (currentPage) { this.pdfViewer._pages.forEach(function (currentPage) {
currentPage.update(newScale); currentPage.update(newScale);
console.log(currentPage.viewport);
}); });
this.pdfViewer.update(); this.pdfViewer.update();
@ -230,7 +230,7 @@ export class PdfViewerComponent {
if (!isNaN(pageInput) && pageInput > 0 && pageInput <= this.totalPages) { if (!isNaN(pageInput) && pageInput > 0 && pageInput <= this.totalPages) {
this.page = pageInput; this.page = pageInput;
this.displayPage = this.page;
this.pdfViewer.currentPageNumber = this.page; this.pdfViewer.currentPageNumber = this.page;
} else { } else {
this.displayPage = this.page; this.displayPage = this.page;