1 # -*- coding: utf-8 -*-
3 # This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
6 from __future__ import unicode_literals
8 from librarian import dcparser
10 from nose.tools import *
11 from os.path import splitext
12 from tests.utils import get_all_fixtures
14 from datetime import date
17 def check_dcparser(xml_file, result_file):
18 xml = open(xml_file, 'rb').read()
19 result = codecs.open(result_file, encoding='utf-8').read()
20 info = dcparser.BookInfo.from_bytes(xml).to_dict()
21 should_be = eval(result)
23 assert_equals(info[key], should_be[key])
27 for fixture in get_all_fixtures('dcparser', '*.xml'):
28 base_name = splitext(fixture)[0]
29 yield check_dcparser, fixture, base_name + '.out'
32 def check_serialize(xml_file):
33 xml = open(xml_file, 'rb').read()
34 info = dcparser.BookInfo.from_bytes(xml)
37 serialized = etree.tostring(info.to_etree(), encoding='unicode').encode('utf-8')
39 info_bis = dcparser.BookInfo.from_bytes(serialized)
41 # check if they are the same
42 for key in vars(info):
43 assert_equals(getattr(info, key), getattr(info_bis, key))
44 for key in vars(info_bis):
45 assert_equals(getattr(info, key), getattr(info_bis, key))
49 for fixture in get_all_fixtures('dcparser', '*.xml'):
50 yield check_serialize, fixture
54 assert_equals(dcparser.as_date(u"2010-10-03"), date(2010, 10, 3))
55 assert_equals(dcparser.as_date(u"2011"), date(2011, 1, 1))
56 assert_equals(dcparser.as_date(u"2 poł. XIX w."), date(1950, 1, 1))
57 assert_equals(dcparser.as_date(u"XVII w., l. 20"), date(1720, 1, 1))
58 assert_equals(dcparser.as_date(u"po 1460"), date(1460, 1, 1))
59 assert_equals(dcparser.as_date(u"ok. 1813-1814"), date(1813, 1, 1))
60 assert_equals(dcparser.as_date(u"ok.1876-ok.1886"), date(1876, 1, 1))
61 assert_equals(dcparser.as_date(u"1893/1894"), date(1893, 1, 1))