|
15 | 15 |
|
16 | 16 | import unittest |
17 | 17 | import mock |
| 18 | +from google.cloud.spanner_v1 import TransactionOptions |
18 | 19 |
|
19 | 20 |
|
20 | 21 | class Test_merge_query_options(unittest.TestCase): |
@@ -955,3 +956,83 @@ def test(self): |
955 | 956 | self.assertEqual( |
956 | 957 | metadata, ("x-goog-spanner-route-to-leader", str(value).lower()) |
957 | 958 | ) |
| 959 | + |
| 960 | + |
| 961 | +class Test_merge_transaction_options(unittest.TestCase): |
| 962 | + def _callFUT(self, *args, **kw): |
| 963 | + from google.cloud.spanner_v1._helpers import _merge_Transaction_Options |
| 964 | + |
| 965 | + return _merge_Transaction_Options(*args, **kw) |
| 966 | + |
| 967 | + def test_default_none_and_merge_none(self): |
| 968 | + default = merge = None |
| 969 | + result = self._callFUT(default, merge) |
| 970 | + self.assertIsNone(result) |
| 971 | + |
| 972 | + def test_default_options_and_merge_none(self): |
| 973 | + default = TransactionOptions( |
| 974 | + isolation_level=TransactionOptions.IsolationLevel.REPEATABLE_READ |
| 975 | + ) |
| 976 | + merge = None |
| 977 | + result = self._callFUT(default, merge) |
| 978 | + expected = default |
| 979 | + self.assertEqual(result, expected) |
| 980 | + |
| 981 | + def test_default_none_and_merge_options(self): |
| 982 | + default = None |
| 983 | + merge = TransactionOptions( |
| 984 | + isolation_level=TransactionOptions.IsolationLevel.SERIALIZABLE |
| 985 | + ) |
| 986 | + expected = merge |
| 987 | + result = self._callFUT(default, merge) |
| 988 | + self.assertEqual(result, expected) |
| 989 | + |
| 990 | + def test_default_and_merge_isolation_options(self): |
| 991 | + default = TransactionOptions( |
| 992 | + isolation_level=TransactionOptions.IsolationLevel.SERIALIZABLE, |
| 993 | + read_write=TransactionOptions.ReadWrite(), |
| 994 | + ) |
| 995 | + merge = TransactionOptions( |
| 996 | + isolation_level=TransactionOptions.IsolationLevel.REPEATABLE_READ, |
| 997 | + exclude_txn_from_change_streams=True, |
| 998 | + ) |
| 999 | + expected = TransactionOptions( |
| 1000 | + isolation_level=TransactionOptions.IsolationLevel.REPEATABLE_READ, |
| 1001 | + read_write=TransactionOptions.ReadWrite(), |
| 1002 | + exclude_txn_from_change_streams=True, |
| 1003 | + ) |
| 1004 | + result = self._callFUT(default, merge) |
| 1005 | + self.assertEqual(result, expected) |
| 1006 | + |
| 1007 | + def test_default_isolation_and_merge_options(self): |
| 1008 | + default = TransactionOptions( |
| 1009 | + isolation_level=TransactionOptions.IsolationLevel.SERIALIZABLE |
| 1010 | + ) |
| 1011 | + merge = TransactionOptions( |
| 1012 | + read_write=TransactionOptions.ReadWrite(), |
| 1013 | + exclude_txn_from_change_streams=True, |
| 1014 | + ) |
| 1015 | + expected = TransactionOptions( |
| 1016 | + isolation_level=TransactionOptions.IsolationLevel.SERIALIZABLE, |
| 1017 | + read_write=TransactionOptions.ReadWrite(), |
| 1018 | + exclude_txn_from_change_streams=True, |
| 1019 | + ) |
| 1020 | + result = self._callFUT(default, merge) |
| 1021 | + self.assertEqual(result, expected) |
| 1022 | + |
| 1023 | + def test_default_isolation_and_merge_options_isolation_unspecified(self): |
| 1024 | + default = TransactionOptions( |
| 1025 | + isolation_level=TransactionOptions.IsolationLevel.SERIALIZABLE |
| 1026 | + ) |
| 1027 | + merge = TransactionOptions( |
| 1028 | + read_write=TransactionOptions.ReadWrite(), |
| 1029 | + exclude_txn_from_change_streams=True, |
| 1030 | + isolation_level=TransactionOptions.IsolationLevel.ISOLATION_LEVEL_UNSPECIFIED, |
| 1031 | + ) |
| 1032 | + expected = TransactionOptions( |
| 1033 | + isolation_level=TransactionOptions.IsolationLevel.SERIALIZABLE, |
| 1034 | + read_write=TransactionOptions.ReadWrite(), |
| 1035 | + exclude_txn_from_change_streams=True, |
| 1036 | + ) |
| 1037 | + result = self._callFUT(default, merge) |
| 1038 | + self.assertEqual(result, expected) |
0 commit comments