diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 911781e82..ec2d0568e 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -217,3 +217,4 @@ !annotation-strikeout.pdf !annotation-squiggly.pdf !annotation-highlight.pdf +!annotation-fileattachment.pdf diff --git a/test/pdfs/annotation-fileattachment.pdf b/test/pdfs/annotation-fileattachment.pdf new file mode 100644 index 000000000..c3b60cd7e Binary files /dev/null and b/test/pdfs/annotation-fileattachment.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 589f96ba0..7b40b6622 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2764,6 +2764,13 @@ "type": "eq", "annotations": true }, + { "id": "annotation-fileattachment", + "file": "pdfs/annotation-fileattachment.pdf", + "md5": "d20ecee4b53c81b2dd44c8715a1b4a83", + "rounds": 1, + "type": "eq", + "annotations": true + }, { "id": "issue6108", "file": "pdfs/issue6108.pdf", "md5": "8961cb55149495989a80bf0487e0f076", diff --git a/test/unit/annotation_layer_spec.js b/test/unit/annotation_layer_spec.js index d97861aba..df44e62a6 100644 --- a/test/unit/annotation_layer_spec.js +++ b/test/unit/annotation_layer_spec.js @@ -1,9 +1,25 @@ /* globals expect, it, describe, Dict, Name, Annotation, AnnotationBorderStyle, - AnnotationBorderStyleType, AnnotationFlag */ + AnnotationBorderStyleType, AnnotationFlag, PDFJS, combineUrl, + waitsFor, beforeEach, afterEach, stringToBytes */ 'use strict'; describe('Annotation layer', function() { + function waitsForPromiseResolved(promise, successCallback) { + var resolved = false; + promise.then(function(val) { + resolved = true; + successCallback(val); + }, + function(error) { + // Shouldn't get here. + expect(error).toEqual('the promise should not have been rejected'); + }); + waitsFor(function() { + return resolved; + }, 20000); + } + describe('Annotation', function() { it('should set and get flags', function() { var dict = new Dict(); @@ -172,4 +188,33 @@ describe('Annotation layer', function() { expect(borderStyle.verticalCornerRadius).toEqual(0); }); }); + + describe('FileAttachmentAnnotation', function() { + var loadingTask; + var annotations; + + beforeEach(function() { + var pdfUrl = combineUrl(window.location.href, + '../pdfs/annotation-fileattachment.pdf'); + loadingTask = PDFJS.getDocument(pdfUrl); + waitsForPromiseResolved(loadingTask.promise, function(pdfDocument) { + waitsForPromiseResolved(pdfDocument.getPage(1), function(pdfPage) { + waitsForPromiseResolved(pdfPage.getAnnotations(), + function (pdfAnnotations) { + annotations = pdfAnnotations; + }); + }); + }); + }); + + afterEach(function() { + loadingTask.destroy(); + }); + + it('should correctly parse a file attachment', function() { + var annotation = annotations[0]; + expect(annotation.file.filename).toEqual('Test.txt'); + expect(annotation.file.content).toEqual(stringToBytes('Test attachment')); + }); + }); });