def test_get_filters_converts_strings_to_num(self): filtr = {'col': 'A', 'op': 'in', 'val': ['6']} res = DruidDatasource.get_filters([filtr], ['A']) self.assertEqual(6, res.filter['filter']['value']) filtr = {'col': 'A', 'op': '==', 'val': '6'} res = DruidDatasource.get_filters([filtr], ['A']) self.assertEqual(6, res.filter['filter']['value'])
def test_get_filters_handles_arrays_for_string_types(self): filtr = {'col': 'A', 'op': '==', 'val': ['a', 'b']} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('a', res.filter['filter']['value']) filtr = {'col': 'A', 'op': '==', 'val': []} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('', res.filter['filter']['value'])
def test_get_filters_converts_strings_to_num(self): filtr = {'col': 'A', 'op': 'in', 'val': ['6']} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], ['A'], column_dict) self.assertEqual(6, res.filter['filter']['value']) filtr = {'col': 'A', 'op': '==', 'val': '6'} res = DruidDatasource.get_filters([filtr], ['A'], column_dict) self.assertEqual(6, res.filter['filter']['value'])
def test_get_filters_handles_arrays_for_string_types(self): filtr = {'col': 'A', 'op': '==', 'val': ['a', 'b']} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('a', res.filter['filter']['value']) filtr = {'col': 'A', 'op': '==', 'val': []} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertIsNone(res.filter['filter']['value'])
def test_get_filters_constructs_filter_in(self): filtr = {'col': 'A', 'op': 'in', 'val': ['a', 'b', 'c']} res = DruidDatasource.get_filters([filtr], []) self.assertIn('filter', res.filter) self.assertIn('fields', res.filter['filter']) self.assertEqual('or', res.filter['filter']['type']) self.assertEqual(3, len(res.filter['filter']['fields']))
def test_get_filters_ignores_in_not_in_with_empty_value(self): filtr1 = {'col': 'A', 'op': 'in', 'val': []} filtr2 = {'col': 'A', 'op': 'not in', 'val': []} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr1, filtr2], [], column_dict) self.assertIsNone(res)
def test_get_filters_constructs_equals_for_in_not_in_single_value(self): filtr = {'col': 'A', 'op': 'in', 'val': ['a']} cola = DruidColumn(column_name='A') colb = DruidColumn(column_name='B') column_dict = {'A': cola, 'B': colb} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('selector', res.filter['filter']['type'])
def test_get_filters_constructs_filter_not_equals(self): filtr = {'col': 'A', 'op': '!=', 'val': 'h'} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('not', res.filter['filter']['type']) self.assertEqual( 'h', res.filter['filter']['field'].filter['filter']['value'], )
def test_get_filters_constructs_regex_filter(self): filtr = {'col': 'A', 'op': 'regex', 'val': '[abc]'} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('regex', res.filter['filter']['type']) self.assertEqual('[abc]', res.filter['filter']['pattern']) self.assertEqual('A', res.filter['filter']['dimension'])
def test_get_filters_constructs_filter_equals(self): filtr = {'col': 'A', 'op': '==', 'val': 'h'} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('selector', res.filter['filter']['type']) self.assertEqual('A', res.filter['filter']['dimension']) self.assertEqual('h', res.filter['filter']['value'])
def test_get_filters_constructs_bounds_filter(self): filtr = {'col': 'A', 'op': '>=', 'val': 'h'} res = DruidDatasource.get_filters([filtr], []) self.assertFalse(res.filter['filter']['lowerStrict']) self.assertEqual('A', res.filter['filter']['dimension']) self.assertEqual('h', res.filter['filter']['lower']) self.assertFalse(res.filter['filter']['alphaNumeric']) filtr['op'] = '>' res = DruidDatasource.get_filters([filtr], []) self.assertTrue(res.filter['filter']['lowerStrict']) filtr['op'] = '<=' res = DruidDatasource.get_filters([filtr], []) self.assertFalse(res.filter['filter']['upperStrict']) self.assertEqual('h', res.filter['filter']['upper']) filtr['op'] = '<' res = DruidDatasource.get_filters([filtr], []) self.assertTrue(res.filter['filter']['upperStrict'])
def test_get_filters_composes_multiple_filters(self): filtr1 = {'col': 'A', 'op': '!=', 'val': 'y'} filtr2 = {'col': 'B', 'op': 'in', 'val': ['a', 'b', 'c']} cola = DruidColumn(column_name='A') colb = DruidColumn(column_name='B') column_dict = {'A': cola, 'B': colb} res = DruidDatasource.get_filters([filtr1, filtr2], [], column_dict) self.assertEqual('and', res.filter['filter']['type']) self.assertEqual(2, len(res.filter['filter']['fields']))
def test_get_filters_constructs_filter_not_equals(self): filtr = {'col': 'A', 'op': '!=', 'val': 'h'} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('not', res.filter['filter']['type']) self.assertEqual( 'h', res.filter['filter']['field'].filter['filter']['value'], )
def test_get_filters_is_not_null_filter(self): filtr = {"col": "A", "op": "IS NOT NULL"} col = DruidColumn(column_name="A") column_dict = {"A": col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual("not", res.filter["filter"]["type"]) self.assertIn("field", res.filter["filter"]) self.assertEqual( "selector", res.filter["filter"]["field"].filter["filter"]["type"]) self.assertEqual( "", res.filter["filter"]["field"].filter["filter"]["value"])
def test_get_filters_constructs_filter_not_in(self): filtr = {'col': 'A', 'op': 'not in', 'val': ['a', 'b', 'c']} res = DruidDatasource.get_filters([filtr], []) self.assertIn('filter', res.filter) self.assertIn('type', res.filter['filter']) self.assertEqual('not', res.filter['filter']['type']) self.assertIn('field', res.filter['filter']) self.assertEqual( 3, len(res.filter['filter']['field'].filter['filter']['fields']), )
def test_get_filters_constructs_filter_not_in(self): filtr = {"col": "A", "op": "not in", "val": ["a", "b", "c"]} col = DruidColumn(column_name="A") column_dict = {"A": col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertIn("filter", res.filter) self.assertIn("type", res.filter["filter"]) self.assertEqual("not", res.filter["filter"]["type"]) self.assertIn("field", res.filter["filter"]) self.assertEqual( 3, len(res.filter["filter"]["field"].filter["filter"]["fields"]))
def test_get_filters_constructs_filter_not_in(self): filtr = {'col': 'A', 'op': 'not in', 'val': ['a', 'b', 'c']} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertIn('filter', res.filter) self.assertIn('type', res.filter['filter']) self.assertEqual('not', res.filter['filter']['type']) self.assertIn('field', res.filter['filter']) self.assertEqual( 3, len(res.filter['filter']['field'].filter['filter']['fields']), )
def test_get_filters_constructs_bounds_filter(self): filtr = {"col": "A", "op": ">=", "val": "h"} col = DruidColumn(column_name="A") column_dict = {"A": col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertFalse(res.filter["filter"]["lowerStrict"]) self.assertEqual("A", res.filter["filter"]["dimension"]) self.assertEqual("h", res.filter["filter"]["lower"]) self.assertEqual("lexicographic", res.filter["filter"]["ordering"]) filtr["op"] = ">" res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertTrue(res.filter["filter"]["lowerStrict"]) filtr["op"] = "<=" res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertFalse(res.filter["filter"]["upperStrict"]) self.assertEqual("h", res.filter["filter"]["upper"]) filtr["op"] = "<" res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertTrue(res.filter["filter"]["upperStrict"]) filtr["val"] = 1 res = DruidDatasource.get_filters([filtr], ["A"], column_dict) self.assertEqual("numeric", res.filter["filter"]["ordering"])
def test_get_filters_extraction_fn_registered_lookup_extraction(self): filters = [{"col": "country", "val": ["Spain"], "op": "in"}] dimension_spec = { "type": "extraction", "dimension": "country_name", "outputName": "country", "outputType": "STRING", "extractionFn": {"type": "registeredLookup", "lookup": "country_name"}, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name="country", dimension_spec_json=spec_json) column_dict = {"country": col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, RegisteredLookupExtraction) dim_ext_fn = dimension_spec["extractionFn"] self.assertEqual(dim_ext_fn["type"], f.extraction_function.extraction_type) self.assertEqual(dim_ext_fn["lookup"], f.extraction_function._lookup)
def test_get_filters_extraction_fn_regex(self): filters = [{"col": "buildPrefix", "val": ["22B"], "op": "in"}] dimension_spec = { "type": "extraction", "dimension": "build", "outputName": "buildPrefix", "outputType": "STRING", "extractionFn": {"type": "regex", "expr": "(^[0-9A-Za-z]{3})"}, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name="buildPrefix", dimension_spec_json=spec_json) column_dict = {"buildPrefix": col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, RegexExtraction) dim_ext_fn = dimension_spec["extractionFn"] f_ext_fn = f.extraction_function self.assertEqual(dim_ext_fn["expr"], f_ext_fn._expr)
def test_get_filters_extraction_fn_map(self): filters = [{'col': 'deviceName', 'val': ['iPhone X'], 'op': 'in'}] dimension_spec = { 'type': 'extraction', 'dimension': 'device', 'outputName': 'deviceName', 'outputType': 'STRING', 'extractionFn': { 'type': 'lookup', 'dimension': 'dimensionName', 'outputName': 'dimensionOutputName', 'replaceMissingValueWith': 'missing_value', 'retainMissingValue': False, 'lookup': { 'type': 'map', 'map': { 'iPhone10,1': 'iPhone 8', 'iPhone10,4': 'iPhone 8', 'iPhone10,2': 'iPhone 8 Plus', 'iPhone10,5': 'iPhone 8 Plus', 'iPhone10,3': 'iPhone X', 'iPhone10,6': 'iPhone X', }, 'isOneToOne': False, }, }, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name='deviceName', dimension_spec_json=spec_json) column_dict = {'deviceName': col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, MapLookupExtraction) dim_ext_fn = dimension_spec['extractionFn'] f_ext_fn = f.extraction_function self.assertEqual(dim_ext_fn['lookup']['map'], f_ext_fn._mapping) self.assertEqual(dim_ext_fn['lookup']['isOneToOne'], f_ext_fn._injective) self.assertEqual( dim_ext_fn['replaceMissingValueWith'], f_ext_fn._replace_missing_values, ) self.assertEqual( dim_ext_fn['retainMissingValue'], f_ext_fn._retain_missing_values, )
def test_get_filters_extraction_fn_map(self): filters = [{'col': 'deviceName', 'val': ['iPhone X'], 'op': 'in'}] dimension_spec = { 'type': 'extraction', 'dimension': 'device', 'outputName': 'deviceName', 'outputType': 'STRING', 'extractionFn': { 'type': 'lookup', 'dimension': 'dimensionName', 'outputName': 'dimensionOutputName', 'replaceMissingValueWith': 'missing_value', 'retainMissingValue': False, 'lookup': { 'type': 'map', 'map': { 'iPhone10,1': 'iPhone 8', 'iPhone10,4': 'iPhone 8', 'iPhone10,2': 'iPhone 8 Plus', 'iPhone10,5': 'iPhone 8 Plus', 'iPhone10,3': 'iPhone X', 'iPhone10,6': 'iPhone X', }, 'isOneToOne': False, }, }, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name='deviceName', dimension_spec_json=spec_json) column_dict = {'deviceName': col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, MapLookupExtraction) dim_ext_fn = dimension_spec['extractionFn'] f_ext_fn = f.extraction_function self.assertEqual(dim_ext_fn['lookup']['map'], f_ext_fn._mapping) self.assertEqual(dim_ext_fn['lookup']['isOneToOne'], f_ext_fn._injective) self.assertEqual( dim_ext_fn['replaceMissingValueWith'], f_ext_fn._replace_missing_values, ) self.assertEqual( dim_ext_fn['retainMissingValue'], f_ext_fn._retain_missing_values, )
def test_get_filters_extraction_fn_map(self): filters = [{"col": "deviceName", "val": ["iPhone X"], "op": "in"}] dimension_spec = { "type": "extraction", "dimension": "device", "outputName": "deviceName", "outputType": "STRING", "extractionFn": { "type": "lookup", "dimension": "dimensionName", "outputName": "dimensionOutputName", "replaceMissingValueWith": "missing_value", "retainMissingValue": False, "lookup": { "type": "map", "map": { "iPhone10,1": "iPhone 8", "iPhone10,4": "iPhone 8", "iPhone10,2": "iPhone 8 Plus", "iPhone10,5": "iPhone 8 Plus", "iPhone10,3": "iPhone X", "iPhone10,6": "iPhone X", }, "isOneToOne": False, }, }, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name="deviceName", dimension_spec_json=spec_json) column_dict = {"deviceName": col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, MapLookupExtraction) dim_ext_fn = dimension_spec["extractionFn"] f_ext_fn = f.extraction_function self.assertEqual(dim_ext_fn["lookup"]["map"], f_ext_fn._mapping) self.assertEqual(dim_ext_fn["lookup"]["isOneToOne"], f_ext_fn._injective) self.assertEqual(dim_ext_fn["replaceMissingValueWith"], f_ext_fn._replace_missing_values) self.assertEqual(dim_ext_fn["retainMissingValue"], f_ext_fn._retain_missing_values)
def test_get_filters_extraction_fn_regex(self): filters = [{'col': 'buildPrefix', 'val': ['22B'], 'op': 'in'}] dimension_spec = { 'type': 'extraction', 'dimension': 'build', 'outputName': 'buildPrefix', 'outputType': 'STRING', 'extractionFn': { 'type': 'regex', 'expr': '(^[0-9A-Za-z]{3})', }, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name='buildPrefix', dimension_spec_json=spec_json) column_dict = {'buildPrefix': col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, RegexExtraction) dim_ext_fn = dimension_spec['extractionFn'] f_ext_fn = f.extraction_function self.assertEqual(dim_ext_fn['expr'], f_ext_fn._expr)
def test_get_filters_extraction_fn_regex(self): filters = [{'col': 'buildPrefix', 'val': ['22B'], 'op': 'in'}] dimension_spec = { 'type': 'extraction', 'dimension': 'build', 'outputName': 'buildPrefix', 'outputType': 'STRING', 'extractionFn': { 'type': 'regex', 'expr': '(^[0-9A-Za-z]{3})', }, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name='buildPrefix', dimension_spec_json=spec_json) column_dict = {'buildPrefix': col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, RegexExtraction) dim_ext_fn = dimension_spec['extractionFn'] f_ext_fn = f.extraction_function self.assertEqual(dim_ext_fn['expr'], f_ext_fn._expr)
def test_get_filters_extraction_fn_time_format(self): filters = [{"col": "dayOfMonth", "val": ["1", "20"], "op": "in"}] dimension_spec = { "type": "extraction", "dimension": "__time", "outputName": "dayOfMonth", "extractionFn": { "type": "timeFormat", "format": "d", "timeZone": "Asia/Kolkata", "locale": "en", }, } spec_json = json.dumps(dimension_spec) col = DruidColumn(column_name="dayOfMonth", dimension_spec_json=spec_json) column_dict = {"dayOfMonth": col} f = DruidDatasource.get_filters(filters, [], column_dict) assert isinstance(f.extraction_function, TimeFormatExtraction) dim_ext_fn = dimension_spec["extractionFn"] self.assertEqual(dim_ext_fn["type"], f.extraction_function.extraction_type) self.assertEqual(dim_ext_fn["format"], f.extraction_function._format) self.assertEqual(dim_ext_fn["timeZone"], f.extraction_function._time_zone) self.assertEqual(dim_ext_fn["locale"], f.extraction_function._locale)
def test_get_filters_constructs_filter_equals(self): filtr = {'col': 'A', 'op': '==', 'val': 'h'} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('selector', res.filter['filter']['type']) self.assertEqual('A', res.filter['filter']['dimension']) self.assertEqual('h', res.filter['filter']['value'])
def test_get_filters_ignores_invalid_filter_objects(self): filtr = {'col': 'col1', 'op': '=='} filters = [filtr] self.assertEqual(None, DruidDatasource.get_filters(filters, []))
def test_get_filters_constructs_equals_for_in_not_in_single_value(self): filtr = {'col': 'A', 'op': 'in', 'val': ['a']} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('selector', res.filter['filter']['type'])
def test_get_filters_keeps_trailing_spaces(self): filtr = {"col": "A", "op": "in", "val": ["a "]} col = DruidColumn(column_name="A") column_dict = {"A": col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual("a ", res.filter["filter"]["value"])
def test_get_filters_handles_none_for_string_types(self): filtr = {"col": "A", "op": "==", "val": None} col = DruidColumn(column_name="A") column_dict = {"A": col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertIsNone(res)
def test_get_filters_ignores_invalid_filter_objects(self): filtr = {'col': 'col1', 'op': '=='} filters = [filtr] col = DruidColumn(column_name='col1') column_dict = {'col1': col} self.assertIsNone(DruidDatasource.get_filters(filters, [], column_dict))
def test_get_filters_handles_none_for_string_types(self): filtr = {'col': 'A', 'op': '==', 'val': None} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertIsNone(res)
def test_get_filters_ignores_in_not_in_with_empty_value(self): filtr1 = {'col': 'A', 'op': 'in', 'val': []} filtr2 = {'col': 'A', 'op': 'not in', 'val': []} res = DruidDatasource.get_filters([filtr1, filtr2], []) self.assertEqual(None, res)
def test_get_filters_constructs_regex_filter(self): filtr = {'col': 'A', 'op': 'regex', 'val': '[abc]'} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('regex', res.filter['filter']['type']) self.assertEqual('[abc]', res.filter['filter']['pattern']) self.assertEqual('A', res.filter['filter']['dimension'])
def test_get_filters_constructs_filter_equals(self): filtr = {'col': 'A', 'op': '==', 'val': 'h'} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('selector', res.filter['filter']['type']) self.assertEqual('A', res.filter['filter']['dimension']) self.assertEqual('h', res.filter['filter']['value'])
def test_get_filters_constructs_filter_not_equals(self): filtr = {'col': 'A', 'op': '!=', 'val': 'h'} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('not', res.filter['filter']['type']) self.assertEqual( 'h', res.filter['filter']['field'].filter['filter']['value'])
def test_get_filters_ignores_invalid_filter_objects(self): filtr = {'col': 'col1', 'op': '=='} filters = [filtr] self.assertEqual(None, DruidDatasource.get_filters(filters, []))
def test_get_filters_handles_none_for_string_types(self): filtr = {'col': 'A', 'op': '==', 'val': None} res = DruidDatasource.get_filters([filtr], []) self.assertIsNone(res)
def test_get_filters_ignores_invalid_filter_objects(self): filtr = {"col": "col1", "op": "=="} filters = [filtr] col = DruidColumn(column_name="col1") column_dict = {"col1": col} self.assertIsNone(DruidDatasource.get_filters(filters, [], column_dict))
def test_get_filters_composes_multiple_filters(self): filtr1 = {'col': 'A', 'op': '!=', 'val': 'y'} filtr2 = {'col': 'B', 'op': 'in', 'val': ['a', 'b', 'c']} res = DruidDatasource.get_filters([filtr1, filtr2], []) self.assertEqual('and', res.filter['filter']['type']) self.assertEqual(2, len(res.filter['filter']['fields']))
def test_get_filters_extracts_values_in_quotes(self): filtr = {'col': 'A', 'op': 'in', 'val': [' "a" ']} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('a', res.filter['filter']['value'])
def test_get_filters_handles_none_for_string_types(self): filtr = {'col': 'A', 'op': '==', 'val': None} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertIsNone(res)
def test_get_filters_constructs_regex_filter(self): filtr = {'col': 'A', 'op': 'regex', 'val': '[abc]'} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('regex', res.filter['filter']['type']) self.assertEqual('[abc]', res.filter['filter']['pattern']) self.assertEqual('A', res.filter['filter']['dimension'])
def test_get_filters_extracts_values_in_quotes(self): filtr = {'col': 'A', 'op': 'in', 'val': [' "a" ']} col = DruidColumn(column_name='A') column_dict = {'A': col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual('a', res.filter['filter']['value'])
def test_get_filters_composes_multiple_filters(self): filtr1 = {'col': 'A', 'op': '!=', 'val': 'y'} filtr2 = {'col': 'B', 'op': 'in', 'val': ['a', 'b', 'c']} res = DruidDatasource.get_filters([filtr1, filtr2], []) self.assertEqual('and', res.filter['filter']['type']) self.assertEqual(2, len(res.filter['filter']['fields']))
def test_get_filters_constructs_equals_for_in_not_in_single_value(self): filtr = {'col': 'A', 'op': 'in', 'val': ['a']} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('selector', res.filter['filter']['type'])
def test_get_filters_handles_none_for_string_types(self): filtr = {'col': 'A', 'op': '==', 'val': None} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('', res.filter['filter']['value'])
def test_get_filters_extracts_values_in_quotes(self): filtr = {"col": "A", "op": "in", "val": ['"a"']} col = DruidColumn(column_name="A") column_dict = {"A": col} res = DruidDatasource.get_filters([filtr], [], column_dict) self.assertEqual("a", res.filter["filter"]["value"])
def test_get_filters_extracts_values_in_quotes(self): filtr = {'col': 'A', 'op': 'in', 'val': [' "a" ']} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('a', res.filter['filter']['value'])
def test_get_filters_extracts_values_in_quotes(self): filtr = {'col': 'A', 'op': 'in', 'val': [' "a" ']} res = DruidDatasource.get_filters([filtr], []) self.assertEqual('a', res.filter['filter']['value'])
def test_get_filters_ignores_in_not_in_with_empty_value(self): filtr1 = {'col': 'A', 'op': 'in', 'val': []} filtr2 = {'col': 'A', 'op': 'not in', 'val': []} res = DruidDatasource.get_filters([filtr1, filtr2], []) self.assertEqual(None, res)