def test_image_fixture(self): self.assert_paths(fixture('image_fixture/apie'), ['apie.html']) self.assert_paths(fixture('image_fixture/naujienos'), [ 'naujiena_0944', 'naujiena_1020', 'naujiena_0007', 'naujiena_0985', ]) self.assert_paths(fixture('image_fixture/skaitykla'), [ 'pranesimai.html', ])
def test_image_fixture(self): self.assert_paths(fixture('image_fixture/apie'), ['apie.html']) self.assert_paths(fixture('image_fixture/naujienos'), [ 'naujiena_0007', 'naujiena_0944', 'naujiena_0985', 'naujiena_1020', ]) self.assert_paths(fixture('image_fixture/skaitykla'), [ 'pranesimai.html', ])
def test_parse_images(self): root = get_default_site().root_page path = fixture('image_fixture/apie/apie.html') importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) result = importer.parse_images(path, '\n'.join([ '<img src="../images/akl.jpg" alt="AKL Rumšiškėse"', ' height="181" width="285" border="0"', ' class="lphoto"/>', ])) self.assertEqual(result, ( '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="1"/>' # noqa ))
def test_import_page_image(self): root = get_default_site().root_page importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Test if Image objects where created. self.assertTrue(Image.objects.filter(title__in=( 'AKL Rumšiškėse', 'AKL steigiamasis susirinkimas (II)', )).exists()) # Test if HTML is replaced as intended. def imgid(title): return Image.objects.get(title=title).pk imgids = [ imgid('AKL Rumšiškėse'), imgid('AKL steigiamasis susirinkimas (II)'), ] page = StandardPage.objects.get(url_path='/home/apie/apie/') tags = [ m.group(0) for m in re.finditer(r'<(embed|img)\b[^>]+>', page.body) ] self.assertEqual(tags, [ '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="%d"/>' % imgids[0], '<embed alt="AKL steigiamasis susirinkimas (II)" embedtype="image" format="right" id="%d"/>' % imgids[1], '<img src=\'http://wesnoth.org/start/1.10/images/start-1.jpg\' alt=\'Vesnoto ekranvaizdis\'/>', ])
def test_import_page_image(self): root = get_default_site().root_page importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Test if Image objects where created. self.assertTrue( Image.objects.filter(title__in=( 'AKL Rumšiškėse', 'AKL steigiamasis susirinkimas (II)', )).exists()) # Test if HTML is replaced as intended. def imgid(title): return Image.objects.get(title=title).pk imgids = [ imgid('AKL Rumšiškėse'), imgid('AKL steigiamasis susirinkimas (II)'), ] page = StandardPage.objects.get(url_path='/home/apie/apie/') tags = [ m.group(0) for m in re.finditer(r'<(embed|img)\b[^>]+>', page.body) ] self.assertEqual(tags, [ '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="%d"/>' % imgids[0], '<embed alt="AKL steigiamasis susirinkimas (II)" embedtype="image" format="right" id="%d"/>' % imgids[1], '<img src=\'http://wesnoth.org/start/1.10/images/start-1.jpg\' alt=\'Vesnoto ekranvaizdis\'/>', ])
def test_parse_images(self): root = get_default_site().root_page path = fixture('image_fixture/apie/apie.html') importer = PagesImporter('apie', 'apie') importer.set_up(root, fixture('image_fixture')) result = importer.parse_images( path, '\n'.join([ '<img src="../images/akl.jpg" alt="AKL Rumšiškėse"', ' height="181" width="285" border="0"', ' class="lphoto"/>', ])) self.assertEqual( result, ( '<embed alt="AKL Rumšiškėse" embedtype="image" format="left" id="1"/>' # noqa ))
def test_command(self): get_default_site() self.assertEqual(Page.objects.count(), 2) call_command('akllt_importzope', str(fixture('whole_export')), verbosity=0) self.assertEqual(Page.objects.count(), 37)
def test_iter_news_files(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) paths = importer.iterate_paths() self.assertEqual(sorted([p.path.name for p in paths]), [ 'naujiena_0001', 'naujiena_1016', ])
def test_iter_news_files(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) paths = importer.iterate_paths() self.assertEqual(sorted([p.path.name for p in paths]), [ 'naujiena_0001', 'naujiena_1016', ])
def test_get_total(self): root = get_default_site().root_page manager = ImportManager(root, fixture('whole_export')) manager.add_importers([ NewsImporter('Naujienos', 'naujienos'), PagesImporter('Atviras kodas', 'ak'), ]) self.assertEqual(manager.get_total(), 19)
def test_parse_metadata(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) items = importer.iterate_paths() data = map(importer.parse_metadata, items) data = sorted(map(shorten_values, data), key=itemgetter('slug')) eq = self.assertEqual eq(len(data), 2) eq( data[0], { 'date': datetime.date(2002, 10, 15), 'title': 'Konkursas', 'blurb': '<p>Vilniuje, dvi dienas ...', 'body': '<p>Vilniuje, dvi dienas ...', 'slug': 'naujiena_0001', }) eq(len(data[1]), 10) eq(data[1]['date'], datetime.date(2010, 3, 16)) eq(data[1]['email'], '*****@*****.**') eq(data[1]['profesionalams'], False) eq(data[1]['title'], 'Praktinis seminaras moky...') eq(data[1]['author'], 'Antanas') eq(data[1]['blurb'], '2010m. kovo 22 ir 26 die...') eq(data[1]['body'], '<p>2010m. kovo 22 ir 26 ...') eq(len(data[1]['categories']), 10) eq(data[1]['categories'][0], 'Biuro programos') eq(data[1]['categories'][1], 'OpenOffice') eq(data[1]['categories'][2], 'Interneto programos') eq(data[1]['categories'][3], 'Grafikos programos') eq(data[1]['categories'][4], 'Multimedia') eq(data[1]['categories'][5], 'Žaidimai ir pramogos') eq(data[1]['categories'][6], 'Laisva PĮ Lietuvoje') eq(data[1]['categories'][7], 'GNU/Linux OS') eq(data[1]['categories'][8], 'GNOME aplinka') eq(data[1]['categories'][9], 'Sėkmės istorijos') eq(len(data[1]['category_values']), 18) eq(data[1]['category_values'][0], 'Biuro programos') eq(data[1]['category_values'][1], 'OpenOffice') eq(data[1]['category_values'][2], 'Interneto programos') eq(data[1]['category_values'][3], 'Grafikos programos') eq(data[1]['category_values'][4], 'Multimedia') eq(data[1]['category_values'][5], 'Žaidimai ir pramogos') eq(data[1]['category_values'][6], 'Programavimas') eq(data[1]['category_values'][7], 'Laisva PĮ Lietuvoje') eq(data[1]['category_values'][8], 'Laisvi formatai ir standartai') eq(data[1]['category_values'][9], 'GNU/Linux OS') eq(data[1]['category_values'][10], 'GNU/Hurd OS') eq(data[1]['category_values'][11], 'FreeBSD OS') eq(data[1]['category_values'][12], 'OpenBSD OS') eq(data[1]['category_values'][13], 'GNOME aplinka') eq(data[1]['category_values'][14], 'KDE aplinka') eq(data[1]['category_values'][15], 'Grafinės aplinkos') eq(data[1]['category_values'][16], 'Sėkmės istorijos') eq(data[1]['category_values'][17], 'Patentai ir autorinės teisės')
def test_import_news_image(self): root = get_default_site().root_page importer = NewsImporter('Naujienos', 'naujienos') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() self.assertTrue(Image.objects.filter(title__in=( 'MS penguin', 'Programuokime smagiai su Scratch', )).exists())
def test_import_news_image(self): root = get_default_site().root_page importer = NewsImporter('Naujienos', 'naujienos') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() self.assertTrue( Image.objects.filter(title__in=( 'MS penguin', 'Programuokime smagiai su Scratch', )).exists())
def test_whole_export(self): self.assert_paths(fixture('whole_export/ak'), [ '1doc.gif', 'atviri_standartai', 'atviri_standartai.html', 'atviri_standartai/atviri_standartai.zpt', 'dokumentacija', 'dokumentacija.html', 'dokumentacija/jabber.html', 'dokumentacija/vertimas.html', 'floss.html', 'free-sw.html', 'knygos', 'knygos.html', 'knygos/AKrinkinys.png', 'knygos/Grafine_aplinka_KDE3.png', 'knygos/IT_11-12_1d.png', 'knygos/KDE3_atmintine.png', 'knygos/Linux_atmintine_1.png', 'knygos/Linux_sistemos_administravimas.png', 'knygos/MySQL4_vadovas.png', 'knygos/OpenOffice.png', 'knygos/OpenOffice_atmintine.png', 'knygos/PHP4_vadovas.png', 'knygos/cathedral_and_bazaar.png', 'knygos/nuo-win-prie-lin.png', 'knygos/nuo_win_prie_lin.html', 'laisve.zpt', 'licencijos', 'licencijos/apie.html', 'licencijos/copyleft.html', 'licencijos/gpl.html', 'licencijos/kategorijos.html', 'licencijos/lgpl.html', 'osd.html', 'sekme.html', ]) self.assert_paths(fixture('whole_export/naujienos'), [ 'naujiena_0001', 'naujiena_0044', ])
def test_whole_export(self): self.assert_paths(fixture('whole_export/ak'), [ '1doc.gif', 'atviri_standartai', 'atviri_standartai.html', 'atviri_standartai/atviri_standartai.zpt', 'dokumentacija', 'dokumentacija.html', 'dokumentacija/jabber.html', 'dokumentacija/vertimas.html', 'floss.html', 'free-sw.html', 'knygos', 'knygos.html', 'knygos/AKrinkinys.png', 'knygos/Grafine_aplinka_KDE3.png', 'knygos/IT_11-12_1d.png', 'knygos/KDE3_atmintine.png', 'knygos/Linux_atmintine_1.png', 'knygos/Linux_sistemos_administravimas.png', 'knygos/MySQL4_vadovas.png', 'knygos/OpenOffice.png', 'knygos/OpenOffice_atmintine.png', 'knygos/PHP4_vadovas.png', 'knygos/cathedral_and_bazaar.png', 'knygos/nuo-win-prie-lin.png', 'knygos/nuo_win_prie_lin.html', 'laisve.zpt', 'licencijos', 'licencijos/apie.html', 'licencijos/copyleft.html', 'licencijos/gpl.html', 'licencijos/kategorijos.html', 'licencijos/lgpl.html', 'osd.html', 'sekme.html', ]) self.assert_paths(fixture('whole_export/naujienos'), [ 'naujiena_0001', 'naujiena_0044', ])
def test_whole_export(self): self.assert_paths(fixture('whole_export/ak'), [ 'atviri_standartai.html', 'knygos.html', 'sekme.html', 'floss.html', 'osd.html', 'laisve.zpt', 'dokumentacija.html', '1doc.gif', 'free-sw.html', 'atviri_standartai', 'licencijos', 'atviri_standartai/atviri_standartai.zpt', 'licencijos/copyleft.html', 'licencijos/lgpl.html', 'licencijos/gpl.html', 'licencijos/apie.html', 'licencijos/kategorijos.html', ]) self.assert_paths(fixture('whole_export/naujienos'), [ 'naujiena_0001', 'naujiena_0044', ])
def test_manager(self): export_dir = fixture('') root = get_default_site().root_page manager = ImportManager(root, export_dir) manager.add_importers([NewsImporter('Naujienos', 'naujienos')]) for importer, item in manager.iterate(): importer.import_item(item) slugs = Page.objects.values_list('slug', flat=True) self.assertEqual(sorted(slugs), [ 'home', 'naujiena_0001', 'naujiena_1016', 'naujienos', 'root', ]) page = Page.objects.get(slug='naujiena_0001') self.assertEqual(page.title, 'Konkursas')
def test_iterate_paths(self): base = fixture('whole_export') paths = self.importer.iterate_paths() rel_paths = sorted([str(p.path.relative_to(base)) for p in paths]) self.assertEqual(rel_paths, [ 'ak/atviri_standartai.html', 'ak/dokumentacija.html', 'ak/floss.html', 'ak/free-sw.html', 'ak/knygos.html', 'ak/licencijos/apie.html', 'ak/licencijos/copyleft.html', 'ak/licencijos/gpl.html', 'ak/licencijos/kategorijos.html', 'ak/licencijos/lgpl.html', 'ak/osd.html', 'ak/sekme.html', ])
def test_manager(self): export_dir = fixture('') root = get_default_site().root_page manager = ImportManager(root, export_dir) manager.add_importers([NewsImporter('Naujienos', 'naujienos')]) for importer, item in manager.iterate(): importer.import_item(item) slugs = Page.objects.values_list('slug', flat=True) self.assertEqual(sorted(slugs), [ 'home', 'naujiena_0001', 'naujiena_1016', 'naujienos', 'root', ]) page = Page.objects.get(slug='naujiena_0001') self.assertEqual(page.title, 'Konkursas')
def test_document_import(self): root = get_default_site().root_page importer = PagesImporter('Skaitykla', 'skaitykla') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Check if Document instances are created. self.assertTrue( Document.objects.filter(title__in=( 'Kazarinas-Technologijos-ir-etika.odt', '2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt', '2004-06-02_Seimas_atviri_standartai.pdf', 'AKP_naudojimo_patirtis_AM.pdf', )).exists()) # Check if HTML is replaced as intended. def docid(title): return Document.objects.get(title=title).pk docids = [ docid('Kazarinas-Technologijos-ir-etika.odt'), docid('2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt'), docid('2004-06-02_Seimas_atviri_standartai.pdf'), docid('AKP_naudojimo_patirtis_AM.pdf'), ] page = StandardPage.objects.get(url_path='/home/skaitykla/pranesimai/') self.assertEqual(re.findall(r'<a\b[^>]+>', page.body), [ '<a href="http://www.vac.lt/seminaras/">', '<a href="http://www.mruni.lt/">', '<a id="%d" linktype="document">' % docids[0], '<a href="http://discovery.ot.lt/linma/">', '<a id="%d" linktype="document">' % docids[1], '<a href="http://www.lrs.lt/">', '<a href="http://www.lrs.lt/ivpk">', '<a href="http://www3.lrs.lt/pls/inter/ivpk_print.doc_view?key=234334">', '<a id="%d" linktype="document">' % docids[2], '<a id="%d" linktype="document">' % docids[3], ])
def test_iterate_paths(self): base = fixture('whole_export') paths = self.importer.iterate_paths() rel_paths = sorted([str(p.path.relative_to(base)) for p in paths]) self.assertEqual(rel_paths, [ 'ak/atviri_standartai.html', 'ak/atviri_standartai/atviri_standartai.zpt', 'ak/dokumentacija.html', 'ak/dokumentacija/jabber.html', 'ak/dokumentacija/vertimas.html', 'ak/floss.html', 'ak/free-sw.html', 'ak/knygos.html', 'ak/knygos/nuo_win_prie_lin.html', 'ak/laisve.zpt', 'ak/licencijos/apie.html', 'ak/licencijos/copyleft.html', 'ak/licencijos/gpl.html', 'ak/licencijos/kategorijos.html', 'ak/licencijos/lgpl.html', 'ak/osd.html', 'ak/sekme.html', ])
def test(self): root = get_default_site().root_page importer = PagesImporter('Atviras kodas', 'ak') importer.set_up(root, fixture('whole_export')) importer.import_all_items() importer.post_process() page = StandardPage.objects.get(url_path='/home/ak/knygos/') links = list(lxml.html.fromstring(page.body).xpath('//a/@href')) self.assertEqual(links[0], '/ak/knygos/nuo_win_prie_lin/') self.assertEqual(links, [ '/ak/knygos/nuo_win_prie_lin/', '/ak/knygos/nuo_win_prie_lin/', '/ak/knygos/AKrinkinys/', '/ak/knygos/AKrinkinys/', '/ak/knygos/linuxatmintine/', '/ak/knygos/linuxatmintine/', '/ak/knygos/openoffice/', '/ak/knygos/openoffice/', '/ak/knygos/openoffice_atmintine/', '/ak/knygos/openoffice_atmintine/', '/ak/knygos/IT_vadovelis/', '/ak/knygos/IT_vadovelis/', '/ak/knygos/linux_sistemos_administravimas/', '/ak/knygos/linux_sistemos_administravimas/', '/ak/knygos/php4_vadovas/', '/ak/knygos/php4_vadovas/', '/ak/knygos/mysql4_vadovas/', '/ak/knygos/mysql4_vadovas/', '/ak/knygos/kde_atmintine/', '/ak/knygos/kde_atmintine/', 'http://www.kde.org', '/ak/knygos/grafine_aplinka_kde/', '/ak/knygos/grafine_aplinka_kde/', '/ak/knygos/cathedral_and_bazaar/', '/ak/knygos/cathedral_and_bazaar/', ])
def test_document_import(self): root = get_default_site().root_page importer = PagesImporter('Skaitykla', 'skaitykla') importer.set_up(root, fixture('image_fixture')) importer.import_all_items() # Check if Document instances are created. self.assertTrue(Document.objects.filter(title__in=( 'Kazarinas-Technologijos-ir-etika.odt', '2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt', '2004-06-02_Seimas_atviri_standartai.pdf', 'AKP_naudojimo_patirtis_AM.pdf', )).exists()) # Check if HTML is replaced as intended. def docid(title): return Document.objects.get(title=title).pk docids = [ docid('Kazarinas-Technologijos-ir-etika.odt'), docid('2007-03-17-Kazarinas-Laisvosios-programos-mokyme.odt'), docid('2004-06-02_Seimas_atviri_standartai.pdf'), docid('AKP_naudojimo_patirtis_AM.pdf'), ] page = StandardPage.objects.get(url_path='/home/skaitykla/pranesimai/') self.assertEqual(re.findall(r'<a\b[^>]+>', page.body), [ '<a href="http://www.vac.lt/seminaras/">', '<a href="http://www.mruni.lt/">', '<a id="%d" linktype="document">' % docids[0], '<a href="http://discovery.ot.lt/linma/">', '<a id="%d" linktype="document">' % docids[1], '<a href="http://www.lrs.lt/">', '<a href="http://www.lrs.lt/ivpk">', '<a href="http://www3.lrs.lt/pls/inter/ivpk_print.doc_view?key=234334">', '<a id="%d" linktype="document">' % docids[2], '<a id="%d" linktype="document">' % docids[3], ])
def setUp(self): root = get_default_site().root_page self.importer = PagesImporter('Atviras kodas', 'ak') self.importer.set_up(root, fixture('whole_export'))
def test_command(self): get_default_site() self.assertEqual(Page.objects.count(), 2) call_command('akllt_importzope', str(fixture('whole_export')), verbosity=0) self.assertEqual(Page.objects.count(), 37)
def test_null_date(self): importer = NewsImporter('Naujienos', 'naujienos') path = fixture('null_date_naujiena/naujiena_0183') data = importer.parse_metadata(ImportItem(path=path)) self.assertIsNone(data['date'])
def test_parse_metadata(self): importer = NewsImporter('Naujienos', 'naujienos') importer.path = importer.get_path(fixture('')) items = importer.iterate_paths() data = map(importer.parse_metadata, items) data = sorted(map(shorten_values, data), key=itemgetter('slug')) eq = self.assertEqual eq(len(data), 2) eq(data[0], { 'date': datetime.date(2002, 10, 15), 'title': 'Konkursas', 'blurb': '<p>Vilniuje, dvi dienas ...', 'body': '<p>Vilniuje, dvi dienas ...', 'slug': 'naujiena_0001', }) eq(len(data[1]), 10) eq(data[1]['date'], datetime.date(2010, 3, 16)) eq(data[1]['email'], '*****@*****.**') eq(data[1]['profesionalams'], False) eq(data[1]['title'], 'Praktinis seminaras moky...') eq(data[1]['author'], 'Antanas') eq(data[1]['blurb'], '2010m. kovo 22 ir 26 die...') eq(data[1]['body'], '<p>2010m. kovo 22 ir 26 ...') eq(len(data[1]['categories']), 10) eq(data[1]['categories'][0], 'Biuro programos') eq(data[1]['categories'][1], 'OpenOffice') eq(data[1]['categories'][2], 'Interneto programos') eq(data[1]['categories'][3], 'Grafikos programos') eq(data[1]['categories'][4], 'Multimedia') eq(data[1]['categories'][5], 'Žaidimai ir pramogos') eq(data[1]['categories'][6], 'Laisva PĮ Lietuvoje') eq(data[1]['categories'][7], 'GNU/Linux OS') eq(data[1]['categories'][8], 'GNOME aplinka') eq(data[1]['categories'][9], 'Sėkmės istorijos') eq(len(data[1]['category_values']), 18) eq(data[1]['category_values'][0], 'Biuro programos') eq(data[1]['category_values'][1], 'OpenOffice') eq(data[1]['category_values'][2], 'Interneto programos') eq(data[1]['category_values'][3], 'Grafikos programos') eq(data[1]['category_values'][4], 'Multimedia') eq(data[1]['category_values'][5], 'Žaidimai ir pramogos') eq(data[1]['category_values'][6], 'Programavimas') eq(data[1]['category_values'][7], 'Laisva PĮ Lietuvoje') eq( data[1]['category_values'][8], 'Laisvi formatai ir standartai' ) eq(data[1]['category_values'][9], 'GNU/Linux OS') eq(data[1]['category_values'][10], 'GNU/Hurd OS') eq(data[1]['category_values'][11], 'FreeBSD OS') eq(data[1]['category_values'][12], 'OpenBSD OS') eq(data[1]['category_values'][13], 'GNOME aplinka') eq(data[1]['category_values'][14], 'KDE aplinka') eq(data[1]['category_values'][15], 'Grafinės aplinkos') eq(data[1]['category_values'][16], 'Sėkmės istorijos') eq( data[1]['category_values'][17], 'Patentai ir autorinės teisės' )
def test_null_date(self): importer = NewsImporter('Naujienos', 'naujienos') path = fixture('null_date_naujiena/naujiena_0183') data = importer.parse_metadata(ImportItem(path=path)) self.assertIsNone(data['date'])
def setUp(self): root = get_default_site().root_page self.importer = PagesImporter('Atviras kodas', 'ak') self.importer.set_up(root, fixture('whole_export'))