File: test_discovery.py

package info (click to toggle)
django-haystack 3.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,504 kB
  • sloc: python: 23,475; xml: 1,708; sh: 74; makefile: 71
file content (57 lines) | stat: -rw-r--r-- 2,119 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
57
from django.test import TestCase

from haystack import connections
from haystack.utils.loading import UnifiedIndex
from test_haystack.discovery.search_indexes import FooIndex

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