aq1018-sqlserver-2000-2008-adpater 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,22 @@
1
+ require 'cases/sqlserver_helper'
2
+ require 'models/order'
3
+
4
+ class TableNameTestSqlserver < ActiveRecord::TestCase
5
+
6
+ self.use_transactional_fixtures = false
7
+
8
+ def setup
9
+ Order.table_name = '[orders]'
10
+ Order.reset_column_information
11
+ end
12
+
13
+ should 'load columns with escaped table name for model' do
14
+ assert_equal 4, Order.columns.length
15
+ end
16
+
17
+ should 'not re-escape table name if it is escaped already for SQL queries' do
18
+ assert_sql(/SELECT \* FROM \[orders\]/) { Order.all }
19
+ end
20
+
21
+
22
+ end
@@ -0,0 +1,44 @@
1
+ require 'cases/sqlserver_helper'
2
+
3
+ class UnicodeTestSqlserver < ActiveRecord::TestCase
4
+
5
+
6
+ context 'Testing basic saves and unicode limits' do
7
+
8
+ should 'save and reload simple nchar string' do
9
+ assert nchar_data = SqlServerUnicode.create!(:nchar => 'A')
10
+ assert_equal 'A', SqlServerUnicode.find(nchar_data.id).nchar
11
+ end
12
+
13
+ should 'save and reload simple nvarchar(max) string' do
14
+ test_string = 'Ken Collins'
15
+ assert nvarcharmax_data = SqlServerUnicode.create!(:nvarchar_max => test_string)
16
+ assert_equal test_string, SqlServerUnicode.find(nvarcharmax_data.id).nvarchar_max
17
+ end if sqlserver_2005?
18
+
19
+ should 'enforce default nchar_10 limit of 10' do
20
+ assert_raise(ActiveRecord::StatementInvalid) { SqlServerUnicode.create!(:nchar => '01234567891') }
21
+ end
22
+
23
+ should 'enforce default nvarchar_100 limit of 100' do
24
+ assert_raise(ActiveRecord::StatementInvalid) { SqlServerUnicode.create!(:nvarchar_100 => '0123456789'*10+'1') }
25
+ end
26
+
27
+ end
28
+
29
+ context 'Testing unicode data' do
30
+
31
+ setup do
32
+ @unicode_data = "一二34五六"
33
+ end
34
+
35
+ should 'insert into nvarchar field' do
36
+ assert data = SqlServerUnicode.create!(:nvarchar => @unicode_data)
37
+ assert_equal @unicode_data, data.reload.nvarchar
38
+ end
39
+
40
+ end
41
+
42
+
43
+
44
+ end
@@ -0,0 +1,23 @@
1
+ print "Using native SQLServer\n"
2
+ require_dependency 'models/course'
3
+ require 'logger'
4
+
5
+ ActiveRecord::Base.logger = Logger.new("debug.log")
6
+
7
+ ActiveRecord::Base.configurations = {
8
+ 'arunit' => {
9
+ :adapter => 'sqlserver',
10
+ :host => 'localhost',
11
+ :username => 'rails',
12
+ :database => 'activerecord_unittest'
13
+ },
14
+ 'arunit2' => {
15
+ :adapter => 'sqlserver',
16
+ :host => 'localhost',
17
+ :username => 'rails',
18
+ :database => 'activerecord_unittest2'
19
+ }
20
+ }
21
+
22
+ ActiveRecord::Base.establish_connection 'arunit'
23
+ Course.establish_connection 'arunit2'
@@ -0,0 +1,27 @@
1
+ print "Using native SQLServer via ODBC\n"
2
+ require_dependency 'models/course'
3
+ require 'logger'
4
+
5
+ ActiveRecord::Base.logger = Logger.new("debug.log")
6
+
7
+ ActiveRecord::Base.configurations = {
8
+ 'arunit' => {
9
+ :adapter => 'sqlserver',
10
+ :mode => 'ODBC',
11
+ :host => 'MSSQL',
12
+ :username => 'rails',
13
+ :password => 'rails',
14
+ :dsn => 'activerecord_unittest'
15
+ },
16
+ 'arunit2' => {
17
+ :adapter => 'sqlserver',
18
+ :mode => 'ODBC',
19
+ :host => 'MSSQL',
20
+ :username => 'rails',
21
+ :password => 'rails',
22
+ :dsn => 'activerecord_unittest2'
23
+ }
24
+ }
25
+
26
+ ActiveRecord::Base.establish_connection 'arunit'
27
+ Course.establish_connection 'arunit2'
@@ -0,0 +1,11 @@
1
+ class TableWillNeverBeCreated < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table(:sqlserver_trans_table1) { }
5
+ create_table(:sqlserver_trans_table2) { raise ActiveRecord::StatementInvalid }
6
+ end
7
+
8
+ def self.down
9
+ end
10
+
11
+ end
@@ -0,0 +1,77 @@
1
+ ActiveRecord::Schema.define do
2
+
3
+ create_table :table_with_real_columns, :force => true do |t|
4
+ t.column :real_number, :real
5
+ # t.column :varchar_max, :varchar_max if ActiveRecord::Base.connection.sqlserver_2005?
6
+ end
7
+
8
+ create_table :defaults, :force => true do |t|
9
+ t.column :positive_integer, :integer, :default => 1
10
+ t.column :negative_integer, :integer, :default => -1
11
+ t.column :decimal_number, :decimal, :precision => 3, :scale => 2, :default => 2.78
12
+ end
13
+
14
+ create_table :string_defaults, :force => true do |t|
15
+ t.column :string_with_null_default, :string, :default => nil
16
+ t.column :string_with_pretend_null_one, :string, :default => 'null'
17
+ t.column :string_with_pretend_null_two, :string, :default => '(null)'
18
+ t.column :string_with_pretend_null_three, :string, :default => 'NULL'
19
+ t.column :string_with_pretend_null_four, :string, :default => '(NULL)'
20
+ end
21
+
22
+ create_table :sql_server_chronics, :force => true do |t|
23
+ t.column :date, :date
24
+ t.column :time, :time
25
+ t.column :datetime, :datetime
26
+ t.column :timestamp, :timestamp
27
+ end
28
+
29
+ create_table(:fk_test_has_fks, :force => true) { |t| t.column(:fk_id, :integer, :null => false) }
30
+ create_table(:fk_test_has_pks, :force => true) { }
31
+ execute <<-ADDFKSQL
32
+ ALTER TABLE fk_test_has_fks
33
+ ADD CONSTRAINT FK__fk_test_has_fk_fk_id
34
+ FOREIGN KEY (#{quote_column_name('fk_id')})
35
+ REFERENCES #{quote_table_name('fk_test_has_pks')} (#{quote_column_name('id')})
36
+ ADDFKSQL
37
+
38
+ create_table :sql_server_unicodes, :force => true do |t|
39
+ t.column :nchar, :nchar
40
+ t.column :nvarchar, :nvarchar
41
+ t.column :ntext, :ntext
42
+ t.column :ntext_10, :ntext, :limit => 10
43
+ t.column :nchar_10, :nchar, :limit => 10
44
+ t.column :nvarchar_100, :nvarchar, :limit => 100
45
+ if ActiveRecord::Base.connection.sqlserver_2005?
46
+ t.column :nvarchar_max, :nvarchar_max
47
+ t.column :nvarchar_max_10, :nvarchar_max, :limit => 10
48
+ end
49
+ end
50
+
51
+ create_table :sql_server_strings, :force => true do |t|
52
+ t.column :char, :char
53
+ t.column :char_10, :char, :limit => 10
54
+ if ActiveRecord::Base.connection.sqlserver_2005?
55
+ t.column :varchar_max, :varchar_max
56
+ t.column :varchar_max_10, :varchar_max, :limit => 10
57
+ end
58
+ end
59
+
60
+ create_table :sql_server_binary_types, :force => true do |t|
61
+ # TODO: Add some different native binary types and test.
62
+ end
63
+
64
+ execute "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'customers_view') DROP VIEW customers_view"
65
+ execute <<-CUSTOMERSVIEW
66
+ CREATE VIEW customers_view AS
67
+ SELECT id, name, balance
68
+ FROM customers
69
+ CUSTOMERSVIEW
70
+ execute "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'string_defaults_view') DROP VIEW string_defaults_view"
71
+ execute <<-STRINGDEFAULTSVIEW
72
+ CREATE VIEW string_defaults_view AS
73
+ SELECT id, string_with_pretend_null_one as pretend_null
74
+ FROM string_defaults
75
+ STRINGDEFAULTSVIEW
76
+
77
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aq1018-sqlserver-2000-2008-adpater
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Ken Collins
8
+ - Murray Steele
9
+ - Shawn Balestracci
10
+ - Joe Rafaniello
11
+ - Tom Ward
12
+ - Aaron
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2009-02-28 00:00:00 -08:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: SQL Server 2000 & 2005 & 2008 Adapter For Rails.
22
+ email: ken@metaskills.net
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - CHANGELOG
31
+ - MIT-LICENSE
32
+ - Rakefile
33
+ - README
34
+ - RUNNING_UNIT_TESTS
35
+ - lib/active_record/connection_adapters/sqlserver_adapter.rb
36
+ - lib/core_ext/active_record.rb
37
+ - lib/core_ext/dbi.rb
38
+ has_rdoc: true
39
+ homepage: http://github.com/aq1018/2000-2008-adapter/
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.2.0
61
+ signing_key:
62
+ specification_version: 2
63
+ summary: SQL Server 2000 & 2005 & 2008 Adapter For Rails.
64
+ test_files:
65
+ - test/cases/aaaa_create_tables_test_sqlserver.rb
66
+ - test/cases/adapter_test_sqlserver.rb
67
+ - test/cases/basics_test_sqlserver.rb
68
+ - test/cases/calculations_test_sqlserver.rb
69
+ - test/cases/column_test_sqlserver.rb
70
+ - test/cases/connection_test_sqlserver.rb
71
+ - test/cases/eager_association_test_sqlserver.rb
72
+ - test/cases/inheritance_test_sqlserver.rb
73
+ - test/cases/migration_test_sqlserver.rb
74
+ - test/cases/offset_and_limit_test_sqlserver.rb
75
+ - test/cases/pessimistic_locking_test_sqlserver.rb
76
+ - test/cases/query_cache_test_sqlserver.rb
77
+ - test/cases/schema_dumper_test_sqlserver.rb
78
+ - test/cases/specific_schema_test_sqlserver.rb
79
+ - test/cases/sqlserver_helper.rb
80
+ - test/cases/table_name_test_sqlserver.rb
81
+ - test/cases/unicode_test_sqlserver.rb
82
+ - test/connections/native_sqlserver/connection.rb
83
+ - test/connections/native_sqlserver_odbc/connection.rb
84
+ - test/migrations/transaction_table/1_table_will_never_be_created.rb
85
+ - test/schema/sqlserver_specific_schema.rb