1 # -*- coding: utf-8 -*-
3 from os.path import dirname, join, realpath
6 from librarian import dcparser, html
9 def test_file_path(dir_name, file_name):
10 return realpath(join(dirname(__file__), 'files', dir_name, file_name))
13 class TestDCParser(unittest.TestCase):
15 ('dcparser', 'andersen_brzydkie_kaczatko.xml', {
16 'publisher': u'Fundacja Nowoczesna Polska',
17 'about': u'http://wiki.wolnepodreczniki.pl/Lektury:Andersen/Brzydkie_kaczątko',
18 'source_name': u'Andersen, Hans Christian (1805-1875), Baśnie, Gebethner i Wolff, wyd. 7, Kraków, 1925',
19 'author': u'Andersen, Hans Christian',
20 'url': u'http://wolnelektury.pl/katalog/lektura/brzydkie-kaczatko',
21 'created_at': u'2007-08-14',
22 'title': u'Brzydkie kaczątko',
24 'source_url': u'http://www.polona.pl/dlibra/doccontent2?id=3563&dirids=4',
25 'translator': u'Niewiadomska, Cecylia',
26 'released_to_public_domain_at': u'1925-01-01',
27 'epoch': u'Romantyzm',
29 'technical_editor': u'Gałecki, Dariusz',
30 'license_description': u'Domena publiczna - tłumacz Cecylia Niewiadomska zm. 1925',
32 ('dcparser', 'kochanowski_piesn7.xml', {
33 'publisher': u'Fundacja Nowoczesna Polska',
34 'about': u'http://wiki.wolnepodreczniki.pl/Lektury:Kochanowski/Pieśni/Pieśń_VII_(1)',
35 'source_name': u'Kochanowski, Jan (1530-1584), Dzieła polskie, tom 1, oprac. Julian Krzyżanowski, wyd. 8, Państwowy Instytut Wydawniczy, Warszawa, 1976',
36 'author': u'Kochanowski, Jan',
37 'url': u'http://wolnelektury.pl/katalog/lektura/piesni-ksiegi-pierwsze-piesn-vii-trudna-rada-w-tej-mierze-pr',
38 'created_at': u'2007-08-31',
39 'title': u'Pieśń VII (Trudna rada w tej mierze: przyjdzie się rozjechać...)',
41 'source_url': u'http://www.polona.pl/Content/1499',
42 'released_to_public_domain_at': u'1584-01-01',
45 'technical_editor': u'Gałecki, Dariusz',
46 'license_description': u'Domena publiczna - Jan Kochanowski zm. 1584 ',
48 ('dcparser', 'mickiewicz_rybka.xml', {
49 'publisher': u'Fundacja Nowoczesna Polska',
50 'about': 'http://wiki.wolnepodreczniki.pl/Lektury:Mickiewicz/Ballady/Rybka',
51 'source_name': u'Mickiewicz, Adam (1798-1855), Poezje, tom 1 (Wiersze młodzieńcze - Ballady i romanse - Wiersze do r. 1824), Krakowska Spółdzielnia Wydawnicza, wyd. 2 zwiększone, Kraków, 1922',
52 'author': u'Mickiewicz, Adam',
53 'url': u'http://wolnelektury.pl/katalog/lektura/ballady-i-romanse-rybka',
54 'created_at': u'2007-09-06',
57 'source_url': u'http://www.polona.pl/Content/2222',
58 'released_to_public_domain_at': u'1855-01-01',
59 'epoch': u'Romantyzm',
61 'technical_editor': u'Sutkowska, Olga',
62 'license_description': u'Domena publiczna - Adam Mickiewicz zm. 1855',
64 ('dcparser', 'sofokles_antygona.xml', {
65 'publisher': u'Fundacja Nowoczesna Polska',
66 'about': 'http://wiki.wolnepodreczniki.pl/Lektury:Sofokles/Antygona',
67 'source_name': u'Sofokles (496-406 a.C.), Antygona, Zakład Narodowy im. Ossolińskich, wyd. 7, Lwów, 1939',
68 'author': u'Sofokles',
69 'url': u'http://wolnelektury.pl/katalog/lektura/antygona',
70 'created_at': u'2007-08-30',
73 'source_url': u'http://www.polona.pl/Content/3768',
74 'translator': u'Morawski, Kazimierz',
75 'released_to_public_domain_at': u'1925-01-01',
76 'epoch': u'Starożytność',
78 'technical_editor': u'Gałecki, Dariusz',
79 'license_description': u'Domena publiczna - tłumacz Kazimierz Morawski zm. 1925',
81 ('dcparser', 'biedrzycki_akslop.xml', {
82 'publisher': u'Fundacja Nowoczesna Polska',
83 'about': 'http://wiki.wolnepodreczniki.pl/Lektury:Biedrzycki/Akslop',
84 'source_name': u'Miłosz Biedrzycki, * ("Gwiazdka"), Fundacja "brulion", Kraków-Warszawa, 1993',
85 'author': u'Biedrzycki, Miłosz',
86 'url': u'http://wolnelektury.pl/katalog/lektura/akslop',
87 'created_at': u'2009-06-04',
90 'source_url': u'http://free.art.pl/mlb/gwiazdka.html#t1',
91 'epoch': u'Współczesność',
93 'technical_editor': u'Sutkowska, Olga',
94 'license': u'http://creativecommons.org/licenses/by-sa/3.0/',
95 'license_description': u'Creative Commons Uznanie Autorstwa - Na Tych Samych Warunkach 3.0.PL'
100 for dir_name, file_name, result in self.KNOWN_RESULTS:
101 self.assertEqual(dcparser.parse(test_file_path(dir_name, file_name)).to_dict(), result)
104 class TestParserErrors(unittest.TestCase):
106 def test_error(self):
108 html.transform(test_file_path('erroneous', 'asnyk_miedzy_nami.xml'),
109 test_file_path('erroneous', 'asnyk_miedzy_nami.html'))
111 except etree.XMLSyntaxError, e:
112 import ipdb; ipdb.set_trace()
114 self.assertEqual(e.position, (25, 13))
117 if __name__ == '__main__':