X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..58d7e7d5f94cf5a6c92059d4c8663741e3237584:/src/catalogue/tests/book_import.py diff --git a/src/catalogue/tests/book_import.py b/src/catalogue/tests/book_import.py index 775fc2929..a4452686c 100644 --- a/src/catalogue/tests/book_import.py +++ b/src/catalogue/tests/book_import.py @@ -2,8 +2,6 @@ # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # -from django.conf import settings - from django.core.files.base import ContentFile from catalogue.test_utils import * from catalogue import models @@ -12,6 +10,7 @@ from librarian import WLURI from nose.tools import raises from os import path, makedirs + class BookImportLogicTests(WLTestCase): def setUp(self): @@ -36,8 +35,8 @@ class BookImportLogicTests(WLTestCase): self.expected_tags.sort() def test_empty_book(self): - BOOK_TEXT = "" - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book_text = "" + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.assertEqual(book.title, "Default Book") self.assertEqual(book.slug, "default-book") @@ -52,7 +51,7 @@ class BookImportLogicTests(WLTestCase): self.assertEqual(book.gazeta_link, '') self.assertEqual(book.description, '') - tags = [ (tag.category, tag.slug) for tag in book.tags ] + tags = [(tag.category, tag.slug) for tag in book.tags] tags.sort() self.assertEqual(tags, self.expected_tags) @@ -63,53 +62,53 @@ class BookImportLogicTests(WLTestCase): Should work like any other non-empty book. """ - BOOK_TEXT = """ + book_text = """ Nic """ - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.assertTrue(book.has_html_file()) def test_book_with_fragment(self): - BOOK_TEXT = """ + book_text = """ LoveAla ma kota """ - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.assertTrue(book.has_html_file()) self.assertEqual(book.fragments.count(), 1) self.assertEqual(book.fragments.all()[0].text, u'

Ala ma kota

\n') - self.assert_(('theme', 'love') in [ (tag.category, tag.slug) for tag in book.fragments.all()[0].tags ]) + self.assert_(('theme', 'love') in [(tag.category, tag.slug) for tag in book.fragments.all()[0].tags]) def test_book_with_empty_theme(self): """ empty themes should be ignored """ - BOOK_TEXT = """ + book_text = """ , Love , , Ala ma kota """ - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.assert_([('theme', 'love')], - [ (tag.category, tag.slug) for tag in book.fragments.all()[0].tags.filter(category='theme') ]) + book.fragments.all()[0].tags.filter(category='theme').values_list('category', 'slug')) def test_book_with_no_theme(self): """ fragments with no themes shouldn't be created at all """ - BOOK_TEXT = """ + book_text = """ Ala ma kota """ - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.assertEqual(book.fragments.count(), 0) self.assertEqual(book.tags.filter(category='theme').count(), 0) @@ -117,27 +116,27 @@ class BookImportLogicTests(WLTestCase): def test_book_with_invalid_slug(self): """ Book with invalid characters in slug shouldn't be imported """ self.book_info.url = WLURI.from_slug(u"default_book") - BOOK_TEXT = "" - models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book_text = "" + models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) def test_book_replace_title(self): - BOOK_TEXT = """""" - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book_text = """""" + models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.book_info.title = u"Extraordinary" - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info, overwrite=True) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info, overwrite=True) - tags = [ (tag.category, tag.slug) for tag in book.tags ] + tags = [(tag.category, tag.slug) for tag in book.tags] tags.sort() self.assertEqual(tags, self.expected_tags) def test_book_replace_author(self): - BOOK_TEXT = """""" - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book_text = """""" + models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.book_info.author = PersonStub(("Hans", "Christian"), "Andersen") - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info, overwrite=True) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info, overwrite=True) - tags = [ (tag.category, tag.slug) for tag in book.tags ] + tags = [(tag.category, tag.slug) for tag in book.tags] tags.sort() self.expected_tags.remove(('author', 'jim-lazy')) @@ -150,7 +149,7 @@ class BookImportLogicTests(WLTestCase): models.Tag.objects.get(slug="jim-lazy", category="author") def test_book_remove_fragment(self): - BOOK_TEXT = """ + book_text = """ LoveAla ma kota @@ -158,7 +157,7 @@ class BookImportLogicTests(WLTestCase): """ - BOOK_TEXT_AFTER = """ + book_text_after = """ LoveAla ma kota @@ -167,13 +166,13 @@ class BookImportLogicTests(WLTestCase): """ - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) self.assertEqual(book.fragments.count(), 2) - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT_AFTER), self.book_info, overwrite=True) + book = models.Book.from_text_and_meta(ContentFile(book_text_after), self.book_info, overwrite=True) self.assertEqual(book.fragments.count(), 1) def test_multiple_tags(self): - BOOK_TEXT = """""" + book_text = """""" self.book_info.authors = self.book_info.author, PersonStub(("Joe",), "Dilligent"), self.book_info.kinds = self.book_info.kind, 'Y-Kind', self.book_info.genres = self.book_info.genre, 'Y-Genre', @@ -187,8 +186,8 @@ class BookImportLogicTests(WLTestCase): ]) self.expected_tags.sort() - book = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.book_info) - tags = [ (tag.category, tag.slug) for tag in book.tags ] + book = models.Book.from_text_and_meta(ContentFile(book_text), self.book_info) + tags = [(tag.category, tag.slug) for tag in book.tags] tags.sort() self.assertEqual(tags, self.expected_tags) @@ -216,32 +215,30 @@ class ChildImportTests(WLTestCase): ) def test_child(self): - TEXT = """""" - child = models.Book.from_text_and_meta(ContentFile(TEXT), self.child_info) - parent = models.Book.from_text_and_meta(ContentFile(TEXT), self.parent_info) + text = """""" + child = models.Book.from_text_and_meta(ContentFile(text), self.child_info) + parent = models.Book.from_text_and_meta(ContentFile(text), self.parent_info) author = parent.tags.get(category='author') books = self.client.get(author.get_absolute_url()).context['object_list'] - self.assertEqual(len(books), 1, - "Only parent book should be visible on author's page") + self.assertEqual(len(books), 1, "Only parent book should be visible on author's page") def test_child_replace(self): - PARENT_TEXT = """""" - CHILD_TEXT = """ + parent_text = """""" + child_text = """ PiesAla ma kota """ - child = models.Book.from_text_and_meta(ContentFile(CHILD_TEXT), self.child_info) - parent = models.Book.from_text_and_meta(ContentFile(PARENT_TEXT), self.parent_info) - CHILD_TEXT = """ + child = models.Book.from_text_and_meta(ContentFile(child_text), self.child_info) + parent = models.Book.from_text_and_meta(ContentFile(parent_text), self.parent_info) + child_text = """ KotAla ma kota """ - child = models.Book.from_text_and_meta(ContentFile(CHILD_TEXT), self.child_info, overwrite=True) + child = models.Book.from_text_and_meta(ContentFile(child_text), self.child_info, overwrite=True) themes = parent.related_themes() - self.assertEqual(['Kot'], [tag.name for tag in themes], - 'wrong related theme list') + self.assertEqual(['Kot'], [tag.name for tag in themes], 'wrong related theme list') class TreeImportTest(WLTestCase): @@ -289,47 +286,38 @@ class TreeImportTest(WLTestCase): def test_ok(self): self.assertEqual( - list(self.client.get('/katalog/gatunek/x-genre/' - ).context['object_list']), + list(self.client.get('/katalog/gatunek/x-genre/').context['object_list']), [self.parent], u"There should be only parent on common tag page." ) - pies = models.Tag.objects.get(slug='pies') + # pies = models.Tag.objects.get(slug='pies') themes = self.parent.related_themes() - self.assertEqual(len(themes), 1, - u"There should be child theme in parent theme counter." - ) + self.assertEqual(len(themes), 1, u"There should be child theme in parent theme counter.") # TODO: book_count is deprecated, update here. - #~ epoch = models.Tag.objects.get(slug='x-epoch') - #~ self.assertEqual(epoch.book_count, 1, - #~ u"There should be only parent in common tag's counter." - #~ ) + # epoch = models.Tag.objects.get(slug='x-epoch') + # self.assertEqual(epoch.book_count, 1, u"There should be only parent in common tag's counter.") def test_child_republish(self): - CHILD_TEXT = """ + child_text = """ Pies, Kot Ala ma kota """ models.Book.from_text_and_meta( - ContentFile(CHILD_TEXT), self.child_info, overwrite=True) + ContentFile(child_text), self.child_info, overwrite=True) self.assertEqual( - list(self.client.get('/katalog/gatunek/x-genre/' - ).context['object_list']), + list(self.client.get('/katalog/gatunek/x-genre/').context['object_list']), [self.parent], u"There should only be parent on common tag page." ) - pies = models.Tag.objects.get(slug='pies') - kot = models.Tag.objects.get(slug='kot') + # pies = models.Tag.objects.get(slug='pies') + # kot = models.Tag.objects.get(slug='kot') self.assertEqual(len(self.parent.related_themes()), 2, - u"There should be child themes in parent theme counter." - ) + u"There should be child themes in parent theme counter.") # TODO: book_count is deprecated, update here. - #~ epoch = models.Tag.objects.get(slug='x-epoch') - #~ self.assertEqual(epoch.book_count, 1, - #~ u"There should only be parent in common tag's counter." - #~ ) + # epoch = models.Tag.objects.get(slug='x-epoch') + # self.assertEqual(epoch.book_count, 1, u"There should only be parent in common tag's counter.") def test_book_change_child(self): second_child_info = BookInfoStub( @@ -339,7 +327,7 @@ class TreeImportTest(WLTestCase): author=PersonStub(("Joe",), "Doe"), **info_args("Second Child") ) - SECOND_CHILD_TEXT = """ + second_child_text = """ Kot Ala ma kota @@ -347,39 +335,34 @@ class TreeImportTest(WLTestCase): """ # Import a second child. second_child = models.Book.from_text_and_meta( - ContentFile(SECOND_CHILD_TEXT), second_child_info) + ContentFile(second_child_text), second_child_info) # The book has only this new child now. self.book_info.parts = [second_child_info.url] self.book = models.Book.from_text_and_meta( ContentFile(self.BOOK_TEXT), self.book_info, overwrite=True) self.assertEqual( - set(self.client.get('/katalog/gatunek/x-genre/' - ).context['object_list']), - set([self.parent, self.child]), - u"There should be parent and old child on common tag page." - ) - kot = models.Tag.objects.get(slug='kot') + set(self.client.get('/katalog/gatunek/x-genre/').context['object_list']), + {self.parent, self.child}, + u"There should be parent and old child on common tag page." + ) + # kot = models.Tag.objects.get(slug='kot') self.assertEqual(len(self.parent.related_themes()), 1, - u"There should only be new child themes in parent theme counter." - ) - epoch = models.Tag.objects.get(slug='x-epoch') - # book_count deprecated, update test. - #~ self.assertEqual(epoch.book_count, 2, - #~ u"There should be parent and old child in common tag's counter." - #~ ) + u"There should only be new child themes in parent theme counter.") + # # book_count deprecated, update test. + # epoch = models.Tag.objects.get(slug='x-epoch') + # self.assertEqual(epoch.book_count, 2, + # u"There should be parent and old child in common tag's counter.") self.assertEqual( - list(self.client.get('/katalog/lektura/parent/motyw/kot/' - ).context['fragments']), - [second_child.fragments.all()[0]], - u"There should be new child's fragments on parent's theme page." - ) + list(self.client.get('/katalog/lektura/parent/motyw/kot/').context['fragments']), + [second_child.fragments.all()[0]], + u"There should be new child's fragments on parent's theme page." + ) self.assertEqual( - list(self.client.get('/katalog/lektura/parent/motyw/pies/' - ).context['fragments']), - [], - u"There should be no old child's fragments on parent's theme page." - ) + list(self.client.get('/katalog/lektura/parent/motyw/pies/').context['fragments']), + [], + u"There should be no old child's fragments on parent's theme page." + ) class MultilingualBookImportTest(WLTestCase): @@ -406,16 +389,16 @@ class MultilingualBookImportTest(WLTestCase): ) def test_multilingual_import(self): - BOOK_TEXT = """A""" + book_text = """A""" - book1 = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.pol_info) - book2 = models.Book.from_text_and_meta(ContentFile(BOOK_TEXT), self.eng_info) + models.Book.from_text_and_meta(ContentFile(book_text), self.pol_info) + models.Book.from_text_and_meta(ContentFile(book_text), self.eng_info) self.assertEqual( - set([b.language for b in models.Book.objects.all()]), - set(['pol', 'eng']), - 'Books imported in wrong languages.' - ) + set([b.language for b in models.Book.objects.all()]), + {'pol', 'eng'}, + 'Books imported in wrong languages.' + ) class BookImportGenerateTest(WLTestCase): @@ -445,6 +428,5 @@ class BookImportGenerateTest(WLTestCase): if not path.exists(path.dirname(absoulute_path)): makedirs(path.dirname(absoulute_path)) - build_custom_pdf(self.book.id, - customizations=['nofootnotes', '13pt', 'a4paper'], file_name=out) + build_custom_pdf(self.book.id, customizations=['nofootnotes', '13pt', 'a4paper'], file_name=out) self.assertTrue(path.exists(absoulute_path))