X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/7e6d14043e3e2dce8e3fdcef0b0fc649680b07b3..be1db8462cee5313361b832b4ff48b633d6d811b:/apps/catalogue/test_utils.py diff --git a/apps/catalogue/test_utils.py b/apps/catalogue/test_utils.py index 70aae02d4..d447d0cb8 100644 --- a/apps/catalogue/test_utils.py +++ b/apps/catalogue/test_utils.py @@ -1,22 +1,30 @@ -from django.conf import settings +# -*- coding: utf-8 -*- +# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# from django.test import TestCase -import shutil +from django.test.utils import override_settings import tempfile from slughifi import slughifi from librarian import WLURI +@override_settings( + MEDIA_ROOT=tempfile.mkdtemp(prefix='djangotest_'), + CATALOGUE_DONT_BUILD=set(['pdf', 'mobi', 'epub', 'txt', 'fb2', 'cover']), + NO_SEARCH_INDEX = True, + CELERY_ALWAYS_EAGER = True, + CACHES={ + 'api': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}, + 'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}, + 'permanent': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}, + }, +) class WLTestCase(TestCase): """ Generic base class for tests. Adds settings freeze and clears MEDIA_ROOT. """ - def setUp(self): - self._MEDIA_ROOT, settings.MEDIA_ROOT = settings.MEDIA_ROOT, tempfile.mkdtemp(prefix='djangotest_') - settings.NO_BUILD_PDF = settings.NO_BUILD_MOBI = settings.NO_BUILD_EPUB = settings.NO_BUILD_TXT = True - settings.CELERY_ALWAYS_EAGER = True + longMessage = True - def tearDown(self): - shutil.rmtree(settings.MEDIA_ROOT, True) - settings.MEDIA_ROOT = self._MEDIA_ROOT class PersonStub(object): @@ -24,8 +32,16 @@ class PersonStub(object): self.first_names = first_names self.last_name = last_name + def readable(self): + return " ".join(self.first_names + (self.last_name,)) + class BookInfoStub(object): + _empty_fields = ['cover_url', 'variant_of'] + # allow single definition for multiple-value fields + _salias = { + 'authors': 'author', + } def __init__(self, **kwargs): self.__dict = kwargs @@ -36,7 +52,15 @@ class BookInfoStub(object): return object.__setattr__(self, key, value) def __getattr__(self, key): - return self.__dict[key] + try: + return self.__dict[key] + except KeyError: + if key in self._empty_fields: + return None + elif key in self._salias: + return [getattr(self, self._salias[key])] + else: + raise def to_dict(self): return dict((key, unicode(value)) for key, value in self.__dict.items()) @@ -49,7 +73,7 @@ def info_args(title, language=None): language = u'pol' return { 'title': unicode(title), - 'url': WLURI.from_slug_and_lang(slug, language), + 'url': WLURI.from_slug(slug), 'about': u"http://wolnelektury.pl/example/URI/%s" % slug, 'language': language, }