コード例 #1
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_database_proceed_filled_query_string_with_table_exist_fills_query_table_field(
         self):
     query = Query()
     database = Database('database_name', query)
     database.add_table(Table('drivers', []))
     database.proceed_query('SELECT company, country FROM drivers;')
     self.assertEqual(database.get_query().get_table(), 'drivers')
コード例 #2
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_it_fills_aggregate_function_field(self):
     query = Query()
     query.set_aggregate_function = MagicMock()
     database = Database('database_name', query)
     database.add_table(Table('drivers', []))
     database.proceed_query('SELECT COUNT(*) FROM drivers;')
     query.set_aggregate_function.assert_called_once_with('COUNT(*)')
コード例 #3
0
    def handle(self, path: str) -> Database:
        """
        Method receives path as a string and tries to reach this path.
        If path is incorrect, it returns Database entity with error message.
        In case of succeed, function goes through each file and tries to pass it through a factory, that returns
        reader or fails if no suitable reader found for this specific file.
        :param path: str
        :return: Database
        """

        if not os.path.isdir(path):
            database = Database('', Query())
            database.set_error('Path incorrect')
            return database

        database_name = os.path.basename(os.path.normpath(path))
        database = Database(database_name, Query())

        files = os.listdir(path)
        for file in files:
            table_parts = file.split('.')

            try:
                table = self.__reader_factory.create(table_parts).read(
                    path + '/' + file, table_parts[0])
                database.add_table(table)
            except:
                pass

        return database
コード例 #4
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_database_setters(self):
     query = Query()
     query.set_table('tada')
     table = Table('table_name', [])
     error_text = 'some error'
     database = Database('database_name', query)
     database.add_table(table)
     database.set_error(error_text)
     self.assertEqual(database.get_name(), 'database_name')
     self.assertEqual(database.get_tables(), {'table_name': table})
     self.assertEqual(database.get_error(), error_text)
     self.assertEqual(database.has_error(), True)
     self.assertEqual(database.get_query(), query)
コード例 #5
0
ファイル: test_database.py プロジェクト: troitskyA/py-qomma
 def test_it_fills_select_expression_with_multiple_fields(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, last_name FROM drivers;')
     self.assertEqual(database.get_query().get_select_expression(),
                      ['first_name', 'last_name'])
コード例 #6
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')])
コード例 #7
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')
コード例 #8
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')
コード例 #9
0
ファイル: test_controller.py プロジェクト: troitskyA/py-qomma
    def test_init_with_database(self, input):
        query = Query()
        query.get_aggregate_function = MagicMock(return_value='COUNT(*)')
        query.get_result = MagicMock(return_value=[3])

        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)
        controller = Controller()

        with patch('sys.stdout', new=StringIO()) as fake_out:
            controller.init(database)
            self.assertEqual(fake_out.getvalue(), 'Tables found: 1\ndrivers\n')
コード例 #10
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')