def test_field_lookup(self): field = fields.ExactSearchField("pk", field_lookup="contains") self.assertEqual(field.match_case, True) self.assertEqual(field.field_lookup, "exact") field = fields.ExactSearchField("pk", field_lookup="contains", match_case=False) self.assertEqual(field.match_case, False) self.assertEqual(field.field_lookup, "iexact")
def test_simple(self): # basic, no frills field = fields.ExactSearchField("pk") self.assertEqual(field.field_name, "pk") self.assertEqual(field.match_case, True) self.assertEqual(field.field_lookup, "exact") # changes with match_case field = fields.ExactSearchField("pk", match_case=False) self.assertEqual(field.field_name, "pk") self.assertEqual(field.match_case, False) self.assertEqual(field.field_lookup, "iexact")
def test_get_search_fields(self): attrs = [("field1", fields.SearchField("pk", field_lookup="istartswith")), ("field2", fields.ExactSearchField("name", match_case=False, default=True)), ("field3", fields.ExactSearchField("something"))] search_fields = filters.SearchFilterMetaclass._get_search_fields( (), dict(attrs)) self.assertEqual(len(search_fields), 3) expected_fields = ["field2", "field3", "field1"] self.assertEqual(list(search_fields.keys()), expected_fields)
def test_get_search_fields__with_aliases(self): test_fields = { "field1": fields.SearchField("pk", field_lookup="istartswith", aliases="f1"), "field2": fields.ExactSearchField("name", match_case=False, default=True), "field3": fields.ExactSearchField("something", aliases=["f3"]) } attrs = [("field1", test_fields["field1"]), ("field2", test_fields["field2"]), ("field3", test_fields["field3"])] search_fields = filters.SearchFilterMetaclass._get_search_fields( (), dict(attrs)) self.assertEqual(len(search_fields), 5) expected_fields = ["field2", "field3", "f3", "field1", "f1"] self.assertEqual(list(search_fields.keys()), expected_fields)
def test_get_search_fields__with_bases__with_aliases(self): test_fields = { "fieldA": fields.IntegerSearchField("id", aliases="fa"), "fieldB": fields.RegexSearchField("title", aliases="fb"), "fieldZ": fields.BooleanSearchField("active"), "field1": fields.SearchField("pk", field_lookup="istartswith"), "field2": fields.ExactSearchField("name", match_case=False, default=True), "sharedfield": fields.ExactSearchField("something", aliases=["s"]) } class Example(object): _search_fields = [("fieldA", test_fields["fieldA"]), ("fieldB", test_fields["fieldB"]), ("sharedfield", test_fields["sharedfield"])] class Example2(object): _search_fields = [("fieldZ", test_fields["fieldZ"]), ("fieldB", test_fields["fieldB"]), ("sharedfield", test_fields["sharedfield"])] bases = (Example, Example2) attrs = [("field1", test_fields["field1"]), ("field2", test_fields["field2"]), ("sharedfield", test_fields["sharedfield"])] search_fields = filters.SearchFilterMetaclass._get_search_fields( bases, dict(attrs)) self.assertEqual(len(search_fields), 9) expected_fields = [ "fieldA", "fa", "fieldZ", "fieldB", "fb", "field2", "field1", "sharedfield", "s" ] self.assertEqual(list(search_fields.keys()), expected_fields)