|
16 | 16 | import unittest |
17 | 17 | from unittest import mock |
18 | 18 |
|
| 19 | +from absl.testing import parameterized |
| 20 | + |
19 | 21 | from spanner_orm import error |
20 | 22 | from spanner_orm import field |
21 | 23 | from spanner_orm.admin import update |
22 | 24 | from spanner_orm.tests import models |
23 | 25 |
|
24 | 26 |
|
25 | | -class UpdateTest(unittest.TestCase): |
| 27 | +class UpdateTest(parameterized.TestCase): |
26 | 28 |
|
27 | 29 | @mock.patch('spanner_orm.admin.metadata.SpannerMetadata.model') |
28 | 30 | def test_add_column(self, get_model): |
@@ -118,15 +120,35 @@ def test_drop_table(self, get_model, tables, indexes): |
118 | 120 | test_update.validate() |
119 | 121 | self.assertEqual(test_update.ddl(), 'DROP TABLE {}'.format(table_name)) |
120 | 122 |
|
| 123 | + @parameterized.named_parameters( |
| 124 | + ( |
| 125 | + 'basic', |
| 126 | + update.CreateIndex( |
| 127 | + table_name=models.SmallTestModel.table, |
| 128 | + index_name='foo', |
| 129 | + columns=['value_1'], |
| 130 | + ), |
| 131 | + f'CREATE INDEX foo ON {models.SmallTestModel.table} (value_1)', |
| 132 | + ), |
| 133 | + ( |
| 134 | + 'with_options', |
| 135 | + update.CreateIndex( |
| 136 | + table_name=models.SmallTestModel.table, |
| 137 | + index_name='foo', |
| 138 | + columns=['value_1'], |
| 139 | + null_filtered=True, |
| 140 | + unique=True, |
| 141 | + ), |
| 142 | + (f'CREATE UNIQUE NULL_FILTERED INDEX foo ' |
| 143 | + f'ON {models.SmallTestModel.table} (value_1)'), |
| 144 | + ), |
| 145 | + ) |
121 | 146 | @mock.patch('spanner_orm.admin.metadata.SpannerMetadata.model') |
122 | | - def test_add_index(self, get_model): |
123 | | - table_name = models.SmallTestModel.table |
| 147 | + def test_add_index(self, test_update, expected_ddl, get_model): |
124 | 148 | get_model.return_value = models.SmallTestModel |
125 | 149 |
|
126 | | - test_update = update.CreateIndex(table_name, 'foo', ['value_1']) |
127 | 150 | test_update.validate() |
128 | | - self.assertEqual(test_update.ddl(), |
129 | | - 'CREATE INDEX foo ON {} (value_1)'.format(table_name)) |
| 151 | + self.assertEqual(test_update.ddl(), expected_ddl) |
130 | 152 |
|
131 | 153 |
|
132 | 154 | if __name__ == '__main__': |
|
0 commit comments