def test_merge_extra_filters_merges_different_val_types(self): form_data = { 'extra_filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], 'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], } expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected) form_data = { 'extra_filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], 'filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], } expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, {'col': 'a', 'op': 'in', 'val': 'someval'}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_ignores_empty_filters(self): form_data = {'extra_filters': [ {'col': 'a', 'op': 'in', 'val': ''}, {'col': 'B', 'op': '==', 'val': []}, ]} expected = {'filters': []} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters(self): # does nothing if no extra filters form_data = {'A': 1, 'B': 2, 'c': 'test'} expected = {'A': 1, 'B': 2, 'c': 'test'} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # empty extra_filters form_data = {'A': 1, 'B': 2, 'c': 'test', 'extra_filters': []} expected = {'A': 1, 'B': 2, 'c': 'test', 'filters': []} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # copy over extra filters into empty filters form_data = {'extra_filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ]} expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # adds extra filters to existing filters form_data = {'extra_filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], 'filters': [{'col': 'D', 'op': '!=', 'val': ['G1', 'g2']}]} expected = {'filters': [ {'col': 'D', 'op': '!=', 'val': ['G1', 'g2']}, {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # adds extra filters to existing filters and sets time options form_data = {'extra_filters': [ {'col': '__from', 'op': 'in', 'val': '1 year ago'}, {'col': '__to', 'op': 'in', 'val': None}, {'col': '__time_col', 'op': 'in', 'val': 'birth_year'}, {'col': '__time_grain', 'op': 'in', 'val': 'years'}, {'col': 'A', 'op': 'like', 'val': 'hello'}, {'col': '__time_origin', 'op': 'in', 'val': 'now'}, {'col': '__granularity', 'op': 'in', 'val': '90 seconds'}, ]} expected = { 'filters': [{'col': 'A', 'op': 'like', 'val': 'hello'}], 'since': '1 year ago', 'granularity_sqla': 'birth_year', 'time_grain_sqla': 'years', 'granularity': '90 seconds', 'druid_time_origin': 'now', } merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_ignores_nones(self): form_data = { 'filters': [ {'col': None, 'op': 'in', 'val': ''}, ], 'extra_filters': [ {'col': 'B', 'op': '==', 'val': []}, ], } expected = { 'filters': [ {'col': None, 'op': 'in', 'val': ''}, ], } merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_ignores_equal_filters(self): form_data = { 'extra_filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], 'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], } expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_ignores_equal_filters(self): form_data = { 'extra_filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], 'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], } expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': 'someval'}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_ignores_empty_filters(self): form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': '' }, { 'col': 'B', 'op': '==', 'val': [] }, ] } expected = {'adhoc_filters': []} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_adds_unequal_lists(self): form_data = { 'extra_filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2', 'g3']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2', 'c3']}, ], 'filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], } expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, {'col': 'a', 'op': 'in', 'val': ['g1', 'g2', 'g3']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2', 'c3']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_adds_unequal_lists(self): form_data = { 'extra_filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2', 'g3']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2', 'c3']}, ], 'filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, ], } expected = {'filters': [ {'col': 'a', 'op': 'in', 'val': ['g1', 'g2']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2']}, {'col': 'a', 'op': 'in', 'val': ['g1', 'g2', 'g3']}, {'col': 'B', 'op': '==', 'val': ['c1', 'c2', 'c3']}, ]} merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_adds_unequal_lists(self): form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': ['g1', 'g2', 'g3'] }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2', 'c3'] }, ], 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': ['g1', 'g2'], 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, ], } expected = { 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': ['g1', 'g2'], 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, { 'clause': 'WHERE', 'comparator': ['g1', 'g2', 'g3'], 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2', 'c3'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, ], } merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_merges_different_val_types(self): form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': ['g1', 'g2'] }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': 'someval', 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, ], } expected = { 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': 'someval', 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, { 'clause': 'WHERE', 'comparator': ['g1', 'g2'], 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, ], } merge_extra_filters(form_data) self.assertEquals(form_data, expected) form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': ['g1', 'g2'], 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, ], } expected = { 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': ['g1', 'g2'], 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, { 'clause': 'WHERE', 'comparator': 'someval', 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, ], } merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters(self): # does nothing if no extra filters form_data = {'A': 1, 'B': 2, 'c': 'test'} expected = {'A': 1, 'B': 2, 'c': 'test'} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # empty extra_filters form_data = {'A': 1, 'B': 2, 'c': 'test', 'extra_filters': []} expected = {'A': 1, 'B': 2, 'c': 'test', 'adhoc_filters': []} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # copy over extra filters into empty filters form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ] } expected = { 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': 'someval', 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, ], } merge_extra_filters(form_data) self.assertEquals(form_data, expected) # adds extra filters to existing filters form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': ['G1', 'g2'], 'expressionType': 'SIMPLE', 'operator': '!=', 'subject': 'D', }, ], } expected = { 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': ['G1', 'g2'], 'expressionType': 'SIMPLE', 'operator': '!=', 'subject': 'D', }, { 'clause': 'WHERE', 'comparator': 'someval', 'expressionType': 'SIMPLE', 'operator': 'in', 'subject': 'a', }, { 'clause': 'WHERE', 'comparator': ['c1', 'c2'], 'expressionType': 'SIMPLE', 'operator': '==', 'subject': 'B', }, ], } merge_extra_filters(form_data) self.assertEquals(form_data, expected) # adds extra filters to existing filters and sets time options form_data = { 'extra_filters': [ { 'col': '__time_range', 'op': 'in', 'val': '1 year ago :' }, { 'col': '__time_col', 'op': 'in', 'val': 'birth_year' }, { 'col': '__time_grain', 'op': 'in', 'val': 'years' }, { 'col': 'A', 'op': 'like', 'val': 'hello' }, { 'col': '__time_origin', 'op': 'in', 'val': 'now' }, { 'col': '__granularity', 'op': 'in', 'val': '90 seconds' }, ] } expected = { 'adhoc_filters': [ { 'clause': 'WHERE', 'comparator': 'hello', 'expressionType': 'SIMPLE', 'operator': 'like', 'subject': 'A', }, ], 'time_range': '1 year ago :', 'granularity_sqla': 'birth_year', 'time_grain_sqla': 'years', 'granularity': '90 seconds', 'druid_time_origin': 'now', } merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters(self): # does nothing if no extra filters form_data = {'A': 1, 'B': 2, 'c': 'test'} expected = {'A': 1, 'B': 2, 'c': 'test'} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # empty extra_filters form_data = {'A': 1, 'B': 2, 'c': 'test', 'extra_filters': []} expected = {'A': 1, 'B': 2, 'c': 'test', 'filters': []} merge_extra_filters(form_data) self.assertEquals(form_data, expected) # copy over extra filters into empty filters form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ] } expected = { 'filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ] } merge_extra_filters(form_data) self.assertEquals(form_data, expected) # adds extra filters to existing filters form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], 'filters': [{ 'col': 'D', 'op': '!=', 'val': ['G1', 'g2'] }] } expected = { 'filters': [ { 'col': 'D', 'op': '!=', 'val': ['G1', 'g2'] }, { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ] } merge_extra_filters(form_data) self.assertEquals(form_data, expected) # adds extra filters to existing filters and sets time options form_data = { 'extra_filters': [ { 'col': '__from', 'op': 'in', 'val': '1 year ago' }, { 'col': '__to', 'op': 'in', 'val': None }, { 'col': '__time_col', 'op': 'in', 'val': 'birth_year' }, { 'col': '__time_grain', 'op': 'in', 'val': 'years' }, { 'col': 'A', 'op': 'like', 'val': 'hello' }, { 'col': '__time_origin', 'op': 'in', 'val': 'now' }, { 'col': '__granularity', 'op': 'in', 'val': '90 seconds' }, ] } expected = { 'filters': [{ 'col': 'A', 'op': 'like', 'val': 'hello' }], 'since': '1 year ago', 'granularity_sqla': 'birth_year', 'time_grain_sqla': 'years', 'granularity': '90 seconds', 'druid_time_origin': 'now', } merge_extra_filters(form_data) self.assertEquals(form_data, expected)
def test_merge_extra_filters_merges_different_val_types(self): form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': ['g1', 'g2'] }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], 'filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], } expected = { 'filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, { 'col': 'a', 'op': 'in', 'val': ['g1', 'g2'] }, ] } merge_extra_filters(form_data) self.assertEquals(form_data, expected) form_data = { 'extra_filters': [ { 'col': 'a', 'op': 'in', 'val': 'someval' }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], 'filters': [ { 'col': 'a', 'op': 'in', 'val': ['g1', 'g2'] }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, ], } expected = { 'filters': [ { 'col': 'a', 'op': 'in', 'val': ['g1', 'g2'] }, { 'col': 'B', 'op': '==', 'val': ['c1', 'c2'] }, { 'col': 'a', 'op': 'in', 'val': 'someval' }, ] } merge_extra_filters(form_data) self.assertEquals(form_data, expected)