def test_bad_group(self): check = LuceneCheck() query = SearchField("f", Group(Word("foo"))) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 2) # one for bad expr, one for misuse self.assertIn("Group misuse", "".join(check.errors(query)))
def test_zealous_or_not(self): query = (OrOperation(Not(Word("foo")), Word("bar"))) check_zealous = LuceneCheck(zeal=1) self.assertFalse(check_zealous(query)) self.assertIn("inconsistent", check_zealous.errors(query)[0]) check_easy_going = LuceneCheck() self.assertTrue(check_easy_going(query))
def test_unknown_item_type(self): check = LuceneCheck() query = AndOperation("foo", 2) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 2) self.assertIn("Unknown item type", check.errors(query)[0]) self.assertIn("Unknown item type", check.errors(query)[1])
def test_invalid_characters_in_word_value(self): query = Word("foo/bar") # Passes if zeal == 0 check = LuceneCheck() self.assertTrue(check(query)) self.assertEqual(len(check.errors(query)), 0) # But not if zeal == 1 check = LuceneCheck(zeal=1) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("Invalid characters", check.errors(query)[0])
def test_bad_fieldgroup(self): check = LuceneCheck() query = FieldGroup(Word("foo")) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("FieldGroup misuse", check.errors(query)[0]) query = OrOperation(FieldGroup(Word("bar")), Word("foo")) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("FieldGroup misuse", check.errors(query)[0])
def test_check_ok(self): query = (AndOperation( SearchField( "f", FieldGroup( AndOperation( Boost(Proximity(Phrase('"foo bar"'), 4), "4.2"), Prohibit(Range("100", "200"))))), Group(OrOperation(Fuzzy(Word("baz"), ".8"), Plus(Word("fizz")))))) check = LuceneCheck() self.assertTrue(check(query)) self.assertEqual(check.errors(query), []) check = LuceneCheck(zeal=1) self.assertTrue(check(query)) self.assertEqual(check.errors(query), [])
def test_fuzzy_negative_degree(self): check = LuceneCheck() query = Fuzzy(Word("foo"), "-4.1") self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("invalid degree", check.errors(query)[0])
def test_word_space(self): check = LuceneCheck() query = Word("foo bar") self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("space", check.errors(query)[0])
def test_bad_field_expr(self): check = LuceneCheck() query = SearchField("foo", Prohibit(Word("bar"))) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("not valid", check.errors(query)[0])
def test_bad_field_name(self): check = LuceneCheck() query = SearchField("foo*", Word("bar")) self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("not a valid field name", check.errors(query)[0])
def test_proximity_non_phrase(self): check = LuceneCheck() query = Proximity(Word("foo"), "2") self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("phrase", check.errors(query)[0])
def test_fuzzy_non_word(self): check = LuceneCheck() query = Fuzzy(Phrase('"foo bar"'), "2") self.assertFalse(check(query)) self.assertEqual(len(check.errors(query)), 1) self.assertIn("single term", check.errors(query)[0])