class GetQueryParametersTestCase(EngineerTestCase): """ Tests methods for retrieving query parameters. """ def setUp(self): super(GetQueryParametersTestCase, self).setUp() self.engineer = Engineer(query=self.query, specs=PipeSpecSheet()) def test_get_accounts(self): """ Tests the get_accounts method. """ accounts = self.engineer.get_accounts() self.assertEqual(len(accounts), 2) def test_get_locations(self): """ Tests the get_locations method. """ locations = self.engineer.get_locations() self.assertEqual(len(locations), 4) def test_get_searchterms(self): """ Tests the get_searchterms method. """ searchterms = self.engineer.get_searchterms() self.assertEqual(len(searchterms), 3)
def test_dup_terms(self): """ Tests the _handle_phrases method for terms with duplicate words. """ terms = [SearchTerm(term='police'), SearchTerm(term='police officer')] query = ReservoirQuery(searchterms=terms) specs = PipeSpecSheet(accepts_phrases=False) engineer = Engineer(query=query, specs=specs) engineer._handle_phrases() searchterms = engineer.get_searchterms() self.assertEqual(len(searchterms), 3)
def test_for_negation_not_allowed(self): """ Tests the _handle_negation method for an API that doesn't allow negation of search terms. """ terms = [SearchTerm(term='police'), SearchTerm(term='car', negate=True)] query = ReservoirQuery(searchterms=terms) engineer = Engineer(query=query, specs=PipeSpecSheet()) engineer._handle_negation() searchterms = engineer.get_searchterms() self.assertEqual(len(searchterms), 1)
def test_for_accepts_phrases(self): """ Tests the _handle_phrases method for an API that accepts phrases. """ terms = [SearchTerm(term='police officer')] query = ReservoirQuery(searchterms=terms) specs = PipeSpecSheet(accepts_phrases=True) engineer = Engineer(query=query, specs=specs) engineer._handle_phrases() searchterms = engineer.get_searchterms() self.assertEqual(len(searchterms), 1) self.assertEqual(searchterms[0].term, 'police officer')
def test_for_multiple_phrases(self): """ Tests the _handle_phrases method for an API that accepts phrases. """ # 'police', 'police oficeer', 'bank robbery' terms = SearchTerm.objects.filter(pk__in=[1, 2, 3]) query = ReservoirQuery(searchterms=terms) specs = PipeSpecSheet(accepts_phrases=False) engineer = Engineer(query=query, specs=specs) engineer._handle_phrases() searchterms = engineer.get_searchterms() # 'police', 'officer', policeoficeer', 'bank', 'robbery', bankrobbery' self.assertEqual(len(searchterms), 6)