Пример #1
0
 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(), [])
Пример #2
0
    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])
Пример #3
0
    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']])
Пример #4
0
    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