Skip to content

Commit

Permalink
add tests for quoting
Browse files Browse the repository at this point in the history
  • Loading branch information
Jacob Beck committed Sep 11, 2018
1 parent 0cf38bc commit 99a04e9
Show file tree
Hide file tree
Showing 2 changed files with 179 additions and 0 deletions.
85 changes: 85 additions & 0 deletions test/unit/test_postgres_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from dbt.adapters.postgres import PostgresAdapter
from dbt.exceptions import ValidationException
from dbt.logger import GLOBAL_LOGGER as logger # noqa
from psycopg2 import extensions as psycopg2_extensions


class TestPostgresAdapter(unittest.TestCase):
Expand Down Expand Up @@ -79,3 +80,87 @@ def test_set_zero_keepalive(self, psycopg2):
port=5432,
connect_timeout=10)


class TestConnectingPostgresAdapter(unittest.TestCase):
def setUp(self):
flags.STRICT_MODE = False

self.profile = {
'dbname': 'postgres',
'user': 'root',
'host': 'database',
'pass': 'password',
'port': 5432,
'schema': 'public'
}

self.project = {
'name': 'X',
'version': '0.1',
'profile': 'test',
'project-root': '/tmp/dbt/does-not-exist',
'quoting': {
'identifier': False,
'schema': True,
}
}

self.handle = mock.MagicMock(spec=psycopg2_extensions.connection)
self.cursor = self.handle.cursor.return_value
self.mock_execute = self.cursor.execute
self.patcher = mock.patch('dbt.adapters.postgres.impl.psycopg2')
self.psycopg2 = self.patcher.start()

self.psycopg2.connect.return_value = self.handle
conn = PostgresAdapter.get_connection(self.profile)

def tearDown(self):
# we want a unique self.handle every time.
PostgresAdapter.cleanup_connections()
self.patcher.stop()

def test_quoting_on_drop_schema(self):
PostgresAdapter.drop_schema(
profile=self.profile,
project_cfg=self.project,
schema='test_schema'
)

self.mock_execute.assert_has_calls([
mock.call('drop schema if exists "test_schema" cascade', None)
])

def test_quoting_on_drop(self):
PostgresAdapter.drop(
profile=self.profile,
project_cfg=self.project,
schema='test_schema',
relation='test_table',
relation_type='table'
)
self.mock_execute.assert_has_calls([
mock.call('drop table if exists "test_schema".test_table cascade', None)
])

def test_quoting_on_truncate(self):
PostgresAdapter.truncate(
profile=self.profile,
project_cfg=self.project,
schema='test_schema',
table='test_table'
)
self.mock_execute.assert_has_calls([
mock.call('truncate table "test_schema".test_table', None)
])

def test_quoting_on_rename(self):
PostgresAdapter.rename(
profile=self.profile,
project_cfg=self.project,
schema='test_schema',
from_name='table_a',
to_name='table_b'
)
self.mock_execute.assert_has_calls([
mock.call('alter table "test_schema".table_a rename to table_b', None)
])
94 changes: 94 additions & 0 deletions test/unit/test_snowflake_adapter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import mock
import unittest

import dbt.flags as flags

import dbt.adapters
from dbt.adapters.snowflake import SnowflakeAdapter
from dbt.exceptions import ValidationException
from dbt.logger import GLOBAL_LOGGER as logger # noqa
from snowflake import connector as snowflake_connector

class TestSnowflakeAdapter(unittest.TestCase):
def setUp(self):
flags.STRICT_MODE = False

self.profile = {
'dbname': 'postgres',
'user': 'root',
'host': 'database',
'pass': 'password',
'port': 5432,
'schema': 'public'
}

self.project = {
'name': 'X',
'version': '0.1',
'profile': 'test',
'project-root': '/tmp/dbt/does-not-exist',
'quoting': {
'identifier': False,
'schema': True,
}
}

self.handle = mock.MagicMock(spec=snowflake_connector.SnowflakeConnection)
self.cursor = self.handle.cursor.return_value
self.mock_execute = self.cursor.execute
self.patcher = mock.patch('dbt.adapters.snowflake.impl.snowflake.connector.connect')
self.snowflake = self.patcher.start()

self.snowflake.return_value = self.handle
conn = SnowflakeAdapter.get_connection(self.profile)

def tearDown(self):
# we want a unique self.handle every time.
SnowflakeAdapter.cleanup_connections()
self.patcher.stop()

def test_quoting_on_drop_schema(self):
SnowflakeAdapter.drop_schema(
profile=self.profile,
project_cfg=self.project,
schema='test_schema'
)

self.mock_execute.assert_has_calls([
mock.call('drop schema if exists "test_schema" cascade', None)
])

def test_quoting_on_drop(self):
SnowflakeAdapter.drop(
profile=self.profile,
project_cfg=self.project,
schema='test_schema',
relation='test_table',
relation_type='table'
)
self.mock_execute.assert_has_calls([
mock.call('drop table if exists "test_schema".test_table cascade', None)
])

def test_quoting_on_truncate(self):
SnowflakeAdapter.truncate(
profile=self.profile,
project_cfg=self.project,
schema='test_schema',
table='test_table'
)
self.mock_execute.assert_has_calls([
mock.call('truncate table "test_schema".test_table', None)
])

def test_quoting_on_rename(self):
SnowflakeAdapter.rename(
profile=self.profile,
project_cfg=self.project,
schema='test_schema',
from_name='table_a',
to_name='table_b'
)
self.mock_execute.assert_has_calls([
mock.call('alter table "test_schema".table_a rename to table_b', None)
])

0 comments on commit 99a04e9

Please sign in to comment.