Some prelim work on builder api.
[librarian.git] / tests / test_epub.py
index 9ff1b41..f3986c4 100644 (file)
-# -*- coding: utf-8 -*-
-#
 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
 #
 #
-from __future__ import unicode_literals
-
 import subprocess
 import subprocess
+import unittest
 from zipfile import ZipFile
 from ebooklib import epub
 from lxml import html
 from zipfile import ZipFile
 from ebooklib import epub
 from lxml import html
-from nose.tools import *
 from librarian import DirDocProvider
 from librarian import DirDocProvider
-from librarian.parser import WLDocument
+from librarian.builders import EpubBuilder
+from librarian.document import WLDocument
 from tests.utils import get_fixture
 
 
 from tests.utils import get_fixture
 
 
-def test_transform():
-    epub_file = WLDocument.from_file(
-            get_fixture('text', 'asnyk_zbior.xml'),
-            provider=DirDocProvider(get_fixture('text', ''))
-        ).as_epub(cover=True, flags=['without_fonts'])
-    zipf = ZipFile(epub_file.get_file())
-
-    # Check contributor list.
-    last = zipf.open('EPUB/last.xhtml')
-    tree = html.parse(last)
-    editors_attribution = False
-    for par in tree.findall("//p"):
-        if par.text.startswith(u'Opracowanie redakcyjne i przypisy:'):
-            editors_attribution = True
-            assert_equal(
-                par.text.rstrip(),
-                u'Opracowanie redakcyjne i przypisy: '
-                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
-    )
+class EpubTests(unittest.TestCase):
+    def test_transform(self):
+        epub_file = EpubBuilder().build(
+            WLDocument(
+                get_fixture('text', 'asnyk_zbior.xml'),
+                provider=DirDocProvider(get_fixture('text', ''))
+            )
+        )
+        zipf = ZipFile(epub_file.get_file())
 
 
-    book = epub.read_epub(epub_file.get_filename())
+        # Check contributor list.
+        last = zipf.open('EPUB/last.xhtml')
+        tree = html.parse(last)
+        editors_attribution = False
+        for par in tree.findall("//p"):
+            if par.text.startswith('Opracowanie redakcyjne i przypisy:'):
+                editors_attribution = True
+                self.assertEqual(
+                    par.text.rstrip(),
+                    'Opracowanie redakcyjne i przypisy: '
+                    'Adam Fikcyjny, Aleksandra Sekuła, Olga Sutkowska.')
+        self.assertTrue(editors_attribution)
 
 
-    # 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 we have a valid EPUB.
+        self.assertEqual(
+            subprocess.call([
+                'epubcheck', '-quiet', epub_file.get_filename()
+            ]),
+            0
+        )
 
 
-    # Check that metadata is there.
-    DC = "http://purl.org/dc/elements/1.1/"
-    OPF = "http://www.idpf.org/2007/opf"
+        book = epub.read_epub(epub_file.get_filename())
 
 
-    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", {})]
-    )
+        # Check that guide items are there.
+        self.assertEqual(
+            book.guide,
+            [
+                {'href': 'cover.xhtml', 'title': 'Okładka', 'type': 'cover'},
+                {'href': 'part1.xhtml', 'title': 'Początek', 'type': 'text'},
+            ]
+        )
 
 
+        # Check that metadata is there.
+        DC = "http://purl.org/dc/elements/1.1/"
+        OPF = "http://www.idpf.org/2007/opf"
 
 
-def test_transform_hyphenate():
-    epub = WLDocument.from_file(
-            get_fixture('text', 'asnyk_zbior.xml'),
-            provider=DirDocProvider(get_fixture('text', ''))
-        ).as_epub(
-            flags=['without_fonts'],
-            hyphenate=True
-        ).get_file()
+        self.assertEqual(
+            book.get_metadata(OPF, "cover"),
+            [(None, {'name': 'cover', 'content': 'cover-img'})]
+        )
+        self.assertEqual(
+            book.get_metadata(DC, "title"),
+            [('Poezye', {})]
+        )
+        self.assertEqual(
+            book.get_metadata(DC, "language"),
+            [('pl', {})]
+        )
+        self.assertEqual(
+            book.get_metadata(DC, "identifier"),
+            [('http://wolnelektury.pl/katalog/lektura/poezye', {
+                'id': 'id',
+            })]
+        )
+        self.assertEqual(
+            book.get_metadata(DC, "creator"),
+            [('Adam Asnyk', {"id": "creator0"})]
+        )
+        self.assertEqual(
+            book.get_metadata(DC, "publisher"),
+            [('Fundacja Wolne Lektury', {})]
+        )
+        self.assertEqual(
+            book.get_metadata(DC, "date"),
+            [("2007-09-06", {})]
+        )