test_autogen_comments.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. from sqlalchemy import Column
  2. from sqlalchemy import Float
  3. from sqlalchemy import MetaData
  4. from sqlalchemy import String
  5. from sqlalchemy import Table
  6. from ._autogen_fixtures import AutogenFixtureTest
  7. from ...testing import eq_
  8. from ...testing import mock
  9. from ...testing import TestBase
  10. class AutogenerateCommentsTest(AutogenFixtureTest, TestBase):
  11. __backend__ = True
  12. __requires__ = ("comments",)
  13. def test_existing_table_comment_no_change(self):
  14. m1 = MetaData()
  15. m2 = MetaData()
  16. Table(
  17. "some_table",
  18. m1,
  19. Column("test", String(10), primary_key=True),
  20. comment="this is some table",
  21. )
  22. Table(
  23. "some_table",
  24. m2,
  25. Column("test", String(10), primary_key=True),
  26. comment="this is some table",
  27. )
  28. diffs = self._fixture(m1, m2)
  29. eq_(diffs, [])
  30. def test_add_table_comment(self):
  31. m1 = MetaData()
  32. m2 = MetaData()
  33. Table("some_table", m1, Column("test", String(10), primary_key=True))
  34. Table(
  35. "some_table",
  36. m2,
  37. Column("test", String(10), primary_key=True),
  38. comment="this is some table",
  39. )
  40. diffs = self._fixture(m1, m2)
  41. eq_(diffs[0][0], "add_table_comment")
  42. eq_(diffs[0][1].comment, "this is some table")
  43. eq_(diffs[0][2], None)
  44. def test_remove_table_comment(self):
  45. m1 = MetaData()
  46. m2 = MetaData()
  47. Table(
  48. "some_table",
  49. m1,
  50. Column("test", String(10), primary_key=True),
  51. comment="this is some table",
  52. )
  53. Table("some_table", m2, Column("test", String(10), primary_key=True))
  54. diffs = self._fixture(m1, m2)
  55. eq_(diffs[0][0], "remove_table_comment")
  56. eq_(diffs[0][1].comment, None)
  57. def test_alter_table_comment(self):
  58. m1 = MetaData()
  59. m2 = MetaData()
  60. Table(
  61. "some_table",
  62. m1,
  63. Column("test", String(10), primary_key=True),
  64. comment="this is some table",
  65. )
  66. Table(
  67. "some_table",
  68. m2,
  69. Column("test", String(10), primary_key=True),
  70. comment="this is also some table",
  71. )
  72. diffs = self._fixture(m1, m2)
  73. eq_(diffs[0][0], "add_table_comment")
  74. eq_(diffs[0][1].comment, "this is also some table")
  75. eq_(diffs[0][2], "this is some table")
  76. def test_existing_column_comment_no_change(self):
  77. m1 = MetaData()
  78. m2 = MetaData()
  79. Table(
  80. "some_table",
  81. m1,
  82. Column("test", String(10), primary_key=True),
  83. Column("amount", Float, comment="the amount"),
  84. )
  85. Table(
  86. "some_table",
  87. m2,
  88. Column("test", String(10), primary_key=True),
  89. Column("amount", Float, comment="the amount"),
  90. )
  91. diffs = self._fixture(m1, m2)
  92. eq_(diffs, [])
  93. def test_add_column_comment(self):
  94. m1 = MetaData()
  95. m2 = MetaData()
  96. Table(
  97. "some_table",
  98. m1,
  99. Column("test", String(10), primary_key=True),
  100. Column("amount", Float),
  101. )
  102. Table(
  103. "some_table",
  104. m2,
  105. Column("test", String(10), primary_key=True),
  106. Column("amount", Float, comment="the amount"),
  107. )
  108. diffs = self._fixture(m1, m2)
  109. eq_(
  110. diffs,
  111. [
  112. [
  113. (
  114. "modify_comment",
  115. None,
  116. "some_table",
  117. "amount",
  118. {
  119. "existing_nullable": True,
  120. "existing_type": mock.ANY,
  121. "existing_server_default": False,
  122. },
  123. None,
  124. "the amount",
  125. )
  126. ]
  127. ],
  128. )
  129. def test_remove_column_comment(self):
  130. m1 = MetaData()
  131. m2 = MetaData()
  132. Table(
  133. "some_table",
  134. m1,
  135. Column("test", String(10), primary_key=True),
  136. Column("amount", Float, comment="the amount"),
  137. )
  138. Table(
  139. "some_table",
  140. m2,
  141. Column("test", String(10), primary_key=True),
  142. Column("amount", Float),
  143. )
  144. diffs = self._fixture(m1, m2)
  145. eq_(
  146. diffs,
  147. [
  148. [
  149. (
  150. "modify_comment",
  151. None,
  152. "some_table",
  153. "amount",
  154. {
  155. "existing_nullable": True,
  156. "existing_type": mock.ANY,
  157. "existing_server_default": False,
  158. },
  159. "the amount",
  160. None,
  161. )
  162. ]
  163. ],
  164. )
  165. def test_alter_column_comment(self):
  166. m1 = MetaData()
  167. m2 = MetaData()
  168. Table(
  169. "some_table",
  170. m1,
  171. Column("test", String(10), primary_key=True),
  172. Column("amount", Float, comment="the amount"),
  173. )
  174. Table(
  175. "some_table",
  176. m2,
  177. Column("test", String(10), primary_key=True),
  178. Column("amount", Float, comment="the adjusted amount"),
  179. )
  180. diffs = self._fixture(m1, m2)
  181. eq_(
  182. diffs,
  183. [
  184. [
  185. (
  186. "modify_comment",
  187. None,
  188. "some_table",
  189. "amount",
  190. {
  191. "existing_nullable": True,
  192. "existing_type": mock.ANY,
  193. "existing_server_default": False,
  194. },
  195. "the amount",
  196. "the adjusted amount",
  197. )
  198. ]
  199. ],
  200. )