コード例 #1
0
ファイル: test_sql.py プロジェクト: GreyCosSil/ggenerator
    def test_writting_sql_table_without_index(self, mocker,
                                              pandas_dataframe_with_data,
                                              specification,
                                              sql_specification_format,
                                              sql_specification_writer):
        expected = "123456789"
        table_name = "mytable"
        index_flag = False
        formatter_spec = sql_specification_format(table_name=table_name,
                                                  index=index_flag)

        formatter = SQLFormatter(specification=formatter_spec)
        writer = MysqlDirectDatabaseWriter(
            formatter=formatter, specification=sql_specification_writer)

        db_engine = create_engine('sqlite:///:memory:')

        mock = mocker.patch('getpass._raw_input')
        mock.return_value = expected

        mock_ = mocker.patch.object(MysqlDirectDatabaseWriter, 'engine')
        mock_.return_value = db_engine

        writer.before_write()
        writer.write(dataframe=pandas_dataframe_with_data)

        dataframe_from_sql = pd.read_sql_table(table_name='mytable',
                                               con=db_engine)
        assert dataframe_from_sql.equals(pandas_dataframe_with_data)
        mock_.assert_called()
コード例 #2
0
ファイル: test_sql.py プロジェクト: GreyCosSil/ggenerator
    def test_writing_sql_script(self, sql_specification_format,
                                pandas_dataframe_with_data):
        table_name = "mytable"
        index_flag = True
        index_label = "myindexlabel"
        uri = uuid.uuid4().hex
        formatter_spec = sql_specification_format(table_name=table_name,
                                                  index=index_flag,
                                                  index_label=index_label)
        formatter = SQLFormatter(specification=formatter_spec)
        formatter.format(dataframe=pandas_dataframe_with_data,
                         path_or_buffer=uri)

        assert os.path.exists(uri)
        with open(uri, 'r') as f:
            assert len(f.read()) > 0
        os.remove(uri)
コード例 #3
0
    def test_writting_dataframe_without_records(self, mocker,
                                                pandas_dataframe_without_data,
                                                postgres_specification_cli):
        mock_conn = mocker.patch.object(PostgresSqlPsql, 'execute_query')
        mock_conn.return_value = lambda x: None

        formatter = SQLFormatter(specification={})
        writer = PostgreSqlClientDatabaseWriter(
            formatter=formatter, specification=postgres_specification_cli)
        writer.write(dataframe=pandas_dataframe_without_data)

        mock_conn.assert_not_called()
コード例 #4
0
ファイル: test_mysql.py プロジェクト: GreyCosSil/ggenerator
    def test_writting_dataframe_without_records(self, mocker,
                                                pandas_dataframe_without_data,
                                                mysql_specification):
        mock_conn = mocker.patch('src.lib.shell.Shell.execute')
        mock_conn.cursor.return_value = lambda x: 0

        formatter = SQLFormatter(specification={})
        writer = MysqlClientDatabaseWriter(formatter=formatter,
                                           specification=mysql_specification)
        writer.write(dataframe=pandas_dataframe_without_data)

        mock_conn.assert_not_called()
コード例 #5
0
    def test_writting_dataframe_without_records(self, mocker,
                                                sql_specification_format,
                                                pandas_dataframe_without_data,
                                                postgres_specification_direct):
        mock_conn = mocker.patch('psycopg2.connect')
        mock_conn.cursor.return_value = lambda x: 0

        formatter = SQLFormatter(specification={})
        writer = PostgresDirectDatabaseWriter(
            formatter=formatter, specification=postgres_specification_direct)
        writer.write(dataframe=pandas_dataframe_without_data)

        mock_conn.assert_not_called()
コード例 #6
0
    def test_before_write(self, mocker, sql_specification_format):
        expected = "123"
        mock = mocker.patch('getpass._raw_input')
        mock.return_value = expected

        formatter = SQLFormatter(
            specification=sql_specification_format('mytable'))
        writer = PostgresDirectDatabaseWriter(formatter=formatter,
                                              specification={'options': {}})
        writer.before_write()

        mock.assert_called()
        assert writer.specification['options']['password'] == expected
コード例 #7
0
    def test_writting_csv_with_records(self, mocker,
                                       pandas_dataframe_with_data,
                                       sql_specification_format,
                                       postgres_specification_direct):
        db_engine = create_engine('sqlite:///:memory:')

        mock = mocker.patch('getpass._raw_input')
        mock.return_value = "mytable"

        mock_ = mocker.patch.object(PostgresDirectDatabaseWriter, 'engine')
        mock_.return_value = db_engine

        formatter = SQLFormatter(
            specification=sql_specification_format('mytable'))
        writer = PostgresDirectDatabaseWriter(
            formatter=formatter, specification=postgres_specification_direct)
        writer.before_write()
        writer.write(dataframe=pandas_dataframe_with_data)

        dataframe_from_sql = pd.read_sql_table(table_name='mytable',
                                               con=db_engine)
        assert dataframe_from_sql.equals(pandas_dataframe_with_data)
        mock_.assert_called()