@@ -24,6 +24,18 @@ def get_model(self):
2424 return MockModel
2525
2626
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+
2739class AllTypesWhooshMockSearchIndex (indexes .SearchIndex ):
2840 text = indexes .CharField (document = True , use_template = True )
2941 name = indexes .CharField (model_attr = 'author' , indexed = False )
@@ -217,6 +229,17 @@ def test_search(self):
217229 # Restore.
218230 settings .HAYSTACK_LIMIT_TO_REGISTERED_MODELS = old_limit_to_registered_models
219231
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+
220243 def test_more_like_this (self ):
221244 self .sb .update (self .wmmi , self .sample_objs )
222245 self .assertEqual (len (self .whoosh_search (u'*' )), 23 )
@@ -710,6 +733,57 @@ def test_result_class(self):
710733 self .assertTrue (isinstance (sqs [0 ], SearchResult ))
711734
712735
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+
713787class LiveWhooshAutocompleteTestCase (TestCase ):
714788 fixtures = ['bulk_data.json' ]
715789
0 commit comments