X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/ae60b2a3949e96357477cc04f90fd0873cee8a92..6dc65dcaa0245bfb27f1a857016b8c25f8214557:/src/search/tests/index.py diff --git a/src/search/tests/index.py b/src/search/tests/index.py index d11ff7b06..d63bafbf7 100644 --- a/src/search/tests/index.py +++ b/src/search/tests/index.py @@ -1,52 +1,27 @@ -# -*- 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 django.conf import settings from django.test.utils import override_settings from catalogue.test_utils import WLTestCase, get_fixture -import tempfile from catalogue.models import Book -from search.index import Index, Search import catalogue import opds -@override_settings(SEARCH_INDEX=tempfile.mkdtemp(prefix='djangotest_search_')) -@skipIf(getattr(settings, 'NO_SEARCH_INDEX', False), - u'Requires search server and NO_SEARCH_INDEX=False.') class BookSearchTests(WLTestCase): def setUp(self): WLTestCase.setUp(self) - index = Index() - self.search = Search() - index.delete_query(self.search.index.query(uid="*")) - index.index.commit() + with override_settings(NO_SEARCH_INDEX=False): + self.do_doktora = Book.from_xml_file( + get_fixture('do-doktora.xml', opds)) + self.do_anusie = Book.from_xml_file( + get_fixture('fraszka-do-anusie.xml', catalogue)) - self.do_doktora = Book.from_xml_file( - get_fixture('do-doktora.xml', opds)) - self.do_anusie = Book.from_xml_file( - get_fixture('fraszka-do-anusie.xml', catalogue)) - - def test_search_perfect_book_author(self): - books = self.search.search_books(self.search.index.query(authors=u"sęp szarzyński")) - assert len(books) == 1 - assert books[0].id == self.do_anusie.id - - # here we lack slop functionality as well - def test_search_perfect_book_title(self): - books = self.search.search_books(self.search.index.query(title=u"fraszka do anusie")) - assert len(books) == 1 - assert books[0].id == self.do_anusie.id - - # TODO: Add slop option to sunburnt - # def test_search_perfect_parts(self): - # books = self.search.search_phrase(u"Jakoż hamować") - # assert len(books) == 2 - # for b in books: - # b.book_id == self.book.id - # a = SearchResult.aggregate(books) - # # just one fragment hit. - # assert len(a[0].hits) == 1 + def test_search_perfect_parts(self): + response = self.client.get('/szukaj/?q=Jakoż hamować') + res = response.context['results'] + self.assertEqual(len(res['snippet']), 1) + for b, s in res['snippet'].items(): + self.assertEqual(b.id, self.do_anusie.id)