bit longer author field
[librarian.git] / tests / test_picture.py
index 4e3b252..afa4da8 100644 (file)
@@ -1,40 +1,56 @@
-# -*- coding: utf-8 -*-
-#
 # 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 os import path
+import unittest
 from librarian import picture, dcparser
-from lxml import etree
-from nose.tools import *
-from os.path import splitext
 from tests.utils import get_all_fixtures, get_fixture
-import codecs
-from os import path
 
-def test_wlpictureuri():
-    uri = picture.WLPictureURI('http://wolnelektury.pl/katalog/obraz/angelus-novus')
 
-def check_load(xml_file):
-    pi = dcparser.parse(xml_file, picture.PictureInfo)
-    assert pi is not None
-    assert isinstance(pi, picture.PictureInfo)
+class PictureTests(unittest.TestCase):
+    def test_wlpictureuri(self):
+        uri = picture.WLPictureURI('http://wolnelektury.pl/katalog/obraz/angelus-novus')
+
+    def check_load(self, xml_file):
+        pi = dcparser.parse(xml_file, picture.PictureInfo)
+        self.assertIsNotNone(pi)
+        self.assertIsInstance(pi, picture.PictureInfo)
     
+    def test_load(self):
+        for fixture in get_all_fixtures('picture', '*.xml'):
+            with self.subTest(fixture=fixture):
+                self.check_load(fixture)
 
-def test_load():
-    for fixture in get_all_fixtures('picture', '*.xml'):
-        yield check_load, fixture
+    def test_wlpicture(self):
+        with open(get_fixture('picture', 'angelus-novus.xml')) as f:
+            wlp = picture.WLPicture.from_file(f)
+        pi = wlp.picture_info
 
+        self.assertEqual(pi.type[0], "Image")
+        self.assertEqual(pi.mime_type, 'image/jpeg')
+        self.assertEqual(wlp.mime_type, 'image/jpeg')
+        self.assertEqual(wlp.slug, 'angelus-novus')
+        self.assertTrue(path.exists(wlp.image_path))
+    
+        f = wlp.image_file()
+        f.close()
 
-def test_wlpicture():
-    wlp = picture.WLPicture.from_file(open(get_fixture('picture', 'angelus-novus.xml')))
-    pi = wlp.picture_info
 
-    #    from nose.tools import set_trace; set_trace()
-    assert pi.type[0] == u"Image"
-    assert pi.mime_type == u'image/png' == wlp.mime_type
-    assert wlp.slug == 'angelus-novus'
+    def test_picture_parts(self):
+        with open(get_fixture('picture', 'angelus-novus.xml')) as f:
+            wlp = picture.WLPicture.from_file(f)
+        parts = list(wlp.partiter())
+        expect_parts = 4
+        self.assertEqual(len(parts), expect_parts, "there should be %d parts of the picture" % expect_parts)
+        motifs = set()
+        names = set()
 
-    assert path.exists(wlp.image_path)
-    
-    f = wlp.image_file('r')
-    f.close()
+        for p in parts:
+            for m in p['themes']:
+                motifs.add(m)
+        for p in parts:
+            if p['object']:
+                names.add(p['object'])
+
+        self.assertEqual(motifs, {'anioł historii', 'spojrzenie'}, "missing motifs, got: %s" % motifs)
+        self.assertEqual(names, {'obraz cały', 'skrzydło'}, 'missing objects, got: %s' % names)