fixes for edge cases
[librarian.git] / tests / test_picture.py
index 4e3b252..7d12b1d 100644 (file)
@@ -3,17 +3,17 @@
 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+from __future__ import unicode_literals
+
 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
@@ -31,10 +31,29 @@ def test_wlpicture():
 
     #    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 pi.mime_type == u'image/jpeg' == wlp.mime_type
     assert wlp.slug == 'angelus-novus'
 
     assert path.exists(wlp.image_path)
     
-    f = wlp.image_file('r')
+    f = wlp.image_file()
     f.close()
+
+
+def test_picture_parts():
+    wlp = picture.WLPicture.from_file(open(get_fixture('picture', 'angelus-novus.xml')))
+    parts = list(wlp.partiter())
+    expect_parts = 4
+    assert len(parts) == expect_parts, "there should be %d parts of the picture" % expect_parts
+    motifs = set()
+    names = set()
+
+    for p in parts:
+        for m in p['themes']:
+            motifs.add(m)
+    for p in parts:
+        if p['object']:
+            names.add(p['object'])
+
+    assert motifs == {u'anioł historii', u'spojrzenie'}, "missing motifs, got: %s" % motifs
+    assert names == {u'obraz cały', u'skrzydło'}, 'missing objects, got: %s' % names