activerecord-sqlserver-adapter 6.0.0.rc1 → 6.0.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +29 -0
  4. data/CHANGELOG.md +20 -0
  5. data/Gemfile +11 -5
  6. data/Guardfile +9 -8
  7. data/Rakefile +12 -16
  8. data/VERSION +1 -1
  9. data/activerecord-sqlserver-adapter.gemspec +3 -3
  10. data/lib/active_record/connection_adapters/sqlserver/core_ext/active_record.rb +0 -4
  11. data/lib/active_record/connection_adapters/sqlserver/core_ext/attribute_methods.rb +1 -4
  12. data/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +3 -4
  13. data/lib/active_record/connection_adapters/sqlserver/core_ext/explain.rb +1 -3
  14. data/lib/active_record/connection_adapters/sqlserver/core_ext/finder_methods.rb +2 -3
  15. data/lib/active_record/connection_adapters/sqlserver/core_ext/query_methods.rb +2 -3
  16. data/lib/active_record/connection_adapters/sqlserver/database_statements.rb +35 -32
  17. data/lib/active_record/connection_adapters/sqlserver/database_tasks.rb +7 -12
  18. data/lib/active_record/connection_adapters/sqlserver/errors.rb +0 -3
  19. data/lib/active_record/connection_adapters/sqlserver/quoting.rb +8 -8
  20. data/lib/active_record/connection_adapters/sqlserver/schema_creation.rb +0 -2
  21. data/lib/active_record/connection_adapters/sqlserver/schema_dumper.rb +7 -7
  22. data/lib/active_record/connection_adapters/sqlserver/schema_statements.rb +106 -103
  23. data/lib/active_record/connection_adapters/sqlserver/showplan.rb +6 -8
  24. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_table.rb +2 -2
  25. data/lib/active_record/connection_adapters/sqlserver/showplan/printer_xml.rb +1 -1
  26. data/lib/active_record/connection_adapters/sqlserver/sql_type_metadata.rb +0 -2
  27. data/lib/active_record/connection_adapters/sqlserver/table_definition.rb +1 -4
  28. data/lib/active_record/connection_adapters/sqlserver/transaction.rb +4 -8
  29. data/lib/active_record/connection_adapters/sqlserver/type.rb +35 -35
  30. data/lib/active_record/connection_adapters/sqlserver/type/big_integer.rb +0 -2
  31. data/lib/active_record/connection_adapters/sqlserver/type/binary.rb +0 -2
  32. data/lib/active_record/connection_adapters/sqlserver/type/boolean.rb +0 -2
  33. data/lib/active_record/connection_adapters/sqlserver/type/char.rb +2 -2
  34. data/lib/active_record/connection_adapters/sqlserver/type/data.rb +0 -2
  35. data/lib/active_record/connection_adapters/sqlserver/type/date.rb +2 -3
  36. data/lib/active_record/connection_adapters/sqlserver/type/datetime.rb +2 -3
  37. data/lib/active_record/connection_adapters/sqlserver/type/datetime2.rb +0 -2
  38. data/lib/active_record/connection_adapters/sqlserver/type/datetimeoffset.rb +0 -2
  39. data/lib/active_record/connection_adapters/sqlserver/type/decimal.rb +0 -2
  40. data/lib/active_record/connection_adapters/sqlserver/type/float.rb +0 -2
  41. data/lib/active_record/connection_adapters/sqlserver/type/integer.rb +0 -2
  42. data/lib/active_record/connection_adapters/sqlserver/type/json.rb +0 -1
  43. data/lib/active_record/connection_adapters/sqlserver/type/money.rb +0 -2
  44. data/lib/active_record/connection_adapters/sqlserver/type/real.rb +0 -2
  45. data/lib/active_record/connection_adapters/sqlserver/type/small_integer.rb +0 -2
  46. data/lib/active_record/connection_adapters/sqlserver/type/small_money.rb +0 -2
  47. data/lib/active_record/connection_adapters/sqlserver/type/smalldatetime.rb +0 -2
  48. data/lib/active_record/connection_adapters/sqlserver/type/string.rb +0 -2
  49. data/lib/active_record/connection_adapters/sqlserver/type/text.rb +0 -2
  50. data/lib/active_record/connection_adapters/sqlserver/type/time.rb +2 -3
  51. data/lib/active_record/connection_adapters/sqlserver/type/time_value_fractional.rb +6 -9
  52. data/lib/active_record/connection_adapters/sqlserver/type/timestamp.rb +0 -2
  53. data/lib/active_record/connection_adapters/sqlserver/type/tiny_integer.rb +0 -2
  54. data/lib/active_record/connection_adapters/sqlserver/type/unicode_char.rb +1 -3
  55. data/lib/active_record/connection_adapters/sqlserver/type/unicode_string.rb +0 -2
  56. data/lib/active_record/connection_adapters/sqlserver/type/unicode_text.rb +0 -2
  57. data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar.rb +0 -2
  58. data/lib/active_record/connection_adapters/sqlserver/type/unicode_varchar_max.rb +0 -2
  59. data/lib/active_record/connection_adapters/sqlserver/type/uuid.rb +1 -2
  60. data/lib/active_record/connection_adapters/sqlserver/type/varbinary.rb +1 -3
  61. data/lib/active_record/connection_adapters/sqlserver/type/varbinary_max.rb +0 -2
  62. data/lib/active_record/connection_adapters/sqlserver/type/varchar.rb +1 -3
  63. data/lib/active_record/connection_adapters/sqlserver/type/varchar_max.rb +0 -2
  64. data/lib/active_record/connection_adapters/sqlserver/utils.rb +8 -11
  65. data/lib/active_record/connection_adapters/sqlserver/version.rb +0 -2
  66. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +85 -83
  67. data/lib/active_record/connection_adapters/sqlserver_column.rb +0 -2
  68. data/lib/active_record/sqlserver_base.rb +1 -1
  69. data/lib/active_record/tasks/sqlserver_database_tasks.rb +26 -32
  70. data/lib/activerecord-sqlserver-adapter.rb +1 -1
  71. data/lib/arel/visitors/sqlserver.rb +18 -14
  72. data/lib/arel_sqlserver.rb +2 -2
  73. data/test/cases/adapter_test_sqlserver.rb +161 -182
  74. data/test/cases/change_column_null_test_sqlserver.rb +12 -12
  75. data/test/cases/coerced_tests.rb +88 -270
  76. data/test/cases/column_test_sqlserver.rb +281 -283
  77. data/test/cases/connection_test_sqlserver.rb +15 -20
  78. data/test/cases/execute_procedure_test_sqlserver.rb +18 -20
  79. data/test/cases/fetch_test_sqlserver.rb +14 -22
  80. data/test/cases/fully_qualified_identifier_test_sqlserver.rb +12 -18
  81. data/test/cases/helper_sqlserver.rb +13 -15
  82. data/test/cases/in_clause_test_sqlserver.rb +9 -9
  83. data/test/cases/index_test_sqlserver.rb +13 -15
  84. data/test/cases/json_test_sqlserver.rb +23 -25
  85. data/test/cases/migration_test_sqlserver.rb +22 -28
  86. data/test/cases/order_test_sqlserver.rb +51 -54
  87. data/test/cases/pessimistic_locking_test_sqlserver.rb +25 -33
  88. data/test/cases/rake_test_sqlserver.rb +31 -45
  89. data/test/cases/schema_dumper_test_sqlserver.rb +104 -108
  90. data/test/cases/schema_test_sqlserver.rb +18 -26
  91. data/test/cases/scratchpad_test_sqlserver.rb +2 -4
  92. data/test/cases/showplan_test_sqlserver.rb +24 -33
  93. data/test/cases/specific_schema_test_sqlserver.rb +66 -65
  94. data/test/cases/transaction_test_sqlserver.rb +16 -19
  95. data/test/cases/trigger_test_sqlserver.rb +12 -12
  96. data/test/cases/utils_test_sqlserver.rb +68 -70
  97. data/test/cases/uuid_test_sqlserver.rb +11 -13
  98. data/test/debug.rb +6 -6
  99. data/test/migrations/create_clients_and_change_column_null.rb +1 -1
  100. data/test/migrations/transaction_table/1_table_will_never_be_created.rb +2 -4
  101. data/test/models/sqlserver/booking.rb +1 -1
  102. data/test/models/sqlserver/customers_view.rb +1 -1
  103. data/test/models/sqlserver/dollar_table_name.rb +1 -1
  104. data/test/models/sqlserver/edge_schema.rb +1 -3
  105. data/test/models/sqlserver/fk_has_fk.rb +1 -1
  106. data/test/models/sqlserver/fk_has_pk.rb +1 -1
  107. data/test/models/sqlserver/natural_pk_data.rb +2 -2
  108. data/test/models/sqlserver/natural_pk_int_data.rb +1 -1
  109. data/test/models/sqlserver/no_pk_data.rb +1 -1
  110. data/test/models/sqlserver/object_default.rb +1 -1
  111. data/test/models/sqlserver/quoted_table.rb +2 -2
  112. data/test/models/sqlserver/quoted_view_1.rb +1 -1
  113. data/test/models/sqlserver/quoted_view_2.rb +1 -1
  114. data/test/models/sqlserver/sst_memory.rb +1 -1
  115. data/test/models/sqlserver/string_default.rb +1 -1
  116. data/test/models/sqlserver/string_defaults_big_view.rb +1 -1
  117. data/test/models/sqlserver/string_defaults_view.rb +1 -1
  118. data/test/models/sqlserver/tinyint_pk.rb +1 -1
  119. data/test/models/sqlserver/trigger.rb +2 -2
  120. data/test/models/sqlserver/trigger_history.rb +1 -1
  121. data/test/models/sqlserver/upper.rb +1 -1
  122. data/test/models/sqlserver/uppered.rb +1 -1
  123. data/test/models/sqlserver/uuid.rb +1 -1
  124. data/test/schema/sqlserver_specific_schema.rb +20 -22
  125. data/test/support/coerceable_test_sqlserver.rb +1 -4
  126. data/test/support/connection_reflection.rb +1 -2
  127. data/test/support/core_ext/query_cache.rb +1 -1
  128. data/test/support/load_schema_sqlserver.rb +3 -5
  129. data/test/support/minitest_sqlserver.rb +1 -1
  130. data/test/support/paths_sqlserver.rb +9 -11
  131. data/test/support/rake_helpers.rb +12 -10
  132. data/test/support/sql_counter_sqlserver.rb +0 -4
  133. data/test/support/test_in_memory_oltp.rb +7 -7
  134. metadata +5 -4
@@ -1,22 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cases/helper_sqlserver'
3
+ require "cases/helper_sqlserver"
4
4
 
5
5
  class ColumnTestSQLServer < ActiveRecord::TestCase
6
-
7
- it '#table_name' do
8
- assert SSTestDatatype.columns.all? { |c| c.table_name == 'sst_datatypes' }
9
- assert SSTestCustomersView.columns.all? { |c| c.table_name == 'customers' }
6
+ it "#table_name" do
7
+ assert SSTestDatatype.columns.all? { |c| c.table_name == "sst_datatypes" }
8
+ assert SSTestCustomersView.columns.all? { |c| c.table_name == "customers" }
10
9
  end
11
10
 
12
- describe 'ActiveRecord::ConnectionAdapters::SQLServer::Type' do
13
-
11
+ describe "ActiveRecord::ConnectionAdapters::SQLServer::Type" do
14
12
  let(:obj) { SSTestDatatype.new }
15
13
 
16
14
  Type = ActiveRecord::ConnectionAdapters::SQLServer::Type
17
15
 
18
- def new_obj ; SSTestDatatype.new ; end
19
- def column(name) ; SSTestDatatype.columns_hash[name] ; end
16
+ def new_obj; SSTestDatatype.new; end
17
+
18
+ def column(name); SSTestDatatype.columns_hash[name]; end
19
+
20
20
  def assert_obj_set_and_save(attribute, value)
21
21
  obj.send :"#{attribute}=", value
22
22
  _(obj.send(attribute)).must_equal value
@@ -28,15 +28,15 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
28
28
 
29
29
  # Exact Numerics
30
30
 
31
- it 'int(4) PRIMARY KEY' do
32
- col = column('id')
33
- _(col.sql_type).must_equal 'int(4)'
31
+ it "int(4) PRIMARY KEY" do
32
+ col = column("id")
33
+ _(col.sql_type).must_equal "int(4)"
34
34
  _(col.null).must_equal false
35
35
  end
36
36
 
37
- it 'bigint(8)' do
38
- col = column('bigint')
39
- _(col.sql_type).must_equal 'bigint(8)'
37
+ it "bigint(8)" do
38
+ col = column("bigint")
39
+ _(col.sql_type).must_equal "bigint(8)"
40
40
  _(col.type).must_equal :integer
41
41
  _(col.null).must_equal true
42
42
  _(col.default).must_equal 42
@@ -49,9 +49,9 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
49
49
  assert_obj_set_and_save :bigint, 9_223_372_036_854_775_807
50
50
  end
51
51
 
52
- it 'int(4)' do
53
- col = column('int')
54
- _(col.sql_type).must_equal 'int(4)'
52
+ it "int(4)" do
53
+ col = column("int")
54
+ _(col.sql_type).must_equal "int(4)"
55
55
  _(col.type).must_equal :integer
56
56
  _(col.null).must_equal true
57
57
  _(col.default).must_equal 42
@@ -64,9 +64,9 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
64
64
  assert_obj_set_and_save :int, 2_147_483_647
65
65
  end
66
66
 
67
- it 'smallint(2)' do
68
- col = column('smallint')
69
- _(col.sql_type).must_equal 'smallint(2)'
67
+ it "smallint(2)" do
68
+ col = column("smallint")
69
+ _(col.sql_type).must_equal "smallint(2)"
70
70
  _(col.type).must_equal :integer
71
71
  _(col.null).must_equal true
72
72
  _(col.default).must_equal 42
@@ -79,9 +79,9 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
79
79
  assert_obj_set_and_save :smallint, 32_767
80
80
  end
81
81
 
82
- it 'tinyint(1)' do
83
- col = column('tinyint')
84
- _(col.sql_type).must_equal 'tinyint(1)'
82
+ it "tinyint(1)" do
83
+ col = column("tinyint")
84
+ _(col.sql_type).must_equal "tinyint(1)"
85
85
  _(col.type).must_equal :integer
86
86
  _(col.null).must_equal true
87
87
  _(col.default).must_equal 42
@@ -94,220 +94,220 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
94
94
  assert_obj_set_and_save :tinyint, 255
95
95
  end
96
96
 
97
- it 'bit' do
98
- col = column('bit')
99
- _(col.sql_type).must_equal 'bit'
97
+ it "bit" do
98
+ col = column("bit")
99
+ _(col.sql_type).must_equal "bit"
100
100
  _(col.type).must_equal :boolean
101
101
  _(col.null).must_equal true
102
102
  _(col.default).must_equal true
103
103
  _(obj.bit).must_equal true
104
104
  _(col.default_function).must_be_nil
105
105
  type = connection.lookup_cast_type_from_column(col)
106
- _(type).must_be_instance_of Type::Boolean
106
+ _(type).must_be_instance_of Type::Boolean
107
107
  _(type.limit).must_be_nil
108
108
  obj.bit = 0
109
109
  _(obj.bit).must_equal false
110
110
  obj.save!
111
111
  _(obj.reload.bit).must_equal false
112
- obj.bit = '1'
112
+ obj.bit = "1"
113
113
  _(obj.bit).must_equal true
114
114
  obj.save!
115
115
  _(obj.reload.bit).must_equal true
116
116
  end
117
117
 
118
- it 'decimal(9,2)' do
119
- col = column('decimal_9_2')
120
- _(col.sql_type).must_equal 'decimal(9,2)'
118
+ it "decimal(9,2)" do
119
+ col = column("decimal_9_2")
120
+ _(col.sql_type).must_equal "decimal(9,2)"
121
121
  _(col.type).must_equal :decimal
122
122
  _(col.null).must_equal true
123
- _(col.default).must_equal BigDecimal('12345.01')
124
- _(obj.decimal_9_2).must_equal BigDecimal('12345.01')
123
+ _(col.default).must_equal BigDecimal("12345.01")
124
+ _(obj.decimal_9_2).must_equal BigDecimal("12345.01")
125
125
  _(col.default_function).must_be_nil
126
126
  type = connection.lookup_cast_type_from_column(col)
127
- _(type).must_be_instance_of Type::Decimal
127
+ _(type).must_be_instance_of Type::Decimal
128
128
  _(type.limit).must_be_nil
129
129
  _(type.precision).must_equal 9
130
130
  _(type.scale).must_equal 2
131
- obj.decimal_9_2 = '1234567.8901'
132
- _(obj.decimal_9_2).must_equal BigDecimal('1234567.89')
131
+ obj.decimal_9_2 = "1234567.8901"
132
+ _(obj.decimal_9_2).must_equal BigDecimal("1234567.89")
133
133
  obj.save!
134
- _(obj.reload.decimal_9_2).must_equal BigDecimal('1234567.89')
134
+ _(obj.reload.decimal_9_2).must_equal BigDecimal("1234567.89")
135
135
  end
136
136
 
137
- it 'decimal(16,4)' do
138
- col = column('decimal_16_4')
139
- _(col.sql_type).must_equal 'decimal(16,4)'
140
- _(col.default).must_equal BigDecimal('1234567.89')
141
- _(obj.decimal_16_4).must_equal BigDecimal('1234567.89')
137
+ it "decimal(16,4)" do
138
+ col = column("decimal_16_4")
139
+ _(col.sql_type).must_equal "decimal(16,4)"
140
+ _(col.default).must_equal BigDecimal("1234567.89")
141
+ _(obj.decimal_16_4).must_equal BigDecimal("1234567.89")
142
142
  _(col.default_function).must_be_nil
143
143
  type = connection.lookup_cast_type_from_column(col)
144
144
  _(type.precision).must_equal 16
145
145
  _(type.scale).must_equal 4
146
- obj.decimal_16_4 = '1234567.8901001'
147
- _(obj.decimal_16_4).must_equal BigDecimal('1234567.8901')
146
+ obj.decimal_16_4 = "1234567.8901001"
147
+ _(obj.decimal_16_4).must_equal BigDecimal("1234567.8901")
148
148
  obj.save!
149
- _(obj.reload.decimal_16_4).must_equal BigDecimal('1234567.8901')
149
+ _(obj.reload.decimal_16_4).must_equal BigDecimal("1234567.8901")
150
150
  end
151
151
 
152
- it 'numeric(18,0)' do
153
- col = column('numeric_18_0')
154
- _(col.sql_type).must_equal 'numeric(18,0)'
152
+ it "numeric(18,0)" do
153
+ col = column("numeric_18_0")
154
+ _(col.sql_type).must_equal "numeric(18,0)"
155
155
  _(col.type).must_equal :decimal
156
156
  _(col.null).must_equal true
157
- _(col.default).must_equal BigDecimal('191')
158
- _(obj.numeric_18_0).must_equal BigDecimal('191')
157
+ _(col.default).must_equal BigDecimal("191")
158
+ _(obj.numeric_18_0).must_equal BigDecimal("191")
159
159
  _(col.default_function).must_be_nil
160
160
  type = connection.lookup_cast_type_from_column(col)
161
- _(type).must_be_instance_of Type::Decimal
161
+ _(type).must_be_instance_of Type::Decimal
162
162
  _(type.limit).must_be_nil
163
163
  _(type.precision).must_equal 18
164
164
  _(type.scale).must_equal 0
165
- obj.numeric_18_0 = '192.1'
166
- _(obj.numeric_18_0).must_equal BigDecimal('192')
165
+ obj.numeric_18_0 = "192.1"
166
+ _(obj.numeric_18_0).must_equal BigDecimal("192")
167
167
  obj.save!
168
- _(obj.reload.numeric_18_0).must_equal BigDecimal('192')
168
+ _(obj.reload.numeric_18_0).must_equal BigDecimal("192")
169
169
  end
170
170
 
171
- it 'numeric(36,2)' do
172
- col = column('numeric_36_2')
173
- _(col.sql_type).must_equal 'numeric(36,2)'
171
+ it "numeric(36,2)" do
172
+ col = column("numeric_36_2")
173
+ _(col.sql_type).must_equal "numeric(36,2)"
174
174
  _(col.type).must_equal :decimal
175
175
  _(col.null).must_equal true
176
- _(col.default).must_equal BigDecimal('12345678901234567890.01')
177
- _(obj.numeric_36_2).must_equal BigDecimal('12345678901234567890.01')
176
+ _(col.default).must_equal BigDecimal("12345678901234567890.01")
177
+ _(obj.numeric_36_2).must_equal BigDecimal("12345678901234567890.01")
178
178
  _(col.default_function).must_be_nil
179
179
  type = connection.lookup_cast_type_from_column(col)
180
- _(type).must_be_instance_of Type::Decimal
180
+ _(type).must_be_instance_of Type::Decimal
181
181
  _(type.limit).must_be_nil
182
182
  _(type.precision).must_equal 36
183
183
  _(type.scale).must_equal 2
184
- obj.numeric_36_2 = '192.123'
185
- _(obj.numeric_36_2).must_equal BigDecimal('192.12')
184
+ obj.numeric_36_2 = "192.123"
185
+ _(obj.numeric_36_2).must_equal BigDecimal("192.12")
186
186
  obj.save!
187
- _(obj.reload.numeric_36_2).must_equal BigDecimal('192.12')
187
+ _(obj.reload.numeric_36_2).must_equal BigDecimal("192.12")
188
188
  end
189
189
 
190
- it 'money' do
191
- col = column('money')
192
- _(col.sql_type).must_equal 'money'
190
+ it "money" do
191
+ col = column("money")
192
+ _(col.sql_type).must_equal "money"
193
193
  _(col.type).must_equal :money
194
194
  _(col.null).must_equal true
195
- _(col.default).must_equal BigDecimal('4.20')
196
- _(obj.money).must_equal BigDecimal('4.20')
195
+ _(col.default).must_equal BigDecimal("4.20")
196
+ _(obj.money).must_equal BigDecimal("4.20")
197
197
  _(col.default_function).must_be_nil
198
198
  type = connection.lookup_cast_type_from_column(col)
199
- _(type).must_be_instance_of Type::Money
199
+ _(type).must_be_instance_of Type::Money
200
200
  _(type.limit).must_be_nil
201
201
  _(type.precision).must_equal 19
202
202
  _(type.scale).must_equal 4
203
- obj.money = '922337203685477.58061'
204
- _(obj.money).must_equal BigDecimal('922337203685477.5806')
203
+ obj.money = "922337203685477.58061"
204
+ _(obj.money).must_equal BigDecimal("922337203685477.5806")
205
205
  obj.save!
206
- _(obj.reload.money).must_equal BigDecimal('922337203685477.5806')
206
+ _(obj.reload.money).must_equal BigDecimal("922337203685477.5806")
207
207
  end
208
208
 
209
- it 'smallmoney' do
210
- col = column('smallmoney')
211
- _(col.sql_type).must_equal 'smallmoney'
209
+ it "smallmoney" do
210
+ col = column("smallmoney")
211
+ _(col.sql_type).must_equal "smallmoney"
212
212
  _(col.type).must_equal :smallmoney
213
213
  _(col.null).must_equal true
214
- _(col.default).must_equal BigDecimal('4.20')
215
- _(obj.smallmoney).must_equal BigDecimal('4.20')
214
+ _(col.default).must_equal BigDecimal("4.20")
215
+ _(obj.smallmoney).must_equal BigDecimal("4.20")
216
216
  _(col.default_function).must_be_nil
217
217
  type = connection.lookup_cast_type_from_column(col)
218
- _(type).must_be_instance_of Type::SmallMoney
218
+ _(type).must_be_instance_of Type::SmallMoney
219
219
  _(type.limit).must_be_nil
220
220
  _(type.precision).must_equal 10
221
221
  _(type.scale).must_equal 4
222
- obj.smallmoney = '214748.36461'
223
- _(obj.smallmoney).must_equal BigDecimal('214748.3646')
222
+ obj.smallmoney = "214748.36461"
223
+ _(obj.smallmoney).must_equal BigDecimal("214748.3646")
224
224
  obj.save!
225
- _(obj.reload.smallmoney).must_equal BigDecimal('214748.3646')
225
+ _(obj.reload.smallmoney).must_equal BigDecimal("214748.3646")
226
226
  end
227
227
 
228
228
  # Approximate Numerics
229
229
  # Float limits are adjusted to 24 or 53 by the database as per http://msdn.microsoft.com/en-us/library/ms173773.aspx
230
230
  # Floats with a limit of <= 24 are reduced to reals by sqlserver on creation.
231
231
 
232
- it 'float' do
233
- col = column('float')
234
- _(col.sql_type).must_equal 'float'
232
+ it "float" do
233
+ col = column("float")
234
+ _(col.sql_type).must_equal "float"
235
235
  _(col.type).must_equal :float
236
236
  _(col.null).must_equal true
237
237
  _(col.default).must_equal 123.00000001
238
238
  _(obj.float).must_equal 123.00000001
239
239
  _(col.default_function).must_be_nil
240
240
  type = connection.lookup_cast_type_from_column(col)
241
- _(type).must_be_instance_of Type::Float
241
+ _(type).must_be_instance_of Type::Float
242
242
  _(type.limit).must_be_nil
243
243
  _(type.precision).must_be_nil
244
244
  _(type.scale).must_be_nil
245
- obj.float = '214748.36461'
246
- _(obj.float).must_equal 214748.36461
245
+ obj.float = "214748.36461"
246
+ _(obj.float).must_equal 214748.36461
247
247
  obj.save!
248
248
  _(obj.reload.float).must_equal 214748.36461
249
249
  end
250
250
 
251
- it 'real' do
252
- col = column('real')
253
- _(col.sql_type).must_equal 'real'
251
+ it "real" do
252
+ col = column("real")
253
+ _(col.sql_type).must_equal "real"
254
254
  _(col.type).must_equal :real
255
255
  _(col.null).must_equal true
256
256
  _(col.default).must_be_close_to 123.45, 0.01
257
257
  _(obj.real).must_be_close_to 123.45, 0.01
258
258
  _(col.default_function).must_be_nil
259
259
  type = connection.lookup_cast_type_from_column(col)
260
- _(type).must_be_instance_of Type::Real
260
+ _(type).must_be_instance_of Type::Real
261
261
  _(type.limit).must_be_nil
262
262
  _(type.precision).must_be_nil
263
263
  _(type.scale).must_be_nil
264
- obj.real = '214748.36461'
265
- _(obj.real).must_be_close_to 214748.36461, 0.01
264
+ obj.real = "214748.36461"
265
+ _(obj.real).must_be_close_to 214748.36461, 0.01
266
266
  obj.save!
267
- _(obj.reload.real).must_be_close_to 214748.36461, 0.01
267
+ _(obj.reload.real).must_be_close_to 214748.36461, 0.01
268
268
  end
269
269
 
270
270
  # Date and Time
271
271
 
272
- it 'date' do
273
- col = column('date')
274
- _(col.sql_type).must_equal 'date'
272
+ it "date" do
273
+ col = column("date")
274
+ _(col.sql_type).must_equal "date"
275
275
  _(col.type).must_equal :date
276
276
  _(col.null).must_equal true
277
- _(col.default).must_equal connection_dblib_73? ? Date.civil(0001, 1, 1) : '0001-01-01'
277
+ _(col.default).must_equal connection_dblib_73? ? Date.civil(0001, 1, 1) : "0001-01-01"
278
278
  _(obj.date).must_equal Date.civil(0001, 1, 1)
279
279
  _(col.default_function).must_be_nil
280
280
  type = connection.lookup_cast_type_from_column(col)
281
- _(type).must_be_instance_of Type::Date
281
+ _(type).must_be_instance_of Type::Date
282
282
  _(type.limit).must_be_nil
283
283
  _(type.precision).must_be_nil
284
284
  _(type.scale).must_be_nil
285
285
  # Can cast strings. SQL Server format.
286
- obj.date = '04-01-0001'
287
- _(obj.date).must_equal Date.civil(0001, 4, 1)
286
+ obj.date = "04-01-0001"
287
+ _(obj.date).must_equal Date.civil(0001, 4, 1)
288
288
  obj.save!
289
- _(obj.date).must_equal Date.civil(0001, 4, 1)
289
+ _(obj.date).must_equal Date.civil(0001, 4, 1)
290
290
  obj.reload
291
- _(obj.date).must_equal Date.civil(0001, 4, 1)
291
+ _(obj.date).must_equal Date.civil(0001, 4, 1)
292
292
  # Can cast strings. ISO format.
293
- obj.date = '0001-04-01'
294
- _(obj.date).must_equal Date.civil(0001, 4, 1)
293
+ obj.date = "0001-04-01"
294
+ _(obj.date).must_equal Date.civil(0001, 4, 1)
295
295
  obj.save!
296
- _(obj.date).must_equal Date.civil(0001, 4, 1)
296
+ _(obj.date).must_equal Date.civil(0001, 4, 1)
297
297
  obj.reload
298
- _(obj.date).must_equal Date.civil(0001, 4, 1)
298
+ _(obj.date).must_equal Date.civil(0001, 4, 1)
299
299
  # Can keep and return assigned date.
300
300
  assert_obj_set_and_save :date, Date.civil(1972, 04, 14)
301
301
  # Can accept and cast time objects.
302
302
  obj.date = Time.utc(2010, 4, 14, 12, 34, 56, 3000)
303
303
  _(obj.date).must_equal Date.civil(2010, 4, 14)
304
304
  obj.save!
305
- _(obj.reload.date).must_equal Date.civil(2010, 4, 14)
305
+ _(obj.reload.date).must_equal Date.civil(2010, 4, 14)
306
306
  end
307
307
 
308
- it 'datetime' do
309
- col = column('datetime')
310
- _(col.sql_type).must_equal 'datetime'
308
+ it "datetime" do
309
+ col = column("datetime")
310
+ _(col.sql_type).must_equal "datetime"
311
311
  _(col.type).must_equal :datetime
312
312
  _(col.null).must_equal true
313
313
  time = Time.utc 1753, 01, 01, 00, 00, 00, 123000
@@ -315,7 +315,7 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
315
315
  _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <123000>"
316
316
  _(col.default_function).must_be_nil
317
317
  type = connection.lookup_cast_type_from_column(col)
318
- _(type).must_be_instance_of Type::DateTime
318
+ _(type).must_be_instance_of Type::DateTime
319
319
  _(type.limit).must_be_nil
320
320
  _(type.precision).must_be_nil
321
321
  _(type.scale).must_be_nil
@@ -324,21 +324,21 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
324
324
  # Can save to proper accuracy and return again.
325
325
  time = Time.utc 2010, 04, 01, 12, 34, 56, 3000
326
326
  obj.datetime = time
327
- _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <3000>"
327
+ _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <3000>"
328
328
  obj.save!
329
- _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <3000>"
329
+ _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <3000>"
330
330
  obj.reload
331
- _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <3000>"
331
+ _(obj.datetime).must_equal time, "Microseconds were <#{obj.datetime.usec}> vs <3000>"
332
332
  _(obj).must_equal obj.class.where(datetime: time).first
333
333
  # Will cast to true DB value on attribute write, save and return again.
334
- time = Time.utc 2010, 04, 01, 12, 34, 56, 234567
334
+ time = Time.utc 2010, 04, 01, 12, 34, 56, 234567
335
335
  time2 = Time.utc 2010, 04, 01, 12, 34, 56, 233000
336
336
  obj.datetime = time
337
- _(obj.datetime).must_equal time2, "Microseconds were <#{obj.datetime.usec}> vs <233000>"
337
+ _(obj.datetime).must_equal time2, "Microseconds were <#{obj.datetime.usec}> vs <233000>"
338
338
  obj.save!
339
- _(obj.datetime).must_equal time2, "Microseconds were <#{obj.datetime.usec}> vs <233000>"
339
+ _(obj.datetime).must_equal time2, "Microseconds were <#{obj.datetime.usec}> vs <233000>"
340
340
  obj.reload
341
- _(obj.datetime).must_equal time2, "Microseconds were <#{obj.datetime.usec}> vs <233000>"
341
+ _(obj.datetime).must_equal time2, "Microseconds were <#{obj.datetime.usec}> vs <233000>"
342
342
  _(obj).must_equal obj.class.where(datetime: time).first
343
343
  _(obj).must_equal obj.class.where(datetime: time2).first
344
344
  # Set and find nil.
@@ -349,10 +349,10 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
349
349
  _(obj).must_equal obj.class.where(datetime: nil).first
350
350
  end
351
351
 
352
- it 'datetime2' do
353
- skip 'datetime2 not supported in this protocol version' unless connection_dblib_73?
354
- col = column('datetime2_7')
355
- _(col.sql_type).must_equal 'datetime2(7)'
352
+ it "datetime2" do
353
+ skip "datetime2 not supported in this protocol version" unless connection_dblib_73?
354
+ col = column("datetime2_7")
355
+ _(col.sql_type).must_equal "datetime2(7)"
356
356
  _(col.type).must_equal :datetime
357
357
  _(col.null).must_equal true
358
358
  time = Time.utc 9999, 12, 31, 23, 59, 59, Rational(999999900, 1000)
@@ -360,97 +360,97 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
360
360
  _(obj.datetime2_7).must_equal time, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <999999900>"
361
361
  _(col.default_function).must_be_nil
362
362
  type = connection.lookup_cast_type_from_column(col)
363
- _(type).must_be_instance_of Type::DateTime2
363
+ _(type).must_be_instance_of Type::DateTime2
364
364
  _(type.limit).must_be_nil
365
- _(type.precision).must_equal 7
365
+ _(type.precision).must_equal 7
366
366
  _(type.scale).must_be_nil
367
367
  obj.save!
368
368
  _(obj).must_equal obj.class.where(datetime2_7: time).first
369
369
  # Can save 100 nanosecond precisoins and return again.
370
- time = Time.utc 9999, 12, 31, 23, 59, 59, Rational(123456755, 1000)
370
+ time = Time.utc 9999, 12, 31, 23, 59, 59, Rational(123456755, 1000)
371
371
  time2 = Time.utc 9999, 12, 31, 23, 59, 59, Rational(123456800, 1000)
372
372
  obj.datetime2_7 = time
373
- _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <123456800>"
373
+ _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <123456800>"
374
374
  obj.save!
375
- _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <123456800>"
375
+ _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <123456800>"
376
376
  obj.reload
377
- _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <123456800>"
377
+ _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <123456800>"
378
378
  _(obj).must_equal obj.class.where(datetime2_7: time).first
379
379
  _(obj).must_equal obj.class.where(datetime2_7: time2).first
380
380
  # Can save small fraction nanosecond precisoins and return again.
381
- time = Time.utc 2008, 6, 21, 13, 30, 0, Rational(15020, 1000)
381
+ time = Time.utc 2008, 6, 21, 13, 30, 0, Rational(15020, 1000)
382
382
  time2 = Time.utc 2008, 6, 21, 13, 30, 0, Rational(15000, 1000)
383
383
  obj.datetime2_7 = time
384
- _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <15000>"
384
+ _(obj.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <15000>"
385
385
  obj.save!
386
- _(obj.reload.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <15000>"
386
+ _(obj.reload.datetime2_7).must_equal time2, "Nanoseconds were <#{obj.datetime2_7.nsec}> vs <15000>"
387
387
  _(obj).must_equal obj.class.where(datetime2_7: time).first
388
388
  _(obj).must_equal obj.class.where(datetime2_7: time2).first
389
389
  # datetime2_3
390
390
  time = Time.utc 9999, 12, 31, 23, 59, 59, Rational(123456789, 1000)
391
- col = column('datetime2_3')
391
+ col = column("datetime2_3")
392
392
  _(connection.lookup_cast_type_from_column(col).precision).must_equal 3
393
393
  obj.datetime2_3 = time
394
394
  _(obj.datetime2_3).must_equal time.change(nsec: 123000000), "Nanoseconds were <#{obj.datetime2_3.nsec}> vs <123000000>"
395
- obj.save! ; obj.reload
395
+ obj.save!; obj.reload
396
396
  _(obj.datetime2_3).must_equal time.change(nsec: 123000000), "Nanoseconds were <#{obj.datetime2_3.nsec}> vs <123000000>"
397
397
  _(obj).must_equal obj.class.where(datetime2_3: time).first
398
398
  # datetime2_1
399
- col = column('datetime2_1')
399
+ col = column("datetime2_1")
400
400
  _(connection.lookup_cast_type_from_column(col).precision).must_equal 1
401
401
  obj.datetime2_1 = time
402
402
  _(obj.datetime2_1).must_equal time.change(nsec: 100000000), "Nanoseconds were <#{obj.datetime2_1.nsec}> vs <100000000>"
403
- obj.save! ; obj.reload
403
+ obj.save!; obj.reload
404
404
  _(obj.datetime2_1).must_equal time.change(nsec: 100000000), "Nanoseconds were <#{obj.datetime2_1.nsec}> vs <100000000>"
405
405
  _(obj).must_equal obj.class.where(datetime2_1: time).first
406
406
  # datetime2_0
407
- col = column('datetime2_0')
407
+ col = column("datetime2_0")
408
408
  _(connection.lookup_cast_type_from_column(col).precision).must_equal 0
409
409
  time = Time.utc 2016, 4, 19, 16, 45, 40, 771036
410
410
  obj.datetime2_0 = time
411
411
  _(obj.datetime2_0).must_equal time.change(nsec: 0), "Nanoseconds were <#{obj.datetime2_0.nsec}> vs <0>"
412
- obj.save! ; obj.reload
412
+ obj.save!; obj.reload
413
413
  _(obj.datetime2_0).must_equal time.change(nsec: 0), "Nanoseconds were <#{obj.datetime2_0.nsec}> vs <0>"
414
414
  _(obj).must_equal obj.class.where(datetime2_0: time).first
415
415
  end
416
416
 
417
- it 'datetimeoffset' do
418
- skip 'datetimeoffset not supported in this protocol version' unless connection_dblib_73?
419
- col = column('datetimeoffset_7')
420
- _(col.sql_type).must_equal 'datetimeoffset(7)'
417
+ it "datetimeoffset" do
418
+ skip "datetimeoffset not supported in this protocol version" unless connection_dblib_73?
419
+ col = column("datetimeoffset_7")
420
+ _(col.sql_type).must_equal "datetimeoffset(7)"
421
421
  _(col.type).must_equal :datetimeoffset
422
422
  _(col.null).must_equal true
423
423
  _(col.default).must_equal Time.new(1984, 01, 24, 04, 20, 00, -28800).change(nsec: 123456700), "Nanoseconds <#{col.default.nsec}> vs <123456700>"
424
424
  _(obj.datetimeoffset_7).must_equal Time.new(1984, 01, 24, 04, 20, 00, -28800).change(nsec: 123456700), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <999999900>"
425
425
  _(col.default_function).must_be_nil
426
426
  type = connection.lookup_cast_type_from_column(col)
427
- _(type).must_be_instance_of Type::DateTimeOffset
427
+ _(type).must_be_instance_of Type::DateTimeOffset
428
428
  _(type.limit).must_be_nil
429
- _(type.precision).must_equal 7
429
+ _(type.precision).must_equal 7
430
430
  _(type.scale).must_be_nil
431
431
  # Can save 100 nanosecond precisoins and return again.
432
432
  obj.datetimeoffset_7 = Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456755)
433
- _(obj.datetimeoffset_7).must_equal Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456800), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <123456800>"
433
+ _(obj.datetimeoffset_7).must_equal Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456800), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <123456800>"
434
434
  obj.save!
435
- _(obj.datetimeoffset_7).must_equal Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456800), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <123456800>"
435
+ _(obj.datetimeoffset_7).must_equal Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456800), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <123456800>"
436
436
  obj.reload
437
- _(obj.datetimeoffset_7).must_equal Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456800), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <123456800>"
437
+ _(obj.datetimeoffset_7).must_equal Time.new(2010, 04, 01, 12, 34, 56, +18000).change(nsec: 123456800), "Nanoseconds were <#{obj.datetimeoffset_7.nsec}> vs <123456800>"
438
438
  # Maintains the timezone
439
- time = ActiveSupport::TimeZone['America/Los_Angeles'].local 2010, 12, 31, 23, 59, 59, Rational(123456800, 1000)
439
+ time = ActiveSupport::TimeZone["America/Los_Angeles"].local 2010, 12, 31, 23, 59, 59, Rational(123456800, 1000)
440
440
  obj.datetimeoffset_7 = time
441
441
  _(obj.datetimeoffset_7).must_equal time
442
442
  obj.save!
443
443
  _(obj.datetimeoffset_7).must_equal time
444
444
  _(obj.reload.datetimeoffset_7).must_equal time
445
445
  # With other precisions.
446
- time = ActiveSupport::TimeZone['America/Los_Angeles'].local 2010, 12, 31, 23, 59, 59, Rational(123456755, 1000)
447
- col = column('datetimeoffset_3')
446
+ time = ActiveSupport::TimeZone["America/Los_Angeles"].local 2010, 12, 31, 23, 59, 59, Rational(123456755, 1000)
447
+ col = column("datetimeoffset_3")
448
448
  _(connection.lookup_cast_type_from_column(col).precision).must_equal 3
449
449
  obj.datetimeoffset_3 = time
450
450
  _(obj.datetimeoffset_3).must_equal time.change(nsec: 123000000), "Nanoseconds were <#{obj.datetimeoffset_3.nsec}> vs <123000000>"
451
451
  obj.save!
452
452
  _(obj.datetimeoffset_3).must_equal time.change(nsec: 123000000), "Nanoseconds were <#{obj.datetimeoffset_3.nsec}> vs <123000000>"
453
- col = column('datetime2_1')
453
+ col = column("datetime2_1")
454
454
  _(connection.lookup_cast_type_from_column(col).precision).must_equal 1
455
455
  obj.datetime2_1 = time
456
456
  _(obj.datetime2_1).must_equal time.change(nsec: 100000000), "Nanoseconds were <#{obj.datetime2_1.nsec}> vs <100000000>"
@@ -458,131 +458,131 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
458
458
  _(obj.datetime2_1).must_equal time.change(nsec: 100000000), "Nanoseconds were <#{obj.datetime2_1.nsec}> vs <100000000>"
459
459
  end
460
460
 
461
- it 'smalldatetime' do
462
- col = column('smalldatetime')
463
- _(col.sql_type).must_equal 'smalldatetime'
461
+ it "smalldatetime" do
462
+ col = column("smalldatetime")
463
+ _(col.sql_type).must_equal "smalldatetime"
464
464
  _(col.type).must_equal :smalldatetime
465
465
  _(col.null).must_equal true
466
466
  _(col.default).must_equal Time.utc(1901, 01, 01, 15, 45, 00, 000)
467
467
  _(obj.smalldatetime).must_equal Time.utc(1901, 01, 01, 15, 45, 00, 000)
468
468
  _(col.default_function).must_be_nil
469
469
  type = connection.lookup_cast_type_from_column(col)
470
- _(type).must_be_instance_of Type::SmallDateTime
470
+ _(type).must_be_instance_of Type::SmallDateTime
471
471
  _(type.limit).must_be_nil
472
472
  _(type.precision).must_be_nil
473
473
  _(type.scale).must_be_nil
474
474
  # Will remove fractional seconds and return again.
475
475
  obj.smalldatetime = Time.utc(2078, 06, 05, 4, 20, 00, 3000)
476
- _(obj.smalldatetime).must_equal Time.utc(2078, 06, 05, 4, 20, 00, 0), "Microseconds were <#{obj.smalldatetime.usec}> vs <0>"
476
+ _(obj.smalldatetime).must_equal Time.utc(2078, 06, 05, 4, 20, 00, 0), "Microseconds were <#{obj.smalldatetime.usec}> vs <0>"
477
477
  obj.save!
478
- _(obj.smalldatetime).must_equal Time.utc(2078, 06, 05, 4, 20, 00, 0), "Microseconds were <#{obj.reload.smalldatetime.usec}> vs <0>"
478
+ _(obj.smalldatetime).must_equal Time.utc(2078, 06, 05, 4, 20, 00, 0), "Microseconds were <#{obj.reload.smalldatetime.usec}> vs <0>"
479
479
  obj.reload
480
- _(obj.smalldatetime).must_equal Time.utc(2078, 06, 05, 4, 20, 00, 0), "Microseconds were <#{obj.reload.smalldatetime.usec}> vs <0>"
480
+ _(obj.smalldatetime).must_equal Time.utc(2078, 06, 05, 4, 20, 00, 0), "Microseconds were <#{obj.reload.smalldatetime.usec}> vs <0>"
481
481
  end
482
482
 
483
- it 'time(7)' do
484
- skip 'time() not supported in this protocol version' unless connection_dblib_73?
485
- col = column('time_7')
486
- _(col.sql_type).must_equal 'time(7)'
483
+ it "time(7)" do
484
+ skip "time() not supported in this protocol version" unless connection_dblib_73?
485
+ col = column("time_7")
486
+ _(col.sql_type).must_equal "time(7)"
487
487
  _(col.type).must_equal :time
488
488
  _(col.null).must_equal true
489
489
  _(col.default).must_equal Time.utc(1900, 01, 01, 04, 20, 00, Rational(288321500, 1000)), "Nanoseconds were <#{col.default.nsec}> vs <288321500>"
490
490
  _(col.default_function).must_be_nil
491
491
  type = connection.lookup_cast_type_from_column(col)
492
- _(type).must_be_instance_of Type::Time
492
+ _(type).must_be_instance_of Type::Time
493
493
  _(type.limit).must_be_nil
494
- _(type.precision).must_equal 7
494
+ _(type.precision).must_equal 7
495
495
  _(type.scale).must_be_nil
496
496
  # Time's #usec precision (low micro)
497
497
  obj.time_7 = Time.utc(2000, 01, 01, 15, 45, 00, 300)
498
498
  _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Microseconds were <#{obj.time_7.usec}> vs <0>"
499
499
  _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Nanoseconds were <#{obj.time_7.nsec}> vs <300>"
500
- obj.save! ; obj.reload
500
+ obj.save!; obj.reload
501
501
  _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Microseconds were <#{obj.time_7.usec}> vs <0>"
502
502
  _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Nanoseconds were <#{obj.time_7.nsec}> vs <300>"
503
503
  # Time's #usec precision (high micro)
504
504
  obj.time_7 = Time.utc(2000, 01, 01, 15, 45, 00, 234567)
505
- _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_7.usec}> vs <234567>"
506
- obj.save! ; obj.reload
507
- _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_7.usec}> vs <234567>"
505
+ _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_7.usec}> vs <234567>"
506
+ obj.save!; obj.reload
507
+ _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_7.usec}> vs <234567>"
508
508
  # Time's #usec precision (high nano rounded)
509
509
  obj.time_7 = Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321545, 1000))
510
- _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_7.nsec}> vs <288321500>"
511
- obj.save! ; obj.reload
512
- _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_7.nsec}> vs <288321500>"
510
+ _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_7.nsec}> vs <288321500>"
511
+ obj.save!; obj.reload
512
+ _(obj.time_7).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_7.nsec}> vs <288321500>"
513
513
  end
514
514
 
515
- it 'time(2)' do
516
- skip 'time() not supported in this protocol version' unless connection_dblib_73?
517
- col = column('time_2')
518
- _(col.sql_type).must_equal 'time(2)'
515
+ it "time(2)" do
516
+ skip "time() not supported in this protocol version" unless connection_dblib_73?
517
+ col = column("time_2")
518
+ _(col.sql_type).must_equal "time(2)"
519
519
  _(col.type).must_equal :time
520
520
  _(col.null).must_equal true
521
521
  _(col.default).must_be_nil
522
522
  _(col.default_function).must_be_nil
523
523
  type = connection.lookup_cast_type_from_column(col)
524
- _(type).must_be_instance_of Type::Time
524
+ _(type).must_be_instance_of Type::Time
525
525
  _(type.limit).must_be_nil
526
- _(type.precision).must_equal 2
526
+ _(type.precision).must_equal 2
527
527
  _(type.scale).must_be_nil
528
528
  # Always uses TinyTDS/Windows 2000-01-01 convention too.
529
529
  obj.time_2 = Time.utc(2015, 01, 10, 15, 45, 00, 0)
530
- _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0)
531
- obj.save! ; obj.reload
532
- _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0)
530
+ _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0)
531
+ obj.save!; obj.reload
532
+ _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0)
533
533
  # Time's #usec precision (barely in 2 precision equal to 0.03 seconds)
534
534
  obj.time_2 = Time.utc(2000, 01, 01, 15, 45, 00, 30000)
535
- _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 30000), "Microseconds were <#{obj.time_2.usec}> vs <30000>"
536
- obj.save! ; obj.reload
537
- _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 30000), "Microseconds were <#{obj.time_2.usec}> vs <30000>"
535
+ _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 30000), "Microseconds were <#{obj.time_2.usec}> vs <30000>"
536
+ obj.save!; obj.reload
537
+ _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 30000), "Microseconds were <#{obj.time_2.usec}> vs <30000>"
538
538
  # Time's #usec precision (below 2 precision)
539
539
  obj.time_2 = Time.utc(2000, 01, 01, 15, 45, 00, 4000)
540
- _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0), "Microseconds were <#{obj.time_2.usec}> vs <0>"
541
- obj.save! ; obj.reload
542
- _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0), "Microseconds were <#{obj.time_2.usec}> vs <0>"
540
+ _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0), "Microseconds were <#{obj.time_2.usec}> vs <0>"
541
+ obj.save!; obj.reload
542
+ _(obj.time_2).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 0), "Microseconds were <#{obj.time_2.usec}> vs <0>"
543
543
  end
544
544
 
545
- it 'time using default precision' do
546
- skip 'time() not supported in this protocol version' unless connection_dblib_73?
547
- col = column('time_default')
548
- _(col.sql_type).must_equal 'time(7)'
545
+ it "time using default precision" do
546
+ skip "time() not supported in this protocol version" unless connection_dblib_73?
547
+ col = column("time_default")
548
+ _(col.sql_type).must_equal "time(7)"
549
549
  _(col.type).must_equal :time
550
550
  _(col.null).must_equal true
551
551
  _(col.default).must_equal Time.utc(1900, 01, 01, 15, 03, 42, Rational(62197800, 1000)), "Nanoseconds were <#{col.default.nsec}> vs <62197800>"
552
552
  _(col.default_function).must_be_nil
553
553
  type = connection.lookup_cast_type_from_column(col)
554
- _(type).must_be_instance_of Type::Time
554
+ _(type).must_be_instance_of Type::Time
555
555
  _(type.limit).must_be_nil
556
- _(type.precision).must_equal 7
556
+ _(type.precision).must_equal 7
557
557
  _(type.scale).must_be_nil
558
558
  # Time's #usec precision (low micro)
559
559
  obj.time_default = Time.utc(2000, 01, 01, 15, 45, 00, 300)
560
560
  _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Microseconds were <#{obj.time_default.usec}> vs <0>"
561
561
  _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Nanoseconds were <#{obj.time_default.nsec}> vs <300>"
562
- obj.save! ; obj.reload
562
+ obj.save!; obj.reload
563
563
  _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Microseconds were <#{obj.time_default.usec}> vs <0>"
564
564
  _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 300), "Nanoseconds were <#{obj.time_default.nsec}> vs <300>"
565
565
  # Time's #usec precision (high micro)
566
566
  obj.time_default = Time.utc(2000, 01, 01, 15, 45, 00, 234567)
567
- _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_default.usec}> vs <234567>"
568
- obj.save! ; obj.reload
569
- _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_default.usec}> vs <234567>"
567
+ _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_default.usec}> vs <234567>"
568
+ obj.save!; obj.reload
569
+ _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, 234567), "Microseconds were <#{obj.time_default.usec}> vs <234567>"
570
570
  # Time's #usec precision (high nano rounded)
571
571
  obj.time_default = Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321545, 1000))
572
- _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_default.nsec}> vs <288321500>"
573
- obj.save! ; obj.reload
574
- _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_default.nsec}> vs <288321500>"
572
+ _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_default.nsec}> vs <288321500>"
573
+ obj.save!; obj.reload
574
+ _(obj.time_default).must_equal Time.utc(2000, 01, 01, 15, 45, 00, Rational(288321500, 1000)), "Nanoseconds were <#{obj.time_default.nsec}> vs <288321500>"
575
575
  end
576
576
 
577
577
  # Character Strings
578
578
 
579
- it 'char(10)' do
580
- col = column('char_10')
581
- _(col.sql_type).must_equal 'char(10)'
579
+ it "char(10)" do
580
+ col = column("char_10")
581
+ _(col.sql_type).must_equal "char(10)"
582
582
  _(col.type).must_equal :char
583
583
  _(col.null).must_equal true
584
- _(col.default).must_equal '1234567890'
585
- _(obj.char_10).must_equal '1234567890'
584
+ _(col.default).must_equal "1234567890"
585
+ _(obj.char_10).must_equal "1234567890"
586
586
  _(col.default_function).must_be_nil
587
587
  type = connection.lookup_cast_type_from_column(col)
588
588
  _(type).must_be_instance_of Type::Char
@@ -590,19 +590,19 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
590
590
  _(type.precision).must_be_nil
591
591
  _(type.scale).must_be_nil
592
592
  # Basic set and save.
593
- obj.char_10 = '012345'
594
- _(obj.char_10.strip).must_equal '012345'
593
+ obj.char_10 = "012345"
594
+ _(obj.char_10.strip).must_equal "012345"
595
595
  obj.save!
596
- _(obj.reload.char_10.strip).must_equal '012345'
596
+ _(obj.reload.char_10.strip).must_equal "012345"
597
597
  end
598
598
 
599
- it 'varchar(50)' do
600
- col = column('varchar_50')
601
- _(col.sql_type).must_equal 'varchar(50)'
599
+ it "varchar(50)" do
600
+ col = column("varchar_50")
601
+ _(col.sql_type).must_equal "varchar(50)"
602
602
  _(col.type).must_equal :varchar
603
603
  _(col.null).must_equal true
604
- _(col.default).must_equal 'test varchar_50'
605
- _(obj.varchar_50).must_equal 'test varchar_50'
604
+ _(col.default).must_equal "test varchar_50"
605
+ _(obj.varchar_50).must_equal "test varchar_50"
606
606
  _(col.default_function).must_be_nil
607
607
  type = connection.lookup_cast_type_from_column(col)
608
608
  _(type).must_be_instance_of Type::Varchar
@@ -610,16 +610,16 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
610
610
  _(type.precision).must_be_nil
611
611
  _(type.scale).must_be_nil
612
612
  # Basic set and save.
613
- assert_obj_set_and_save :varchar_50, 'Hello World'
613
+ assert_obj_set_and_save :varchar_50, "Hello World"
614
614
  end
615
615
 
616
- it 'varchar(max)' do
617
- col = column('varchar_max')
618
- _(col.sql_type).must_equal 'varchar(max)'
616
+ it "varchar(max)" do
617
+ col = column("varchar_max")
618
+ _(col.sql_type).must_equal "varchar(max)"
619
619
  _(col.type).must_equal :varchar_max
620
620
  _(col.null).must_equal true
621
- _(col.default).must_equal 'test varchar_max'
622
- _(obj.varchar_max).must_equal 'test varchar_max'
621
+ _(col.default).must_equal "test varchar_max"
622
+ _(obj.varchar_max).must_equal "test varchar_max"
623
623
  _(col.default_function).must_be_nil
624
624
  type = connection.lookup_cast_type_from_column(col)
625
625
  _(type).must_be_instance_of Type::VarcharMax
@@ -627,16 +627,16 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
627
627
  _(type.precision).must_be_nil
628
628
  _(type.scale).must_be_nil
629
629
  # Basic set and save.
630
- assert_obj_set_and_save :varchar_max, 'Hello World'
630
+ assert_obj_set_and_save :varchar_max, "Hello World"
631
631
  end
632
632
 
633
- it 'text' do
634
- col = column('text')
635
- _(col.sql_type).must_equal 'text'
633
+ it "text" do
634
+ col = column("text")
635
+ _(col.sql_type).must_equal "text"
636
636
  _(col.type).must_equal :text_basic
637
637
  _(col.null).must_equal true
638
- _(col.default).must_equal 'test text'
639
- _(obj.text).must_equal 'test text'
638
+ _(col.default).must_equal "test text"
639
+ _(obj.text).must_equal "test text"
640
640
  _(col.default_function).must_be_nil
641
641
  type = connection.lookup_cast_type_from_column(col)
642
642
  _(type).must_be_instance_of Type::Text
@@ -644,18 +644,18 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
644
644
  _(type.precision).must_be_nil
645
645
  _(type.scale).must_be_nil
646
646
  # Basic set and save.
647
- assert_obj_set_and_save :text, 'Hello World'
647
+ assert_obj_set_and_save :text, "Hello World"
648
648
  end
649
649
 
650
650
  # Unicode Character Strings
651
651
 
652
- it 'nchar(10)' do
653
- col = column('nchar_10')
654
- _(col.sql_type).must_equal 'nchar(10)'
652
+ it "nchar(10)" do
653
+ col = column("nchar_10")
654
+ _(col.sql_type).must_equal "nchar(10)"
655
655
  _(col.type).must_equal :nchar
656
656
  _(col.null).must_equal true
657
- _(col.default).must_equal '12345678åå'
658
- _(obj.nchar_10).must_equal '12345678åå'
657
+ _(col.default).must_equal "12345678åå"
658
+ _(obj.nchar_10).must_equal "12345678åå"
659
659
  _(col.default_function).must_be_nil
660
660
  type = connection.lookup_cast_type_from_column(col)
661
661
  _(type).must_be_instance_of Type::UnicodeChar
@@ -664,18 +664,18 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
664
664
  _(type.scale).must_be_nil
665
665
  # Basic set and save.
666
666
  obj.nchar_10 = "五六"
667
- _(obj.nchar_10.strip).must_equal "五六"
667
+ _(obj.nchar_10.strip).must_equal "五六"
668
668
  obj.save!
669
- _(obj.reload.nchar_10.strip).must_equal "五六"
669
+ _(obj.reload.nchar_10.strip).must_equal "五六"
670
670
  end
671
671
 
672
- it 'nvarchar(50)' do
673
- col = column('nvarchar_50')
674
- _(col.sql_type).must_equal 'nvarchar(50)'
672
+ it "nvarchar(50)" do
673
+ col = column("nvarchar_50")
674
+ _(col.sql_type).must_equal "nvarchar(50)"
675
675
  _(col.type).must_equal :string
676
676
  _(col.null).must_equal true
677
- _(col.default).must_equal 'test nvarchar_50 åå'
678
- _(obj.nvarchar_50).must_equal 'test nvarchar_50 åå'
677
+ _(col.default).must_equal "test nvarchar_50 åå"
678
+ _(obj.nvarchar_50).must_equal "test nvarchar_50 åå"
679
679
  _(col.default_function).must_be_nil
680
680
  type = connection.lookup_cast_type_from_column(col)
681
681
  _(type).must_be_instance_of Type::UnicodeVarchar
@@ -686,13 +686,13 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
686
686
  assert_obj_set_and_save :nvarchar_50, "一二34五六"
687
687
  end
688
688
 
689
- it 'nvarchar(max)' do
690
- col = column('nvarchar_max')
691
- _(col.sql_type).must_equal 'nvarchar(max)'
689
+ it "nvarchar(max)" do
690
+ col = column("nvarchar_max")
691
+ _(col.sql_type).must_equal "nvarchar(max)"
692
692
  _(col.type).must_equal :text
693
693
  _(col.null).must_equal true
694
- _(col.default).must_equal 'test nvarchar_max åå'
695
- _(obj.nvarchar_max).must_equal 'test nvarchar_max åå'
694
+ _(col.default).must_equal "test nvarchar_max åå"
695
+ _(obj.nvarchar_max).must_equal "test nvarchar_max åå"
696
696
  _(col.default_function).must_be_nil
697
697
  type = connection.lookup_cast_type_from_column(col)
698
698
  _(type).must_be_instance_of Type::UnicodeVarcharMax
@@ -703,13 +703,13 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
703
703
  assert_obj_set_and_save :nvarchar_max, "一二34五六"
704
704
  end
705
705
 
706
- it 'ntext' do
707
- col = column('ntext')
708
- _(col.sql_type).must_equal 'ntext'
706
+ it "ntext" do
707
+ col = column("ntext")
708
+ _(col.sql_type).must_equal "ntext"
709
709
  _(col.type).must_equal :ntext
710
710
  _(col.null).must_equal true
711
- _(col.default).must_equal 'test ntext åå'
712
- _(obj.ntext).must_equal 'test ntext åå'
711
+ _(col.default).must_equal "test ntext åå"
712
+ _(obj.ntext).must_equal "test ntext åå"
713
713
  _(col.default_function).must_be_nil
714
714
  type = connection.lookup_cast_type_from_column(col)
715
715
  _(type).must_be_instance_of Type::UnicodeText
@@ -722,12 +722,12 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
722
722
 
723
723
  # Binary Strings
724
724
 
725
- let(:binary_file) { File.join ARTest::SQLServer.test_root_sqlserver, 'fixtures', '1px.gif' }
726
- let(:binary_data) { File.open(binary_file, 'rb') { |f| f.read } }
725
+ let(:binary_file) { File.join ARTest::SQLServer.test_root_sqlserver, "fixtures", "1px.gif" }
726
+ let(:binary_data) { File.open(binary_file, "rb") { |f| f.read } }
727
727
 
728
- it 'binary(49)' do
729
- col = column('binary_49')
730
- _(col.sql_type).must_equal 'binary(49)'
728
+ it "binary(49)" do
729
+ col = column("binary_49")
730
+ _(col.sql_type).must_equal "binary(49)"
731
731
  _(col.type).must_equal :binary_basic
732
732
  _(col.null).must_equal true
733
733
  _(col.default).must_be_nil
@@ -746,9 +746,9 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
746
746
  _(obj.reload.binary_49).must_equal binary_data
747
747
  end
748
748
 
749
- it 'varbinary(49)' do
750
- col = column('varbinary_49')
751
- _(col.sql_type).must_equal 'varbinary(49)'
749
+ it "varbinary(49)" do
750
+ col = column("varbinary_49")
751
+ _(col.sql_type).must_equal "varbinary(49)"
752
752
  _(col.type).must_equal :varbinary
753
753
  _(col.null).must_equal true
754
754
  _(col.default).must_be_nil
@@ -759,17 +759,17 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
759
759
  _(type.precision).must_be_nil
760
760
  _(type.scale).must_be_nil
761
761
  # Basic set and save.
762
- binary_data_20 = binary_data.to(20)
763
- _(binary_data_20.encoding).must_equal Encoding::BINARY
764
- obj.varbinary_49 = binary_data_20
765
- _(obj.varbinary_49).must_equal binary_data_20
762
+ binary_data20 = binary_data.to(20)
763
+ _(binary_data20.encoding).must_equal Encoding::BINARY
764
+ obj.varbinary_49 = binary_data20
765
+ _(obj.varbinary_49).must_equal binary_data20
766
766
  obj.save!
767
- _(obj.reload.varbinary_49).must_equal binary_data_20
767
+ _(obj.reload.varbinary_49).must_equal binary_data20
768
768
  end
769
769
 
770
- it 'varbinary(max)' do
771
- col = column('varbinary_max')
772
- _(col.sql_type).must_equal 'varbinary(max)'
770
+ it "varbinary(max)" do
771
+ col = column("varbinary_max")
772
+ _(col.sql_type).must_equal "varbinary(max)"
773
773
  _(col.type).must_equal :binary
774
774
  _(col.null).must_equal true
775
775
  _(col.default).must_be_nil
@@ -786,57 +786,55 @@ class ColumnTestSQLServer < ActiveRecord::TestCase
786
786
 
787
787
  # Other Data Types
788
788
 
789
- it 'uniqueidentifier' do
790
- col = column('uniqueidentifier')
791
- _(col.sql_type).must_equal 'uniqueidentifier'
789
+ it "uniqueidentifier" do
790
+ col = column("uniqueidentifier")
791
+ _(col.sql_type).must_equal "uniqueidentifier"
792
792
  _(col.type).must_equal :uuid
793
793
  _(col.null).must_equal true
794
794
  _(col.default).must_be_nil
795
- _(col.default_function).must_equal 'newid()'
795
+ _(col.default_function).must_equal "newid()"
796
796
  type = connection.lookup_cast_type_from_column(col)
797
- _(type).must_be_instance_of Type::Uuid
797
+ _(type).must_be_instance_of Type::Uuid
798
798
  _(type.limit).must_be_nil
799
799
  _(type.precision).must_be_nil
800
800
  _(type.scale).must_be_nil
801
801
  # Basic set and save.
802
802
  obj.uniqueidentifier = "this will not qualify as valid"
803
803
  _(obj.uniqueidentifier).must_be_nil
804
- obj.save! ; obj.reload
805
- _(obj.uniqueidentifier).must_match Type::Uuid::ACCEPTABLE_UUID
804
+ obj.save!; obj.reload
805
+ _(obj.uniqueidentifier).must_match Type::Uuid::ACCEPTABLE_UUID
806
806
  obj.uniqueidentifier = "6F9619FF-8B86-D011-B42D-00C04FC964FF"
807
- _(obj.uniqueidentifier).must_equal "6F9619FF-8B86-D011-B42D-00C04FC964FF"
808
- obj.save! ; obj.reload
809
- _(obj.uniqueidentifier).must_equal "6F9619FF-8B86-D011-B42D-00C04FC964FF"
807
+ _(obj.uniqueidentifier).must_equal "6F9619FF-8B86-D011-B42D-00C04FC964FF"
808
+ obj.save!; obj.reload
809
+ _(obj.uniqueidentifier).must_equal "6F9619FF-8B86-D011-B42D-00C04FC964FF"
810
810
  end
811
811
 
812
- it 'timestamp' do
813
- col = column('timestamp')
814
- _(col.sql_type).must_equal 'timestamp'
812
+ it "timestamp" do
813
+ col = column("timestamp")
814
+ _(col.sql_type).must_equal "timestamp"
815
815
  _(col.type).must_equal :ss_timestamp
816
816
  _(col.null).must_equal true
817
817
  _(col.default).must_be_nil
818
818
  _(col.default_function).must_be_nil
819
819
  type = connection.lookup_cast_type_from_column(col)
820
- _(type).must_be_instance_of Type::Timestamp
820
+ _(type).must_be_instance_of Type::Timestamp
821
821
  _(type.limit).must_be_nil
822
822
  _(type.precision).must_be_nil
823
823
  _(type.scale).must_be_nil
824
824
  # Basic read.
825
825
  _(obj.timestamp).must_be_nil
826
- obj.save! ; obj.reload
827
- _(obj.timestamp).must_match %r|\000|
826
+ obj.save!; obj.reload
827
+ _(obj.timestamp).must_match %r|\000|
828
828
  obj.timestamp
829
829
  # Can set another attribute
830
830
  obj.uniqueidentifier = "6F9619FF-8B86-D011-B42D-00C04FC964FF"
831
831
  obj.save!
832
832
  end
833
833
 
834
- it 'does not mark object as changed after save' do
834
+ it "does not mark object as changed after save" do
835
835
  obj.save!
836
836
  obj.attributes
837
837
  _(obj.changed?).must_equal false
838
838
  end
839
-
840
839
  end
841
-
842
840
  end