Commit 9f770f35306bfbf5c2d33e539d0bc00a082bc8ea

Authored by Gust
Committed by Alexandre Barbosa
1 parent 7728549e

Add search filters tests

Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>
Showing 2 changed files with 50 additions and 2 deletions   Show diff stats
colab/search/forms.py
... ... @@ -9,7 +9,7 @@ from haystack.forms import SearchForm
9 9 from haystack.inputs import AltParser
10 10 from haystack.inputs import AutoQuery
11 11  
12   -from colab.plugins.utils.filters_importer import import_plugin_filters
  12 +from colab.plugins.utils import filters_importer
13 13  
14 14  
15 15 class ColabSearchForm(SearchForm):
... ... @@ -23,7 +23,7 @@ class ColabSearchForm(SearchForm):
23 23  
24 24 def __init__(self, *args, **kwargs):
25 25 super(ColabSearchForm, self).__init__(*args, **kwargs)
26   - extra = import_plugin_filters({})
  26 + extra = filters_importer.import_plugin_filters({})
27 27 for filter_types in extra.values():
28 28 for field in filter_types['fields']:
29 29 self.fields[field[0]] = forms.CharField(required=False,
... ...
colab/search/tests.py
... ... @@ -5,6 +5,7 @@ import mock
5 5 from colab.plugins.utils import filters_importer
6 6 from django.test import TestCase, Client
7 7 from django.core.management import call_command
  8 +from colab.search.forms import ColabSearchForm
8 9  
9 10  
10 11 class SearchViewTest(TestCase):
... ... @@ -80,3 +81,50 @@ class SearchViewTest(TestCase):
80 81 value = [('plugin_name', 'PluginData', 'plugin_icon')]
81 82  
82 83 self.assertEqual(request.context['filters_options'], value)
  84 +
  85 + def test_search_dynamic_form_fields(self):
  86 + plugin_filter = {
  87 + 'plugin_name': {
  88 + 'name': 'PluginData',
  89 + 'icon': 'plugin_icon',
  90 + 'fields': (
  91 + ('field_1', 'Field1', ''),
  92 + ('field_2', 'Field2', ''),
  93 + ),
  94 + },
  95 + }
  96 + filters_importer.import_plugin_filters = mock.Mock(
  97 + return_value=plugin_filter)
  98 +
  99 + form = ColabSearchForm()
  100 +
  101 + self.assertIn('field_1', form.fields.keys())
  102 + self.assertIn('field_2', form.fields.keys())
  103 +
  104 + def test_search_multiple_filters(self):
  105 + request = self.client.get('/search/?q=&type=thread+user')
  106 + user_list = request.context['page'].object_list
  107 +
  108 + self.assertEqual(6, len(user_list))
  109 +
  110 + self.assertIn('admin@mail.com', user_list[0].object.email)
  111 + self.assertIn('admin', user_list[0].object.username)
  112 +
  113 + self.assertIn('chucknorris@mail.com', user_list[1].object.email)
  114 + self.assertIn('Chuck', user_list[1].object.first_name)
  115 + self.assertIn('Norris', user_list[1].object.last_name)
  116 + self.assertIn('chucknorris', user_list[1].object.username)
  117 +
  118 + self.assertIn('heisenberg@mail.com', user_list[2].object.email)
  119 + self.assertIn('Heisenberg', user_list[2].object.first_name)
  120 + self.assertIn('Norris', user_list[2].object.last_name)
  121 + self.assertIn('heisenbergnorris', user_list[2].object.username)
  122 +
  123 + self.assertIn('Admin Administrator', user_list[3].author)
  124 + self.assertIn('Response to Thread 1A', user_list[3].title)
  125 +
  126 + self.assertIn('Admin Administrator', user_list[4].author)
  127 + self.assertIn('Message 1 on Thread 1B', user_list[4].title)
  128 +
  129 + self.assertIn('Admin Administrator', user_list[5].author)
  130 + self.assertIn('Message 1 on Thread 1C', user_list[5].title)
... ...