File: test_discovery.py

package info (click to toggle)
django-haystack 2.8.1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,220 kB
  • sloc: python: 15,512; xml: 1,708; makefile: 71; sh: 45
file content (56 lines) | stat: -rw-r--r-- 2,203 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# encoding: utf-8

from __future__ import absolute_import, division, print_function, unicode_literals

from django.test import TestCase
from test_haystack.discovery.search_indexes import FooIndex

from haystack import connections
from haystack.utils.loading import UnifiedIndex

EXPECTED_INDEX_MODEL_COUNT = 6


class ManualDiscoveryTestCase(TestCase):
    def test_discovery(self):
        old_ui = connections['default'].get_unified_index()
        connections['default']._index = UnifiedIndex()
        ui = connections['default'].get_unified_index()
        self.assertEqual(len(ui.get_indexed_models()), EXPECTED_INDEX_MODEL_COUNT)

        ui.build(indexes=[FooIndex()])

        self.assertListEqual(['discovery.foo'],
                             [str(i._meta) for i in ui.get_indexed_models()])

        ui.build(indexes=[])

        self.assertListEqual([], ui.get_indexed_models())
        connections['default']._index = old_ui


class AutomaticDiscoveryTestCase(TestCase):
    def test_discovery(self):
        old_ui = connections['default'].get_unified_index()
        connections['default']._index = UnifiedIndex()
        ui = connections['default'].get_unified_index()
        self.assertEqual(len(ui.get_indexed_models()), EXPECTED_INDEX_MODEL_COUNT)

        # Test exclusions.
        ui.excluded_indexes = ['test_haystack.discovery.search_indexes.BarIndex']
        ui.build()

        indexed_model_names = [str(i._meta) for i in ui.get_indexed_models()]
        self.assertIn('multipleindex.foo', indexed_model_names)
        self.assertIn('multipleindex.bar', indexed_model_names)
        self.assertNotIn('discovery.bar', indexed_model_names)

        ui.excluded_indexes = ['test_haystack.discovery.search_indexes.BarIndex',
                               'test_haystack.discovery.search_indexes.FooIndex']
        ui.build()

        indexed_model_names = [str(i._meta) for i in ui.get_indexed_models()]
        self.assertIn('multipleindex.foo', indexed_model_names)
        self.assertIn('multipleindex.bar', indexed_model_names)
        self.assertListEqual([], [i for i in indexed_model_names if i.startswith('discovery')])
        connections['default']._index = old_ui