Files
trove/trove/tests/unittests/db/test_migration_utils.py
T
Sushil Kumar 843bb0cd53 Fixes hacking rules
This patchset helps reducing the ignored pep8 errors.

Fixed some ignored hacking rules, as listed follows:
- E111 indentation is not a multiple of four
- E122 continuation line missing indentation or outdented
- E123 closing bracket does not match indentation of opening bracket's line
- E128 continuation line under-indented for visual indent
- E251 unexpected spaces around keyword / parameter equals
- E265 block comment should start with '# '
- E713 test for membership should be 'not in'
- H105  Don't use author tags
- H306  imports not in alphabetical order

Change-Id: Iadf2af4f6ec90420153ad63b5a41650392ef2cbd
2015-05-29 07:27:59 +00:00

110 lines
5.2 KiB
Python

# Copyright 2014 Tesora Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
from mock import call
from mock import Mock
from mock import patch
from sqlalchemy.engine import reflection
from sqlalchemy.schema import Column
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy import utils as db_utils
from trove.tests.unittests import trove_testtools
class TestDbMigrationUtils(trove_testtools.TestCase):
def setUp(self):
super(TestDbMigrationUtils, self).setUp()
def tearDown(self):
super(TestDbMigrationUtils, self).tearDown()
@patch.object(reflection.Inspector, 'from_engine')
def test_get_foreign_key_constraint_names_single_match(self,
mock_inspector):
mock_engine = Mock()
(mock_inspector.return_value.
get_foreign_keys.return_value) = [{'constrained_columns': ['col1'],
'referred_table': 'ref_table1',
'referred_columns': ['ref_col1'],
'name': 'constraint1'},
{'constrained_columns': ['col2'],
'referred_table': 'ref_table2',
'referred_columns': ['ref_col2'],
'name': 'constraint2'}]
ret_val = db_utils.get_foreign_key_constraint_names(mock_engine,
'table1',
['col1'],
'ref_table1',
['ref_col1'])
self.assertEqual(['constraint1'], ret_val)
@patch.object(reflection.Inspector, 'from_engine')
def test_get_foreign_key_constraint_names_multi_match(self,
mock_inspector):
mock_engine = Mock()
(mock_inspector.return_value.
get_foreign_keys.return_value) = [
{'constrained_columns': ['col1'],
'referred_table': 'ref_table1',
'referred_columns': ['ref_col1'],
'name': 'constraint1'},
{'constrained_columns': ['col2', 'col3'],
'referred_table': 'ref_table1',
'referred_columns': ['ref_col2', 'ref_col3'],
'name': 'constraint2'},
{'constrained_columns': ['col2', 'col3'],
'referred_table': 'ref_table1',
'referred_columns': ['ref_col2', 'ref_col3'],
'name': 'constraint3'},
{'constrained_columns': ['col4'],
'referred_table': 'ref_table2',
'referred_columns': ['ref_col4'],
'name': 'constraint4'}]
ret_val = db_utils.get_foreign_key_constraint_names(
mock_engine, 'table1', ['col2', 'col3'],
'ref_table1', ['ref_col2', 'ref_col3'])
self.assertEqual(['constraint2', 'constraint3'], ret_val)
@patch.object(reflection.Inspector, 'from_engine')
def test_get_foreign_key_constraint_names_no_match(self, mock_inspector):
mock_engine = Mock()
(mock_inspector.return_value.
get_foreign_keys.return_value) = []
ret_val = db_utils.get_foreign_key_constraint_names(mock_engine,
'table1',
['col1'],
'ref_table1',
['ref_col1'])
self.assertEqual([], ret_val)
@patch('trove.db.sqlalchemy.utils.ForeignKeyConstraint')
def test_drop_foreign_key_constraints(self, mock_constraint):
test_columns = [Column('col1', String(5)),
Column('col2', String(5))]
test_refcolumns = [Column('ref_col1', String(5)),
Column('ref_col2', String(5))]
test_constraint_names = ['constraint1', 'constraint2']
db_utils.drop_foreign_key_constraints(test_constraint_names,
test_columns,
test_refcolumns)
expected = [call(columns=test_columns,
refcolumns=test_refcolumns,
name='constraint1'),
call(columns=test_columns,
refcolumns=test_refcolumns,
name='constraint2')]
self.assertEqual(expected, mock_constraint.call_args_list)