From 9f770f35306bfbf5c2d33e539d0bc00a082bc8ea Mon Sep 17 00:00:00 2001 From: Gust Date: Wed, 28 Oct 2015 11:29:01 -0200 Subject: [PATCH] Add search filters tests --- colab/search/forms.py | 4 ++-- colab/search/tests.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/colab/search/forms.py b/colab/search/forms.py index 4f20491..cb91ec3 100644 --- a/colab/search/forms.py +++ b/colab/search/forms.py @@ -9,7 +9,7 @@ from haystack.forms import SearchForm from haystack.inputs import AltParser from haystack.inputs import AutoQuery -from colab.plugins.utils.filters_importer import import_plugin_filters +from colab.plugins.utils import filters_importer class ColabSearchForm(SearchForm): @@ -23,7 +23,7 @@ class ColabSearchForm(SearchForm): def __init__(self, *args, **kwargs): super(ColabSearchForm, self).__init__(*args, **kwargs) - extra = import_plugin_filters({}) + extra = filters_importer.import_plugin_filters({}) for filter_types in extra.values(): for field in filter_types['fields']: self.fields[field[0]] = forms.CharField(required=False, diff --git a/colab/search/tests.py b/colab/search/tests.py index 056f462..0b67da2 100644 --- a/colab/search/tests.py +++ b/colab/search/tests.py @@ -5,6 +5,7 @@ import mock from colab.plugins.utils import filters_importer from django.test import TestCase, Client from django.core.management import call_command +from colab.search.forms import ColabSearchForm class SearchViewTest(TestCase): @@ -80,3 +81,50 @@ class SearchViewTest(TestCase): value = [('plugin_name', 'PluginData', 'plugin_icon')] self.assertEqual(request.context['filters_options'], value) + + def test_search_dynamic_form_fields(self): + plugin_filter = { + 'plugin_name': { + 'name': 'PluginData', + 'icon': 'plugin_icon', + 'fields': ( + ('field_1', 'Field1', ''), + ('field_2', 'Field2', ''), + ), + }, + } + filters_importer.import_plugin_filters = mock.Mock( + return_value=plugin_filter) + + form = ColabSearchForm() + + self.assertIn('field_1', form.fields.keys()) + self.assertIn('field_2', form.fields.keys()) + + def test_search_multiple_filters(self): + request = self.client.get('/search/?q=&type=thread+user') + user_list = request.context['page'].object_list + + self.assertEqual(6, len(user_list)) + + self.assertIn('admin@mail.com', user_list[0].object.email) + self.assertIn('admin', user_list[0].object.username) + + self.assertIn('chucknorris@mail.com', user_list[1].object.email) + self.assertIn('Chuck', user_list[1].object.first_name) + self.assertIn('Norris', user_list[1].object.last_name) + self.assertIn('chucknorris', user_list[1].object.username) + + self.assertIn('heisenberg@mail.com', user_list[2].object.email) + self.assertIn('Heisenberg', user_list[2].object.first_name) + self.assertIn('Norris', user_list[2].object.last_name) + self.assertIn('heisenbergnorris', user_list[2].object.username) + + self.assertIn('Admin Administrator', user_list[3].author) + self.assertIn('Response to Thread 1A', user_list[3].title) + + self.assertIn('Admin Administrator', user_list[4].author) + self.assertIn('Message 1 on Thread 1B', user_list[4].title) + + self.assertIn('Admin Administrator', user_list[5].author) + self.assertIn('Message 1 on Thread 1C', user_list[5].title) -- libgit2 0.21.2