EPUB3 support.
[librarian.git] / tests / test_epub.py
index 4ac874a..9ff1b41 100644 (file)
@@ -5,7 +5,9 @@
 #
 from __future__ import unicode_literals
 
+import subprocess
 from zipfile import ZipFile
+from ebooklib import epub
 from lxml import html
 from nose.tools import *
 from librarian import DirDocProvider
@@ -14,14 +16,14 @@ from tests.utils import get_fixture
 
 
 def test_transform():
-    epub = WLDocument.from_file(
+    epub_file = WLDocument.from_file(
             get_fixture('text', 'asnyk_zbior.xml'),
             provider=DirDocProvider(get_fixture('text', ''))
-        ).as_epub(flags=['without_fonts']).get_file()
-    zipf = ZipFile(epub)
+        ).as_epub(cover=True, flags=['without_fonts'])
+    zipf = ZipFile(epub_file.get_file())
 
     # Check contributor list.
-    last = zipf.open('OPS/last.html')
+    last = zipf.open('EPUB/last.xhtml')
     tree = html.parse(last)
     editors_attribution = False
     for par in tree.findall("//p"):
@@ -33,6 +35,60 @@ def test_transform():
                 u'Adam Fikcyjny, Aleksandra Sekuła, Olga Sutkowska.')
     assert_true(editors_attribution)
 
+    # Check that we have a valid EPUB.
+    assert_equal(
+        subprocess.call([
+            'epubcheck', '-quiet', epub_file.get_filename()
+        ]),
+        0
+    )
+
+    book = epub.read_epub(epub_file.get_filename())
+
+    # Check that guide items are there.
+    assert_equals(
+        book.guide,
+        [
+            {'href': 'part1.xhtml', 'title': 'Początek', 'type': 'text'},
+            {'href': 'cover.xhtml', 'title': 'Okładka', 'type': 'cover'}
+        ]
+    )
+
+    # Check that metadata is there.
+    DC = "http://purl.org/dc/elements/1.1/"
+    OPF = "http://www.idpf.org/2007/opf"
+
+    assert_equals(
+        book.get_metadata(OPF, "cover"),
+        [(None, {'name': 'cover', 'content': 'cover-img'})]
+    )
+    assert_equals(
+        book.get_metadata(DC, "title"),
+        [('Poezye', {})]
+    )
+    assert_equals(
+        book.get_metadata(DC, "language"),
+        [('pl', {})]
+    )
+    assert_equals(
+        book.get_metadata(DC, "identifier"),
+        [('http://wolnelektury.pl/katalog/lektura/poezye', {
+            'id': 'id',
+        })]
+    )
+    assert_equals(
+        book.get_metadata(DC, "creator"),
+        [('Adam Asnyk', {"id": "creator"})]
+    )
+    assert_equals(
+        book.get_metadata(DC, "publisher"),
+        [('Fundacja Nowoczesna Polska', {})]
+    )
+    assert_equals(
+        book.get_metadata(DC, "date"),
+        [("2007-09-06", {})]
+    )
+
 
 def test_transform_hyphenate():
     epub = WLDocument.from_file(