コード例 #1
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_it_fails_if_field_not_exist(self):
     query = Query()
     table = Table('drivers', [[
         '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']])
     database = Database('database_name', query)
     database.add_table(table)
     database.proceed_query('SELECT *, id_name FROM drivers;')
     self.assertEqual(database.get_query().get_select_expression(), [])
     self.assertEqual(database.get_error(), 'Field not exist')
コード例 #2
0
ファイル: Table.py プロジェクト: troitskyA/py-qomma
    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
コード例 #3
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_it_parses_simple_where_statement_with_existed_field(self):
     query = Query()
     table = Table('drivers', [[
         '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']])
     database = Database('database_name', query)
     database.add_table(table)
     database.proceed_query(
         "SELECT first_name FROM drivers WHERE country = 'USA';")
     self.assertEqual(database.get_query().get_where_clause(),
                      [('', 'country', 'USA')])
コード例 #4
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_it_shows_error_if_aggregate_function_witout_if_statement(self):
     query = Query()
     table = Table('drivers', [[
         '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']])
     database = Database('database_name', query)
     database.add_table(table)
     database.proceed_query('SELECT COUNT(*) FROM drivers;')
     self.assertEqual(database.get_query().get_select_expression(), [])
     self.assertEqual(
         database.get_error(),
         'Query contains aggregate function, but WHERE statement missed')
コード例 #5
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_it_parses_complicated_where_statement_with_second_non_existed_field(
         self):
     query = Query()
     table = Table('drivers', [[
         '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']])
     database = Database('database_name', query)
     database.add_table(table)
     database.proceed_query(
         "SELECT first_name FROM drivers WHERE country = 'USA' AND df = 'sdf';"
     )
     self.assertEqual(database.get_error(),
                      'Column from where_expression not found')
コード例 #6
0
ファイル: test_query.py プロジェクト: troitskyA/py-qomma
    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])
コード例 #7
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_database_proceed_filled_query_string_with_table_not_exist(self):
     query = Query()
     database = Database('database_name', query)
     database.add_table(Table('drivers', []))
     database.proceed_query('SELECT company, country FROM drivers1;')
     self.assertEqual(database.get_error(), 'Table not exist')
コード例 #8
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_database_proceed_empty_query_string(self):
     query = Query()
     database = Database('database_name', query)
     database.proceed_query('')
     self.assertEqual(database.get_error(),
                      'Wrong query syntax, please try again')