Many FB2 fixes
[librarian.git] / tests / test_picture.py
1 # -*- coding: utf-8 -*-
2 #
3 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
5 #
6 from librarian import picture, dcparser
7 from lxml import etree
8 from nose.tools import *
9 from os.path import splitext
10 from tests.utils import get_all_fixtures, get_fixture
11 import codecs
12 from os import path
13
14 def test_wlpictureuri():
15     uri = picture.WLPictureURI('http://wolnelektury.pl/katalog/obraz/angelus-novus')
16
17 def check_load(xml_file):
18     pi = dcparser.parse(xml_file, picture.PictureInfo)
19     assert pi is not None
20     assert isinstance(pi, picture.PictureInfo)
21     
22
23 def test_load():
24     for fixture in get_all_fixtures('picture', '*.xml'):
25         yield check_load, fixture
26
27
28 def test_wlpicture():
29     wlp = picture.WLPicture.from_file(open(get_fixture('picture', 'angelus-novus.xml')))
30     pi = wlp.picture_info
31
32     #    from nose.tools import set_trace; set_trace()
33     assert pi.type[0] == u"Image"
34     assert pi.mime_type == u'image/jpeg' == wlp.mime_type
35     assert wlp.slug == 'angelus-novus'
36
37     assert path.exists(wlp.image_path)
38     
39     f = wlp.image_file('r')
40     f.close()
41
42 def test_picture_parts():
43     wlp = picture.WLPicture.from_file(open(get_fixture('picture', 'angelus-novus.xml')))
44     parts = list(wlp.partiter())
45     assert len(parts) == 5, "there should be %d parts of the picture" % 5
46     motifs = set()
47     names = set()
48
49     print parts
50     for p in parts:
51         for m in p['themes']:
52             motifs.add(m)
53     for p in parts:
54         if p['object']:
55             names.add(p['object'])
56
57     assert motifs == set([u'anioł historii', u'spojrzenie']), "missing motifs, got: %s" % motifs
58     assert names == set([u'obraz cały', u'skrzydło']), 'missing objects, got: %s' % names
59     
60