X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/ae60b2a3949e96357477cc04f90fd0873cee8a92..ca336bd1f9658cf713681d1412d4153e5c4d9c93:/src/opds/tests/__init__.py?ds=inline diff --git a/src/opds/tests/__init__.py b/src/opds/tests/__init__.py old mode 100755 new mode 100644 index 339bfaa37..e69de29bb --- a/src/opds/tests/__init__.py +++ b/src/opds/tests/__init__.py @@ -1,62 +0,0 @@ -# -*- 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 unittest import skipIf -from lxml import etree -from django.conf import settings -import catalogue -from catalogue.test_utils import WLTestCase, get_fixture -from catalogue.models import Book -from librarian import WLURI, XMLNamespace -from search.index import Index - -AtomNS = XMLNamespace("http://www.w3.org/2005/Atom") - - -@skipIf(getattr(settings, 'NO_SEARCH_INDEX', False), u'Requires search server and NO_SEARCH_INDEX=False.') -class OpdsSearchTests(WLTestCase): - """Tests search feed in OPDS..""" - def setUp(self): - WLTestCase.setUp(self) - index = Index() - index.index.delete_all() - index.index.commit() - - self.do_doktora = Book.from_xml_file( - get_fixture('do-doktora.xml')) - self.do_anusie = Book.from_xml_file( - get_fixture('fraszka-do-anusie.xml', catalogue)) - - def assert_finds(self, query, books): - """Takes a query and tests against books expected to be found.""" - tree = etree.fromstring( - self.client.get('/opds/search/?%s' % query).content) - elem_ids = tree.findall('.//%s/%s' % (AtomNS('entry'), AtomNS('id'))) - slugs = [WLURI(elem.text).slug for elem in elem_ids] - self.assertEqual(set(slugs), set(b.slug for b in books), u"OPDS search '%s' failed." % query) - - def test_opds_search_simple(self): - """Do a simple q= test, also emulate dumb OPDS clients.""" - both = {self.do_doktora, self.do_anusie} - self.assert_finds('q=fraszka', both) - self.assert_finds('q=fraszka&author={opds:author}', both) - - def test_opds_search_title(self): - """Search by title.""" - both = {self.do_doktora, self.do_anusie} - self.assert_finds('title=fraszka', both) - self.assert_finds('title=fraszka', both) - self.assert_finds('q=title:doktora', [self.do_doktora]) - - def test_opds_search_author(self): - """Search by author.""" - self.assert_finds('q=fraszka&author=Kochanowski', [self.do_doktora]) - self.assert_finds('q=fraszka+author:Kochanowski', [self.do_doktora]) - self.assert_finds('q=Kochanowski', [self.do_doktora]) - - def test_opds_search_translator(self): - """Search by translator.""" - self.assert_finds('q=fraszka&translator=Fikcyjny', [self.do_doktora]) - self.assert_finds('q=fraszka+translator:Fikcyjny', [self.do_doktora]) - self.assert_finds('q=Fikcyjny', [self.do_doktora])