Skip to content

Commit e6c5fe3

Browse files
committed
Fixing more index and tests
1 parent 0fd287a commit e6c5fe3

File tree

6 files changed

+47
-21
lines changed

6 files changed

+47
-21
lines changed

django_elasticsearch_dsl/indices.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,18 @@
1111
class Index(DSLIndex):
1212
def __init__(self, *args, **kwargs):
1313
super(Index, self).__init__(*args, **kwargs)
14-
self._settings = deepcopy(DEDConfig.default_index_settings())
14+
default_index_settings = deepcopy(DEDConfig.default_index_settings())
15+
self.settings(**default_index_settings)
1516

16-
def doc_type(self, doc_type, *args, **kwargs):
17+
def document(self, document):
1718
"""
18-
Extend to register the doc_type in the global document registry
19+
Extend to register the document in the global document registry
1920
"""
20-
doc_type = super(Index, self).doc_type(doc_type, *args, **kwargs)
21-
registry.register(self, doc_type)
22-
return doc_type
21+
document = super(Index, self).document(document)
22+
registry.register_document(document)
23+
return document
24+
25+
doc_type = document
2326

2427
def __str__(self):
2528
return self._name

django_elasticsearch_dsl/management/commands/search_index.py

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def _get_models(self, args):
5959
for arg in args:
6060
arg = arg.lower()
6161
match_found = False
62+
print(registry.get_models())
6263

6364
for model in registry.get_models():
6465
if model._meta.app_label == arg:

django_elasticsearch_dsl/registries.py

+7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from collections import defaultdict
2+
from copy import deepcopy
3+
24
from itertools import chain
35

46
from django.core.exceptions import ImproperlyConfigured
@@ -75,6 +77,11 @@ def register_document(self, document):
7577
fields = document._doc_type.mapping.properties.properties.to_dict()
7678
setattr(document, '_fields', fields)
7779

80+
# Update settings of the document index
81+
default_index_settings = deepcopy(DEDConfig.default_index_settings())
82+
document._index.settings(**default_index_settings)
83+
print(type(document._index))
84+
7885
# Register the document and index class to our registry
7986
self.register(index=document._index, doc_class=document)
8087

tests/fixtures.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,16 @@ def _generate_doc_mock(self, _model, index=None, mock_qs=None,
2929
_ignore_signals=False, _related_models=None):
3030
_index = index
3131

32-
@self.registry.register_document
33-
@_index.document
3432
class Doc(DocType):
3533

3634
class Django:
3735
model = _model
3836
related_models = _related_models if _related_models is not None else []
3937
ignore_signals = _ignore_signals
4038

39+
if _index:
40+
_index.document(Doc)
41+
self.registry.register_document(Doc)
4142

4243
Doc.update = Mock()
4344
if mock_qs:

tests/test_commands.py

+23-9
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,34 @@
55
from django.core.management import call_command
66
from django.utils.six import StringIO
77

8+
from django_elasticsearch_dsl import Index
89
from django_elasticsearch_dsl.management.commands.search_index import Command
910
from django_elasticsearch_dsl.registries import DocumentRegistry
1011

1112
from .fixtures import WithFixturesMixin
1213

1314

1415
class SearchIndexTestCase(WithFixturesMixin, TestCase):
16+
def _mock_setup(self):
17+
# Mock Patch object
18+
patch_registry = patch(
19+
'django_elasticsearch_dsl.management.commands.search_index.registry', self.registry)
20+
21+
patch_registry.start()
22+
23+
methods = ['delete', 'create']
24+
for index in [self.index_a, self.index_b]:
25+
for method in methods:
26+
obj_patch = patch.object(index, method)
27+
obj_patch.start()
28+
29+
self.addCleanup(patch.stopall)
30+
1531
def setUp(self):
1632
self.out = StringIO()
1733
self.registry = DocumentRegistry()
18-
self.index_a = Mock()
19-
self.index_b = Mock()
34+
self.index_a = Index('foo')
35+
self.index_b = Index('bar')
2036

2137
self.doc_a1_qs = Mock()
2238
self.doc_a1 = self._generate_doc_mock(
@@ -38,6 +54,8 @@ def setUp(self):
3854
self.ModelC, self.index_b, self.doc_c1_qs
3955
)
4056

57+
self._mock_setup()
58+
4159
def test_get_models(self):
4260
cmd = Command()
4361
with patch(
@@ -97,15 +115,11 @@ def test_force_delete_all_indices(self):
97115
self.index_b.delete.assert_called_once()
98116

99117
def test_force_delete_bar_model_c_index(self):
100-
101-
with patch(
102-
'django_elasticsearch_dsl.management.commands.'
103-
'search_index.registry',
104-
self.registry
105-
):
118+
with patch.object(self.index_b, 'delete'):
106119
call_command('search_index', stdout=self.out,
107-
models=['bar.ModelC'],
120+
models=[self.ModelC._meta.label],
108121
action='delete', force=True)
122+
print(dir(self.index_b.delete))
109123
self.index_b.delete.assert_called_once()
110124
self.assertFalse(self.index_a.delete.called)
111125

tests/test_indices.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ def test_documents_add_to_register(self):
1717
registry = self.registry
1818
with patch('django_elasticsearch_dsl.indices.registry', new=registry):
1919
index = Index('test')
20-
doc_a1 = self._generate_doc_mock(self.ModelA, index)
21-
doc_a2 = self._generate_doc_mock(self.ModelA, index)
22-
index.doc_type(doc_a1)
20+
doc_a1 = self._generate_doc_mock(self.ModelA)
21+
doc_a2 = self._generate_doc_mock(self.ModelA)
22+
index.document(doc_a1)
2323
docs = list(registry.get_documents())
2424
self.assertEqual(len(docs), 1)
2525
self.assertIs(docs[0], doc_a1)
2626

27-
index.doc_type(doc_a2)
27+
index.document(doc_a2)
2828
docs = registry.get_documents()
2929
self.assertEqual(docs, set([doc_a1, doc_a2]))
3030

0 commit comments

Comments
 (0)