def test_simple_parser_quoted(self): filters = Filters() name = 'fred' values = ["'1'", "'2'"] result = filters.simple_parser(name, values) exp = "fred IN ('1', '2')" self.assertEqual(result, exp, 'Single value')
def test_query_parser_simple(self): filters = Filters() name = 'wilma' values = ['1', '2'] result = filters.simple_parser(name, values) exp = "wilma IN ('1', '2')" self.assertEqual(result, exp, 'Query parser, simple values')
def test_simple_parser_empty(self): filters = Filters() name = 'fred' values = [] result = filters.simple_parser(name, values) exp = "" self.assertEqual(result, exp, 'Empty value')
def test_query_parser_query(self): filters = Filters() name = 'wilma' values = ['query = my query'] result = filters.query_parser(name, values) exp = "wilma IN (my query)" self.assertEqual(result, exp, 'Query parser, query')
def test_simple_parser_single_value(self): filters = Filters() name = 'fred' values = ['1'] result = filters.simple_parser(name, values) exp = "fred = '1'" self.assertEqual(result, exp, 'Single value')
def test_query_parser_query_multiple_mixed(self): filters = Filters() name = 'wilma' values = ['a', 'query = my query', 'b', 'query=other query', 'c'] result = filters.query_parser(name, values) exp = "(wilma IN ('a', 'b', 'c') OR wilma IN (my query) OR wilma IN (other query))" self.assertEqual(result, exp, 'Query parser, mixed')
def test_village_parser_simple(self): filters = Filters() name = 'village' values = ['QONOS'] result = filters.village_parser(name, values) exp = "village = 'QONOS'" self.assertEqual(result, exp, 'Single village')
def test_simple_parser_multiple_values(self): filters = Filters() name = 'fred' values = ['1', '2'] result = filters.simple_parser(name, values) exp = "fred IN ('1', '2')" self.assertEqual(result, exp, 'Single value')
def test_village_parser_empty(self): filters = Filters() name = 'village' values = [] result = filters.village_parser(name, values) exp = "village != 'UNKNOWN'" self.assertEqual(result, exp, 'No village')
def test_get_filters_lambda(self): filters = Filters() result = filters.get_filters(lambda x: x=='village') exp = "village != 'UNKNOWN'" self.assertEqual(result, exp, 'Get from empty filters, lambda matches') result = filters.get_filters(lambda x: x == '(*^&*&%^') exp = "" self.assertEqual(result, exp, 'Get from empty filters, lambda does not match')
def test_get_filters_after_add(self): filters = Filters() filters.add_filter('project', ['XYZ']) result = filters.get_filters(lambda x: True) # don't know what order they will be, but there should be 2 lines split = result.split('\n') self.assertEqual(len(split), 2, 'Filter with project, True, should have two phrases') filters.add_filter('categoryid', ['query = my query', 'query=other query']) result = filters.get_filters(lambda x: True) # there is no column flavor # should be 3 lines split = result.split('\n') self.assertEqual(len(split), 3, 'Filter with project, 2 content queries, True, should have three phrases')
def test_add_filter_same_village(self): filters = Filters() filters.add_filter('village', ['XYZ']) filters.add_filter('village', ['XYZ']) self.assertEqual(len(filters.column_filters), 1, 'Add one item twice')
def test_add_filter_one(self): filters = Filters() v = filters.add_filter('project', ['XYZ']) self.assertTrue(v, 'Add item should return true') self.assertEqual(len(filters.column_filters), 2, 'Add one item')
def test_add_filter_add_then_remove_village(self): filters = Filters() filters.add_filter('village', ['XYZ']) filters.add_filter('village', []) self.assertEqual(len(filters.column_filters), 1, 'Add one item, then remove it')
def test_add_filter_add_undefined(self): filters = Filters() v = filters.add_filter('bogus', ['XYZ']) self.assertFalse(v, 'Attempt to add bogus filter should return false') self.assertEqual(len(filters.column_filters), 1, 'Add one bogus item')
def test_get_filters_true(self): filters = Filters() result = filters.get_filters(lambda x: True) exp = "village != 'UNKNOWN'" self.assertEqual(result, exp, 'Get from empty filters, True')
def test_get_filters_false(self): filters = Filters() result = filters.get_filters(lambda x: False) exp = "" self.assertEqual(result, exp, 'Get from empty filters, False')
def test_add_filter_same(self): filters = Filters() filters.add_filter('project', ['XYZ']) filters.add_filter('project', ['XYZ']) self.assertEqual(len(filters.column_filters), 2, 'Add one item twice')