@@ -67,15 +67,45 @@ def test_field_mappings_type(self):
6767 SearchIndex (field_mappings = {"foo" })
6868
6969 def test_analyzer_type (self ):
70- msg = "analyzer must be a string. got type : <class 'int'>"
70+ msg = "analyzer must be a string; got: <class 'int'>. "
7171 with self .assertRaisesMessage (ValueError , msg ):
7272 SearchIndex (analyzer = 42 )
7373
7474 def test_search_analyzer_type (self ):
75- msg = "search_analyzer must be a string. got type : <class 'list'>"
75+ msg = "search_analyzer must be a string; got: <class 'list'>. "
7676 with self .assertRaisesMessage (ValueError , msg ):
7777 SearchIndex (search_analyzer = ["foo" ])
7878
79+ def test_deconstruct (self ):
80+ index = SearchIndex (name = "recent_test_idx" , fields = ["number" ])
81+ name , args , kwargs = index .deconstruct ()
82+ self .assertEqual (name , "django_mongodb_backend.indexes.SearchIndex" )
83+ self .assertEqual (args , ())
84+ self .assertEqual (kwargs , {"name" : "recent_test_idx" , "fields" : ["number" ]})
85+
86+ def test_deconstruct_field_mappings (self ):
87+ field_mappings = {"headline" : {"type" : "token" }}
88+ index = SearchIndex (field_mappings = field_mappings )
89+ _ , args , kwargs = index .deconstruct ()
90+ self .assertEqual (args , ())
91+ self .assertEqual (kwargs , {"name" : "" , "field_mappings" : field_mappings })
92+
93+ def test_deconstruct_analyzer (self ):
94+ index = SearchIndex (
95+ fields = ["a" ], analyzer = "lucene.simple" , search_analyzer = "lucene.english"
96+ )
97+ _ , args , kwargs = index .deconstruct ()
98+ self .assertEqual (args , ())
99+ self .assertEqual (
100+ kwargs ,
101+ {
102+ "name" : "" ,
103+ "fields" : ["a" ],
104+ "analyzer" : "lucene.simple" ,
105+ "search_analyzer" : "lucene.english" ,
106+ },
107+ )
108+
79109
80110class VectorSearchIndexTests (SimpleTestCase ):
81111 def test_no_init_args (self ):
@@ -209,7 +239,7 @@ def test_valid_fields(self):
209239
210240 def test_field_mappings (self ):
211241 index = SearchIndex (
212- name = "recent_test_idx " ,
242+ name = "field_mappings_test_idx " ,
213243 field_mappings = {
214244 "char" : {
215245 "indexOptions" : "offsets" ,
@@ -225,27 +255,31 @@ def test_field_mappings(self):
225255 index_info = connection .introspection .get_constraints (
226256 cursor = None ,
227257 table_name = SearchIndexTestModel ._meta .db_table ,
228- )
258+ )[ index . name ]
229259 expected_options = {
230- "dynamic" : False ,
231- "fields" : {
232- "char" : {
233- "indexOptions" : "offsets" ,
234- "norms" : "include" ,
235- "store" : True ,
236- "type" : "string" ,
237- }
260+ "analyzer" : None ,
261+ "searchAnalyzer" : None ,
262+ "mappings" : {
263+ "dynamic" : False ,
264+ "fields" : {
265+ "char" : {
266+ "indexOptions" : "offsets" ,
267+ "norms" : "include" ,
268+ "store" : True ,
269+ "type" : "string" ,
270+ }
271+ },
238272 },
239273 }
240- self .assertCountEqual (index_info [index . name ][ "columns" ], index .fields )
241- self .assertEqual (index_info [index . name ][ "options" ][ "mappings " ], expected_options )
274+ self .assertCountEqual (index_info ["columns" ], index .fields )
275+ self .assertEqual (index_info ["options" ], expected_options )
242276 finally :
243277 with connection .schema_editor () as editor :
244278 editor .remove_index (index = index , model = SearchIndexTestModel )
245279
246- def test_analyzer_inclusion (self ):
280+ def test_analyzer (self ):
247281 index = SearchIndex (
248- name = "recent_test_idx " ,
282+ name = "analyzer_test_idx " ,
249283 fields = ["char" ],
250284 analyzer = "lucene.simple" ,
251285 search_analyzer = "lucene.simple" ,
@@ -256,7 +290,7 @@ def test_analyzer_inclusion(self):
256290 index_info = connection .introspection .get_constraints (
257291 cursor = None ,
258292 table_name = SearchIndexTestModel ._meta .db_table ,
259- )
293+ )[ index . name ]
260294 expected_options = {
261295 "analyzer" : "lucene.simple" ,
262296 "searchAnalyzer" : "lucene.simple" ,
@@ -272,8 +306,8 @@ def test_analyzer_inclusion(self):
272306 },
273307 },
274308 }
275- self .assertCountEqual (index_info [index . name ][ "columns" ], index .fields )
276- self .assertEqual (index_info [index . name ][ "options" ], expected_options )
309+ self .assertCountEqual (index_info ["columns" ], index .fields )
310+ self .assertEqual (index_info ["options" ], expected_options )
277311 finally :
278312 with connection .schema_editor () as editor :
279313 editor .remove_index (index = index , model = SearchIndexTestModel )
0 commit comments