@@ -24,6 +24,18 @@ def get_model(self):
24
24
return MockModel
25
25
26
26
27
+ class WhooshAnotherMockSearchIndex (indexes .SearchIndex ):
28
+ text = indexes .CharField (document = True )
29
+ name = indexes .CharField (model_attr = 'author' )
30
+ pub_date = indexes .DateField (model_attr = 'pub_date' )
31
+
32
+ def get_model (self ):
33
+ return AnotherMockModel
34
+
35
+ def prepare_text (self , obj ):
36
+ return obj .author
37
+
38
+
27
39
class AllTypesWhooshMockSearchIndex (indexes .SearchIndex ):
28
40
text = indexes .CharField (document = True , use_template = True )
29
41
name = indexes .CharField (model_attr = 'author' , indexed = False )
@@ -217,6 +229,17 @@ def test_search(self):
217
229
# Restore.
218
230
settings .HAYSTACK_LIMIT_TO_REGISTERED_MODELS = old_limit_to_registered_models
219
231
232
+ def test_search_all_models (self ):
233
+ wamsi = WhooshAnotherMockSearchIndex ()
234
+ self .ui .build (indexes = [self .wmmi , wamsi ])
235
+
236
+ self .sb .update (self .wmmi , self .sample_objs )
237
+ self .sb .update (wamsi , AnotherMockModel .objects .all ())
238
+
239
+ self .assertEqual (len (self .whoosh_search (u'*' )), 25 )
240
+
241
+ self .ui .build (indexes = [self .wmmi ])
242
+
220
243
def test_more_like_this (self ):
221
244
self .sb .update (self .wmmi , self .sample_objs )
222
245
self .assertEqual (len (self .whoosh_search (u'*' )), 23 )
@@ -710,6 +733,57 @@ def test_result_class(self):
710
733
self .assertTrue (isinstance (sqs [0 ], SearchResult ))
711
734
712
735
736
+ class LiveWhooshMultiSearchQuerySetTestCase (TestCase ):
737
+ fixtures = ['bulk_data.json' ]
738
+
739
+ def setUp (self ):
740
+ super (LiveWhooshMultiSearchQuerySetTestCase , self ).setUp ()
741
+
742
+ # Stow.
743
+ temp_path = os .path .join ('tmp' , 'test_whoosh_query' )
744
+ self .old_whoosh_path = settings .HAYSTACK_CONNECTIONS ['default' ]['PATH' ]
745
+ settings .HAYSTACK_CONNECTIONS ['default' ]['PATH' ] = temp_path
746
+
747
+ self .old_ui = connections ['default' ].get_unified_index ()
748
+ self .ui = UnifiedIndex ()
749
+ self .wmmi = WhooshMockSearchIndex ()
750
+ self .wamsi = WhooshAnotherMockSearchIndex ()
751
+ self .ui .build (indexes = [self .wmmi , self .wamsi ])
752
+ self .sb = connections ['default' ].get_backend ()
753
+ connections ['default' ]._index = self .ui
754
+
755
+ self .sb .setup ()
756
+ self .raw_whoosh = self .sb .index
757
+ self .parser = QueryParser (self .sb .content_field_name , schema = self .sb .schema )
758
+ self .sb .delete_index ()
759
+
760
+ self .wmmi .update ()
761
+ self .wamsi .update ()
762
+
763
+ self .sqs = SearchQuerySet ()
764
+
765
+ def tearDown (self ):
766
+ if os .path .exists (settings .HAYSTACK_CONNECTIONS ['default' ]['PATH' ]):
767
+ shutil .rmtree (settings .HAYSTACK_CONNECTIONS ['default' ]['PATH' ])
768
+
769
+ settings .HAYSTACK_CONNECTIONS ['default' ]['PATH' ] = self .old_whoosh_path
770
+ connections ['default' ]._index = self .old_ui
771
+ super (LiveWhooshMultiSearchQuerySetTestCase , self ).tearDown ()
772
+
773
+ def test_searchquerysets_with_models (self ):
774
+ sqs = self .sqs .all ()
775
+ self .assertEqual (sqs .query .build_query (), u'*' )
776
+ self .assertEqual (len (sqs ), 25 )
777
+
778
+ sqs = self .sqs .models (MockModel )
779
+ self .assertEqual (sqs .query .build_query (), u'django_ct:core.mockmodel' )
780
+ self .assertEqual (len (sqs ), 23 )
781
+
782
+ sqs = self .sqs .models (AnotherMockModel )
783
+ self .assertEqual (sqs .query .build_query (), u'django_ct:core.anothermockmodel' )
784
+ self .assertEqual (len (sqs ), 2 )
785
+
786
+
713
787
class LiveWhooshAutocompleteTestCase (TestCase ):
714
788
fixtures = ['bulk_data.json' ]
715
789
0 commit comments