Skip to content

Commit

Permalink
Enable extractionFn on Search Filter and Like Filter
Browse files Browse the repository at this point in the history
  • Loading branch information
SongYunSeop committed Apr 22, 2020
1 parent a30ade9 commit 08e89e4
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
2 changes: 2 additions & 0 deletions pydruid/utils/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class Filter:
"bound",
"interval",
"extraction",
"like",
"search",
)

def __init__(self, extraction_function=None, ordering="lexicographic", **args):
Expand Down
37 changes: 36 additions & 1 deletion tests/utils/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,9 +275,44 @@ def test_search_filter(self):
'query': {'type': 'contains', 'caseSensitive': 'true', 'value': 'val'}}
assert actual == expected

def test_search_filter_with_extraction_function(self):
extraction_fn = dimensions.RegexExtraction("([a-b])")
actual = filters.Filter.build_filter(
filters.Filter(
type="search",
dimension="dim",
value="val",
extraction_function=extraction_fn,
)
)
expected = {
"type": "search",
"dimension": "dim",
"query": {"type": "contains", "caseSensitive": "false", "value": "val"},
"extractionFn": {"type": "regex", "expr": "([a-b])"},
}
assert actual == expected

def test_like_filter(self):
actual = filters.Filter.build_filter(
filters.Filter(type="like", dimension="dim", pattern="%val%"))
expected = {'type': 'like', 'dimension': 'dim', 'pattern': '%val%'}
assert actual == expected


def test_like_filter_with_extraction_function(self):
extraction_fn = dimensions.RegexExtraction("([a-b])")
actual = filters.Filter.build_filter(
filters.Filter(
type="like",
dimension="dim",
pattern="%val%",
extraction_function=extraction_fn,
)
)
expected = {
"type": "like",
"dimension": "dim",
"pattern": "%val%",
"extractionFn": {"type": "regex", "expr": "([a-b])"},
}
assert actual == expected

0 comments on commit 08e89e4

Please sign in to comment.