Skip to content

Commit e4b1dda

Browse files
committed
feat(AlgoliaEngine): reset method
Allows to update settings at test time, solving #169 & #209
1 parent 3eccb18 commit e4b1dda

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

algoliasearch_django/registration.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ def reindex_all(self, model, batch_size=1000):
166166
adapter = self.get_adapter(model)
167167
return adapter.reindex_all(batch_size)
168168

169+
def reset(self, settings=None):
170+
"""Reinitializes the Algolia engine and its client.
171+
:param settings: settings to use instead of the default django.conf.settings.algolia
172+
"""
173+
self.__init__(settings=settings if settings is not None else SETTINGS)
174+
169175
# Signalling hooks.
170176

171177
def __post_save_receiver(self, instance, **kwargs):
@@ -178,5 +184,6 @@ def __pre_delete_receiver(self, instance, **kwargs):
178184
logger.debug('RECEIVE pre_delete FOR %s', instance.__class__)
179185
self.delete_record(instance)
180186

187+
181188
# Algolia engine
182189
algolia_engine = AlgoliaEngine()

tests/test_engine.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.conf import settings
2-
from django.test import TestCase
2+
from django.test import TestCase, override_settings
33

4+
from algoliasearch_django import algolia_engine
45
from algoliasearch_django import AlgoliaIndex
56
from algoliasearch_django import AlgoliaEngine
67
from algoliasearch_django.registration import AlgoliaEngineError
@@ -90,3 +91,19 @@ def test_unregister_exception(self):
9091

9192
with self.assertRaises(RegistrationError):
9293
self.engine.unregister(Website)
94+
95+
96+
class OverrideSettingsTestCase(TestCase):
97+
def setUp(self):
98+
with self.settings(ALGOLIA={
99+
'APPLICATION_ID': 'foo',
100+
'API_KEY': 'bar',
101+
'AUTO_INDEXING': False
102+
}):
103+
algolia_engine.reset(settings.ALGOLIA)
104+
105+
def tearDown(self):
106+
algolia_engine.reset(settings.ALGOLIA)
107+
108+
def test_no_indexing(self):
109+
self.assertFalse(algolia_engine.__dict__["_AlgoliaEngine__auto_indexing"], "AUTO_INDEXING should be disabled for this test.")

0 commit comments

Comments
 (0)