X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/7ef4abfc9ef8f8835f83cec90040a8d91a659d00..ab8ffbde2df33d9c699e029ba613d2b014ba44b8:/apps/catalogue/tests/book_import.py
diff --git a/apps/catalogue/tests/book_import.py b/apps/catalogue/tests/book_import.py
index 6ece3287e..76061d05a 100644
--- a/apps/catalogue/tests/book_import.py
+++ b/apps/catalogue/tests/book_import.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from __future__ import with_statement
+from django.conf import settings
from django.core.files.base import ContentFile, File
from catalogue.test_utils import *
@@ -241,6 +241,140 @@ class ChildImportTests(WLTestCase):
'wrong related theme list')
+class TreeImportTest(WLTestCase):
+ def setUp(self):
+ WLTestCase.setUp(self)
+ self.child_info = BookInfoStub(
+ genre='X-Genre',
+ epoch='X-Epoch',
+ kind='X-Kind',
+ author=PersonStub(("Joe",), "Doe"),
+ **info_args("Child")
+ )
+ self.CHILD_TEXT = """
+
+ Pies
+ Ala ma kota
+
+ """
+ self.child = models.Book.from_text_and_meta(
+ ContentFile(self.CHILD_TEXT), self.child_info)
+
+ self.book_info = BookInfoStub(
+ genre='X-Genre',
+ epoch='X-Epoch',
+ kind='X-Kind',
+ author=PersonStub(("Joe",), "Doe"),
+ parts=[self.child_info.url],
+ **info_args("Book")
+ )
+ self.BOOK_TEXT = """"""
+ self.book = models.Book.from_text_and_meta(
+ ContentFile(self.BOOK_TEXT), self.book_info)
+
+ self.parent_info = BookInfoStub(
+ genre='X-Genre',
+ epoch='X-Epoch',
+ kind='X-Kind',
+ author=PersonStub(("Jim",), "Lazy"),
+ parts=[self.book_info.url],
+ **info_args("Parent")
+ )
+ self.PARENT_TEXT = """"""
+ self.parent = models.Book.from_text_and_meta(
+ ContentFile(self.PARENT_TEXT), self.parent_info)
+
+ def test_ok(self):
+ self.assertEqual(
+ 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')
+ self.assertEqual(self.parent.theme_counter, {pies.pk: 1},
+ u"There should be child theme in parent theme 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 = """
+
+ Pies, Kot
+ Ala ma kota
+
+ """
+ models.Book.from_text_and_meta(
+ ContentFile(CHILD_TEXT), self.child_info, overwrite=True)
+ self.assertEqual(
+ 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')
+ self.assertEqual(self.parent.theme_counter, {pies.pk: 1, kot.pk: 1},
+ u"There should be child themes in parent theme 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(
+ genre='X-Genre',
+ epoch='X-Epoch',
+ kind='Other-Kind',
+ author=PersonStub(("Joe",), "Doe"),
+ **info_args("Second Child")
+ )
+ SECOND_CHILD_TEXT = """
+
+ Kot
+ Ala ma kota
+
+ """
+ # Import a second child.
+ second_child = models.Book.from_text_and_meta(
+ 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')
+ self.assertEqual(self.parent.theme_counter, {kot.pk: 1},
+ u"There should only be new child themes in parent theme counter."
+ )
+ 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."
+ )
+ 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."
+ )
+
+
class MultilingualBookImportTest(WLTestCase):
def setUp(self):
WLTestCase.setUp(self)
@@ -284,7 +418,7 @@ class BookImportGenerateTest(WLTestCase):
self.book = models.Book.from_xml_file(xml)
def test_gen_pdf(self):
- self.book.build_pdf()
+ self.book.pdf_file.build()
book = models.Book.objects.get(pk=self.book.pk)
self.assertTrue(path.exists(book.pdf_file.path))
@@ -292,13 +426,14 @@ class BookImportGenerateTest(WLTestCase):
"""This book contains a child."""
xml = path.join(path.dirname(__file__), "files/fraszki.xml")
parent = models.Book.from_xml_file(xml)
- parent.build_pdf()
+ parent.pdf_file.build()
parent = models.Book.objects.get(pk=parent.pk)
self.assertTrue(path.exists(parent.pdf_file.path))
def test_custom_pdf(self):
from catalogue.tasks import build_custom_pdf
- out = models.get_dynamic_path(None, 'test-custom', ext='pdf')
+ from catalogue.utils import get_dynamic_path
+ out = get_dynamic_path(None, 'test-custom', ext='pdf')
absoulute_path = path.join(settings.MEDIA_ROOT, out)
if not path.exists(path.dirname(absoulute_path)):