11require 'cases/sqlserver_helper'
22require 'models/task'
33require 'models/topic'
4+ require 'models/joke'
5+ require 'models/subscriber'
46
57class AdapterTestSqlserver < ActiveRecord ::TestCase
68
79 def setup
810 @connection = ActiveRecord ::Base . connection
11+ @basic_insert_sql = "INSERT INTO [funny_jokes] ([name]) VALUES('Knock knock')"
12+ @basic_update_sql = "UPDATE [customers] SET [address_street] = NULL WHERE [id] = 2"
13+ @basic_select_sql = "SELECT * FROM [customers] WHERE ([customers].[id] = 1)"
914 end
1015
1116 context 'For abstract behavior' do
@@ -87,6 +92,22 @@ def setup
8792
8893 end
8994
95+ should 'return true to #insert_sql? for inserts only' do
96+ assert @connection . send ( :insert_sql? , 'INSERT...' )
97+ assert !@connection . send ( :insert_sql? , 'UPDATE...' )
98+ assert !@connection . send ( :insert_sql? , 'SELECT...' )
99+ end
100+
101+ context 'for #get_table_name' do
102+
103+ should 'return quoted table name from basic INSERT, UPDATE and SELECT statements' do
104+ assert_equal '[funny_jokes]' , @connection . send ( :get_table_name , @basic_insert_sql )
105+ assert_equal '[customers]' , @connection . send ( :get_table_name , @basic_update_sql )
106+ assert_equal '[customers]' , @connection . send ( :get_table_name , @basic_select_sql )
107+ end
108+
109+ end
110+
90111 end
91112
92113 context 'For identity inserts' do
@@ -95,19 +116,25 @@ def setup
95116 @identity_insert_sql = "INSERT INTO [funny_jokes] ([id],[name]) VALUES(420,'Knock knock')"
96117 end
97118
98- should 'return true to #query_requires_identity_insert? when INSERT sql contains id_column ' do
99- assert @connection . send ( :query_requires_identity_insert? , @identity_insert_sql )
119+ should 'return quoted table_name to #query_requires_identity_insert? when INSERT sql contains id_column' do
120+ assert_equal '[funny_jokes]' , @connection . send ( :query_requires_identity_insert? , @identity_insert_sql )
100121 end
101122
102123 should 'return false to #query_requires_identity_insert? for normal SQL' do
103- insert_sql = "INSERT INTO [funny_jokes] ([name]) VALUES('Knock knock')"
104- update_sql = "UPDATE [customers] SET [address_street] = NULL WHERE [id] = 2"
105- select_sql = "SELECT * FROM [customers] WHERE ([customers].[id] = 1)"
106- [ insert_sql , update_sql , select_sql ] . each do |sql |
124+ [ @basic_insert_sql , @basic_update_sql , @basic_select_sql ] . each do |sql |
107125 assert !@connection . send ( :query_requires_identity_insert? , sql ) , "SQL was #{ sql } "
108126 end
109127 end
110128
129+ should 'find identity column using #identity_column' do
130+ joke_id_column = Joke . columns . detect { |c | c . name == 'id' }
131+ assert_equal joke_id_column , @connection . send ( :identity_column , Joke . table_name )
132+ end
133+
134+ should 'return nil when calling #identity_column for a table_name with no identity' do
135+ assert_nil @connection . send ( :identity_column , Subscriber . table_name )
136+ end
137+
111138 end
112139
113140 context 'For Quoting' do
0 commit comments