def test_query_default(self): query = Query() self.assertEqual(query.get_select_expression(), []) self.assertEqual(query.get_aggregate_function(), '') self.assertEqual(query.get_table(), '') self.assertEqual(query.get_where_clause(), []) self.assertEqual(query.get_result(), [])
def test_query_setters(self): query = Query() query.set_select_expression(['country', 'first_name']), query.set_aggregate_function('COUNT(*)'), query.set_table('table_name'), query.add_where_clause('', 'country', 'USA'), query.set_result([3]), self.assertEqual(query.get_select_expression(), ['country', 'first_name']) self.assertEqual(query.get_aggregate_function(), 'COUNT(*)') self.assertEqual(query.get_table(), 'table_name') self.assertEqual(query.get_where_clause(), [('', 'country', 'USA')]) self.assertEqual(query.get_result(), [3])
def test_table_selects_simple_query_with_one_field(self): table = Table('table_name', [ ['id', 'first_name', 'last_name', 'country', 'year_of_birth', 'company'], ['1', 'John', 'Carmack', 'USA', '1970', 'id Software'], ['2', 'Jonn', 'Romero', 'USA', '1967', 'id Software'], ['3', 'Elon', 'Musk', 'USA', '1971', 'Tesla'], ['4', 'Damon', 'Hill', 'UK', '1960', 'Williams'] ]) query = Query() query.get_select_expression = MagicMock(return_value=['id']) query.get_aggregate_function = MagicMock(return_value='') query.get_where_clause = MagicMock(return_value=[]) self.assertEqual(table.select_rows(query), [['1'], ['2'], ['3'], ['4']])
def select_rows(self, query: Query) -> list: selected = [] keys = self.__get_keys(query.get_select_expression()) for row in self.__rows: formed_row = [] if self.__is_satisfied_by_where_clause(row, query.get_where_clause()): if query.get_aggregate_function() != '': if query.get_aggregate_function() == 'COUNT(*)': formed_row = row else: for key in keys: formed_row.append(row[key]) selected.append(formed_row) if query.get_aggregate_function() != '': return [len(selected)] return selected