Skip to content

Instantly share code, notes, and snippets.

@metaskills
Created October 29, 2009 02:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save metaskills/221060 to your computer and use it in GitHub Desktop.
Save metaskills/221060 to your computer and use it in GitHub Desktop.
diff --git a/test/cases/adapter_test_sqlserver.rb b/test/cases/adapter_test_sqlserver.rb
index e988227..9be0339 100644
--- a/test/cases/adapter_test_sqlserver.rb
+++ b/test/cases/adapter_test_sqlserver.rb
@@ -384,6 +384,29 @@ class AdapterTestSqlserver < ActiveRecord::TestCase
end
+ context 'When testing a table with a custom identity column that so happens to have an [id] column too' do
+
+ setup do
+ @model = SqlServerEdgeId
+ end
+
+ should 'be setup correctly' do
+ assert @model.columns_hash['p_id'].is_identity?
+ assert @model.columns_hash['id']
+ end
+
+ should 'allow object to save and set the custom identity column' do
+ o = @model.new
+ assert_sql %r|INSERT INTO \[sql_server_edge_ids\] \(\[id\],\s+\[foo\]\) VALUES\(NULL, NULL\)| do
+ assert o.save
+ end
+ assert o.id.is_a?(Fixnum)
+ assert_equal o.id, o[:p_id], 'making sure the real custom identity column is accessed by #id'
+ assert_nil o[:id], 'making sure the hanging [id] column is nil using attribute accessor'
+ end
+
+ end
+
context 'When disableing referential integrity' do
setup do
diff --git a/test/cases/sqlserver_helper.rb b/test/cases/sqlserver_helper.rb
index 4acbd96..e10fefd 100644
--- a/test/cases/sqlserver_helper.rb
+++ b/test/cases/sqlserver_helper.rb
@@ -24,6 +24,7 @@ class CustomersView < ActiveRecord::Base ; self.table_name = 'customers_view' ;
class StringDefaultsView < ActiveRecord::Base ; self.table_name = 'string_defaults_view' ; end
class StringDefaultsBigView < ActiveRecord::Base ; self.table_name = 'string_defaults_big_view' ; end
class SqlServerUnicode < ActiveRecord::Base ; end
+class SqlServerEdgeId < ActiveRecord::Base ; set_primary_key(:p_id) ; end
class SqlServerString < ActiveRecord::Base ; end
class SqlServerChronic < ActiveRecord::Base
coerce_sqlserver_date :date
diff --git a/test/schema/sqlserver_specific_schema.rb b/test/schema/sqlserver_specific_schema.rb
index cf84064..eae215f 100644
--- a/test/schema/sqlserver_specific_schema.rb
+++ b/test/schema/sqlserver_specific_schema.rb
@@ -36,6 +36,11 @@ ActiveRecord::Schema.define do
REFERENCES #{quote_table_name('fk_test_has_pks')} (#{quote_column_name('id')})
ADDFKSQL
+ create_table :sql_server_edge_ids, :force => true, :primary_key => :p_id do |t|
+ t.column :id, :integer
+ t.column :foo, :string
+ end
+
create_table :sql_server_unicodes, :force => true do |t|
t.column :nchar, :nchar
t.column :nvarchar, :nvarchar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment