activerecord-jdbc-adapter 1.3.0.beta1 → 1.3.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. data/.gitignore +12 -11
  2. data/.travis.yml +36 -7
  3. data/Appraisals +3 -3
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +13 -6
  6. data/History.txt +64 -0
  7. data/README.md +8 -1
  8. data/Rakefile +3 -1
  9. data/gemfiles/rails23.gemfile +1 -1
  10. data/gemfiles/rails23.gemfile.lock +6 -5
  11. data/gemfiles/rails30.gemfile +1 -1
  12. data/gemfiles/rails30.gemfile.lock +7 -6
  13. data/gemfiles/rails31.gemfile +1 -1
  14. data/gemfiles/rails31.gemfile.lock +6 -5
  15. data/gemfiles/rails32.gemfile +1 -1
  16. data/gemfiles/rails32.gemfile.lock +6 -5
  17. data/gemfiles/rails40.gemfile +2 -4
  18. data/gemfiles/rails40.gemfile.lock +37 -51
  19. data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
  20. data/lib/active_record/connection_adapters/db2_adapter.rb +1 -1
  21. data/lib/arel/visitors/db2.rb +5 -1
  22. data/lib/arel/visitors/hsqldb.rb +1 -0
  23. data/lib/arel/visitors/sql_server.rb +55 -13
  24. data/lib/arjdbc/db2/adapter.rb +197 -227
  25. data/lib/arjdbc/db2/as400.rb +124 -0
  26. data/lib/arjdbc/db2/connection_methods.rb +20 -1
  27. data/lib/arjdbc/derby/adapter.rb +17 -85
  28. data/lib/arjdbc/derby/connection_methods.rb +2 -1
  29. data/lib/arjdbc/discover.rb +55 -47
  30. data/lib/arjdbc/h2/adapter.rb +52 -18
  31. data/lib/arjdbc/h2/connection_methods.rb +10 -2
  32. data/lib/arjdbc/hsqldb/adapter.rb +33 -9
  33. data/lib/arjdbc/hsqldb/connection_methods.rb +10 -2
  34. data/lib/arjdbc/informix.rb +2 -1
  35. data/lib/arjdbc/jdbc.rb +5 -1
  36. data/lib/arjdbc/jdbc/adapter.rb +167 -89
  37. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  38. data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
  39. data/lib/arjdbc/jdbc/base_ext.rb +25 -3
  40. data/lib/arjdbc/jdbc/callbacks.rb +9 -8
  41. data/lib/arjdbc/jdbc/column.rb +8 -20
  42. data/lib/arjdbc/jdbc/connection.rb +69 -80
  43. data/lib/arjdbc/jdbc/extension.rb +6 -8
  44. data/lib/arjdbc/jdbc/jdbc.rake +3 -141
  45. data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
  46. data/lib/arjdbc/mssql/adapter.rb +108 -34
  47. data/lib/arjdbc/mssql/connection_methods.rb +3 -1
  48. data/lib/arjdbc/mssql/limit_helpers.rb +3 -2
  49. data/lib/arjdbc/mssql/lock_helpers.rb +5 -1
  50. data/lib/arjdbc/mysql/adapter.rb +127 -70
  51. data/lib/arjdbc/mysql/connection_methods.rb +5 -2
  52. data/lib/arjdbc/oracle/adapter.rb +124 -94
  53. data/lib/arjdbc/oracle/connection_methods.rb +2 -1
  54. data/lib/arjdbc/postgresql/adapter.rb +99 -67
  55. data/lib/arjdbc/postgresql/column_cast.rb +3 -5
  56. data/lib/arjdbc/postgresql/connection_methods.rb +6 -6
  57. data/lib/arjdbc/railtie.rb +3 -1
  58. data/lib/arjdbc/sqlite3/adapter.rb +60 -43
  59. data/lib/arjdbc/sqlite3/connection_methods.rb +9 -9
  60. data/lib/arjdbc/sybase.rb +1 -1
  61. data/lib/arjdbc/tasks.rb +13 -0
  62. data/lib/arjdbc/tasks/database_tasks.rb +50 -0
  63. data/lib/arjdbc/tasks/databases.rake +89 -0
  64. data/lib/arjdbc/tasks/databases3.rake +203 -0
  65. data/lib/arjdbc/tasks/databases4.rake +39 -0
  66. data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
  67. data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
  68. data/lib/arjdbc/tasks/h2_database_tasks.rb +29 -0
  69. data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
  70. data/lib/arjdbc/tasks/jdbc_database_tasks.rb +122 -0
  71. data/lib/arjdbc/tasks/mssql_database_tasks.rb +36 -0
  72. data/lib/arjdbc/tasks/oracle/enhanced_structure_dump.rb +297 -0
  73. data/lib/arjdbc/tasks/oracle_database_tasks.rb +62 -0
  74. data/lib/arjdbc/version.rb +1 -1
  75. data/pom.xml +11 -12
  76. data/rails_generators/jdbc_generator.rb +1 -1
  77. data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
  78. data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
  79. data/rakelib/02-test.rake +42 -15
  80. data/rakelib/compile.rake +29 -2
  81. data/rakelib/db.rake +2 -1
  82. data/rakelib/rails.rake +23 -6
  83. data/src/java/arjdbc/ArJdbcModule.java +175 -0
  84. data/src/java/arjdbc/db2/DB2Module.java +2 -1
  85. data/src/java/arjdbc/derby/DerbyModule.java +5 -24
  86. data/src/java/arjdbc/hsqldb/HSQLDBModule.java +3 -2
  87. data/src/java/arjdbc/jdbc/AdapterJavaService.java +3 -46
  88. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +1001 -259
  89. data/src/java/arjdbc/mssql/MSSQLModule.java +2 -1
  90. data/src/java/arjdbc/mysql/MySQLModule.java +4 -3
  91. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +12 -7
  92. data/src/java/arjdbc/oracle/OracleModule.java +2 -1
  93. data/src/java/arjdbc/sqlite3/SQLite3Module.java +2 -1
  94. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +12 -0
  95. data/test/db/db2.rb +14 -7
  96. data/test/db/db2/rake_test.rb +82 -0
  97. data/test/db/db2/rake_test_data.sql +35 -0
  98. data/test/db/db2/simple_test.rb +20 -0
  99. data/test/db/db2/unit_test.rb +3 -1
  100. data/test/db/derby.rb +7 -5
  101. data/test/db/derby/rake_test.rb +96 -0
  102. data/test/db/derby/simple_test.rb +10 -2
  103. data/test/db/h2.rb +6 -8
  104. data/test/db/h2/identity_column_test.rb +35 -0
  105. data/test/db/h2/offset_test.rb +49 -0
  106. data/test/db/h2/rake_test.rb +98 -0
  107. data/test/db/h2/schema_dump_test.rb +5 -1
  108. data/test/db/hsqldb.rb +6 -10
  109. data/test/db/hsqldb/rake_test.rb +101 -0
  110. data/test/db/hsqldb/schema_dump_test.rb +5 -1
  111. data/test/db/hsqldb/simple_test.rb +8 -0
  112. data/test/db/jndi_config.rb +1 -3
  113. data/test/db/jndi_pooled_config.rb +1 -3
  114. data/test/db/mssql/limit_offset_test.rb +23 -14
  115. data/test/db/mssql/rake_test.rb +143 -0
  116. data/test/db/mysql/_rails_test_mysql.32.out +1069 -1252
  117. data/test/db/mysql/nonstandard_primary_key_test.rb +21 -24
  118. data/test/db/mysql/rake_test.rb +97 -0
  119. data/test/db/mysql/schema_dump_test.rb +11 -11
  120. data/test/db/mysql/simple_test.rb +52 -3
  121. data/test/db/mysql/statement_escaping_test.rb +46 -0
  122. data/test/db/oracle/rake_test.rb +100 -0
  123. data/test/db/oracle/simple_test.rb +48 -0
  124. data/test/db/postgres/_rails_test_postgres.32.out +998 -1370
  125. data/test/db/postgres/active_schema_unit_test.rb +68 -0
  126. data/test/db/postgres/connection_test.rb +10 -2
  127. data/test/db/postgres/data_types_test.rb +2 -2
  128. data/test/db/postgres/ltree_test.rb +6 -5
  129. data/test/db/postgres/native_types_test.rb +1 -5
  130. data/test/db/postgres/rake_test.rb +117 -0
  131. data/test/db/postgres/schema_dump_test.rb +9 -2
  132. data/test/db/postgres/schema_test.rb +4 -2
  133. data/test/db/postgres/simple_test.rb +57 -16
  134. data/test/db/sqlite3.rb +3 -10
  135. data/test/db/sqlite3/_rails_test_sqlite3.32.out +1070 -1298
  136. data/test/db/sqlite3/rake_test.rb +71 -0
  137. data/test/db/sqlite3/simple_test.rb +9 -9
  138. data/test/has_many_through.rb +4 -1
  139. data/test/jdbc/db2.rb +14 -1
  140. data/test/jdbc_column_test.rb +23 -0
  141. data/test/{generic_jdbc_connection_test.rb → jdbc_connection_test.rb} +22 -17
  142. data/test/jndi_callbacks_test.rb +26 -28
  143. data/test/jndi_test.rb +7 -16
  144. data/test/models/data_types.rb +2 -1
  145. data/test/models/thing.rb +1 -0
  146. data/test/rails/mysql.rb +13 -0
  147. data/test/rails/sqlite3/version.rb +6 -0
  148. data/test/rails_stub.rb +31 -0
  149. data/test/rake_test_support.rb +298 -0
  150. data/test/serialize.rb +2 -4
  151. data/test/{helper.rb → shared_helper.rb} +0 -0
  152. data/test/simple.rb +167 -93
  153. data/test/test_helper.rb +52 -16
  154. metadata +388 -354
  155. data/lib/pg.rb +0 -26
  156. data/test/abstract_db_create.rb +0 -139
  157. data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -36
  158. data/test/db/mssql/db_create_test.rb +0 -29
  159. data/test/db/mysql/db_create_test.rb +0 -33
  160. data/test/db/postgres/db_create_test.rb +0 -44
  161. data/test/db/postgres/db_drop_test.rb +0 -17
@@ -0,0 +1,71 @@
1
+ require 'rake_test_support'
2
+ require 'db/sqlite3'
3
+
4
+ class SQLite3RakeTest < Test::Unit::TestCase
5
+ include RakeTestSupport
6
+
7
+ def db_name; 'rake_test.sqlite3'; end
8
+
9
+ def do_setup
10
+ File.delete('rake_test.sqlite3') if File.exists?('rake_test.sqlite3')
11
+ end
12
+
13
+ def do_teardown
14
+ File.delete('rake_test.sqlite3') if File.exists?('rake_test.sqlite3')
15
+ end
16
+
17
+ test 'rake db:create (and db:drop)' do
18
+ Rake::Task["db:create"].invoke
19
+ assert_true File.exists?('rake_test.sqlite3')
20
+
21
+ Rake::Task["db:drop"].invoke
22
+ assert_false File.exists?('rake_test.sqlite3')
23
+ end
24
+
25
+ test 'rake db:test:purge' do
26
+ # Rake::Task["db:create"].invoke
27
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
28
+ ActiveRecord::Base.connection.create_table('users') { |t| t.string :name }
29
+ ActiveRecord::Base.connection.disconnect!
30
+
31
+ Rake::Task["db:test:purge"].invoke
32
+
33
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
34
+ assert_false ActiveRecord::Base.connection.table_exists?('users')
35
+ ActiveRecord::Base.connection.disconnect!
36
+ end
37
+
38
+ test 'rake db:structure:dump (and db:structure:load)' do
39
+ omit('sqlite3 not available') unless self.class.find_executable?('sqlite3')
40
+ create_rake_test_database do |connection|
41
+ create_schema_migrations_table(connection)
42
+ connection.create_table('users') { |t| t.string :name; t.timestamps }
43
+ end
44
+
45
+ structure_sql = File.join('db', structure_sql_filename)
46
+ begin
47
+ Dir.mkdir 'db' # db/structure.sql
48
+ Rake::Task["db:structure:dump"].invoke
49
+
50
+ assert File.exists?(structure_sql)
51
+ assert_match /CREATE TABLE .*?users/, File.read(structure_sql)
52
+
53
+ # db:structure:load
54
+ File.delete('rake_test.sqlite3')
55
+ Rake::Task["db:structure:load"].invoke
56
+
57
+ ActiveRecord::Base.establish_connection db_config.merge :database => db_name
58
+ assert ActiveRecord::Base.connection.table_exists?('users')
59
+ ActiveRecord::Base.connection.disconnect!
60
+ ensure
61
+ File.delete(structure_sql) if File.exists?(structure_sql)
62
+ Dir.rmdir 'db'
63
+ end
64
+ end
65
+
66
+ test 'rake db:charset' do
67
+ expect_rake_output('UTF-8')
68
+ Rake::Task["db:charset"].invoke
69
+ end
70
+
71
+ end
@@ -55,26 +55,26 @@ class SQLite3SimpleTest < Test::Unit::TestCase
55
55
  cols = ActiveRecord::Base.connection.columns("entries")
56
56
  assert cols.find {|col| col.name == "test_remove_column"}
57
57
 
58
- assert_nothing_raised do
58
+ #assert_nothing_raised do
59
59
  ActiveRecord::Schema.define do
60
60
  remove_column "entries", "test_remove_column"
61
61
  end
62
- end
62
+ #end
63
63
 
64
64
  cols = ActiveRecord::Base.connection.columns("entries")
65
- assert !cols.find {|col| col.name == "test_remove_column"}
65
+ assert_nil cols.find {|col| col.name == "test_remove_column"}
66
66
  end
67
67
 
68
68
  def test_rename_column
69
- assert_nothing_raised do
69
+ #assert_nothing_raised do
70
70
  ActiveRecord::Schema.define do
71
71
  rename_column "entries", "title", "name"
72
72
  end
73
- end
73
+ #end
74
74
 
75
75
  cols = ActiveRecord::Base.connection.columns("entries")
76
- assert cols.find {|col| col.name == "name"}
77
- assert !cols.find {|col| col.name == "title"}
76
+ assert_not_nil cols.find {|col| col.name == "name"}
77
+ assert_nil cols.find {|col| col.name == "title"}
78
78
 
79
79
  assert_nothing_raised do
80
80
  ActiveRecord::Schema.define do
@@ -83,8 +83,8 @@ class SQLite3SimpleTest < Test::Unit::TestCase
83
83
  end
84
84
 
85
85
  cols = ActiveRecord::Base.connection.columns("entries")
86
- assert cols.find {|col| col.name == "title"}
87
- assert !cols.find {|col| col.name == "name"}
86
+ assert_not_nil cols.find {|col| col.name == "title"}
87
+ assert_nil cols.find {|col| col.name == "name"}
88
88
  end
89
89
 
90
90
  def test_rename_column_preserves_content
@@ -51,8 +51,11 @@ module HasManyThroughMethods
51
51
  role.permission_groups.create! :right => r1.reload
52
52
  role.permission_groups.create! :right => r2.reload
53
53
 
54
+ connection = ActiveRecord::Base.connection
54
55
  groups = role.reload.permission_groups.select('right_id')
55
- assert_equal [ [ r1.id ], [ r2.id ] ], role.connection.select_rows(groups)
56
+
57
+ pend 'todo: is this really supposed to work ?!' if ar_version('4.0')
58
+ assert_equal [ [ r1.id ], [ r2.id ] ], connection.select_rows(groups)
56
59
  end if Test::Unit::TestCase.ar_version('3.0')
57
60
 
58
61
  end
data/test/jdbc/db2.rb CHANGED
@@ -13,7 +13,20 @@ module Jdbc
13
13
  end
14
14
 
15
15
  def self.driver_name
16
- 'com.ibm.db2.jcc.DB2Driver'
16
+ 'com.ibm.db2.jcc.DB2Driver' # ArJdbc::DB2::DRIVER_NAME
17
+ end
18
+ end
19
+ module AS400
20
+ def self.driver_jar
21
+ "jt400.jar"
22
+ end
23
+
24
+ def self.load_driver(method = :load)
25
+ send method, driver_jar
26
+ end
27
+
28
+ def self.driver_name
29
+ 'com.ibm.as400.access.AS400JDBCDriver' # ArJdbc::AS400::DRIVER_NAME
17
30
  end
18
31
  end
19
32
  end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ require 'arjdbc/jdbc'
4
+
5
+ require 'arjdbc/mysql'
6
+ require 'arjdbc/postgresql'
7
+ require 'arjdbc/sqlite3'
8
+
9
+ class JdbcColumnTest < Test::Unit::TestCase
10
+
11
+ test 'modules' do
12
+ assert_include ArJdbc.modules, ArJdbc::MySQL
13
+ assert_include ArJdbc.modules, ArJdbc::PostgreSQL
14
+ assert_include ArJdbc.modules, ArJdbc::SQLite3
15
+ end
16
+
17
+ test 'column types' do
18
+ types = ActiveRecord::ConnectionAdapters::JdbcColumn.column_types
19
+ assert_kind_of Proc, types[ /mysql/i ]
20
+ assert_kind_of Proc, types[ /sqlite/i ]
21
+ end
22
+
23
+ end
@@ -1,7 +1,7 @@
1
1
  require 'jdbc_common'
2
2
  require 'db/jdbc'
3
3
 
4
- class GenericJdbcConnectionTest < Test::Unit::TestCase
4
+ class JdbcConnectionTest < Test::Unit::TestCase
5
5
 
6
6
  def test_connection_available_through_jdbc_adapter
7
7
  ActiveRecord::Base.connection.execute("show databases") # MySQL
@@ -47,6 +47,16 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
47
47
  end
48
48
  end
49
49
 
50
+ test 'calls configure_connection on reconnect!' do
51
+ connection = ActiveRecord::Base.connection
52
+ unless connection.respond_to?(:configure_connection)
53
+ fail "no configure_connection for #{connection} can not test"
54
+ end
55
+ ActiveRecord::Base.connection.disconnect!
56
+ ActiveRecord::Base.connection.expects(:configure_connection).once
57
+ ActiveRecord::Base.connection.reconnect!
58
+ end
59
+
50
60
  class MockDriver < ActiveRecord::ConnectionAdapters::JdbcDriver
51
61
 
52
62
  class DriverImpl
@@ -94,29 +104,29 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
94
104
  ActiveRecord::Base.connection.jdbc_connection
95
105
  fail "jdbc error not thrown"
96
106
  rescue ActiveRecord::JDBCError => e
97
- assert_match /driver encountered an unknown error: java.sql.SQLInvalidAuthorizationSpecException/, e.to_s
107
+ assert_match /java.sql.SQLInvalidAuthorizationSpecException/, e.to_s
98
108
  assert_kind_of Java::JavaSql::SQLNonTransientException, e.sql_exception
99
109
  ensure
100
110
  ActiveRecord::Base.establish_connection JDBC_CONFIG
101
111
  end
102
112
  end
103
113
 
104
- class ConfigHelperTest < Test::Unit::TestCase
114
+ context 'configuration' do
105
115
 
106
- test 'configure connection url' do
107
- connection = Object.new
108
- connection.extend ActiveRecord::ConnectionAdapters::JdbcConnection::ConfigHelper
116
+ test 'connection url' do
117
+ adapter = ActiveRecord::Base.connection
118
+ connection = adapter.raw_connection # JdbcConnection
109
119
  connection.config = { :url => "jdbc://somehost", :options => { :hoge => "true", :fuya => "false" } }
110
- assert_equal "jdbc://somehost?hoge=true&fuya=false", connection.send(:configure_url)
120
+ assert_equal "jdbc://somehost?hoge=true&fuya=false", connection.send(:jdbc_url)
111
121
 
112
122
  connection.config = { :url => "jdbc://somehost?param=0", :options => { :hoge => "true", :fuya => false } }
113
- assert_equal "jdbc://somehost?param=0&hoge=true&fuya=false", connection.send(:configure_url)
123
+ assert_equal "jdbc://somehost?param=0&hoge=true&fuya=false", connection.send(:jdbc_url)
114
124
  end
115
125
 
116
126
  test 'connection fails without driver and url' do
117
127
  with_connection_removed do
118
128
  ActiveRecord::Base.establish_connection :adapter => 'jdbc'
119
- assert_raises(ActiveRecord::ConnectionNotEstablished) do
129
+ assert_raise ActiveRecord::ConnectionNotEstablished do
120
130
  ActiveRecord::Base.connection
121
131
  end
122
132
  end
@@ -125,7 +135,7 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
125
135
  test 'connection fails without driver' do
126
136
  with_connection_removed do
127
137
  ActiveRecord::Base.establish_connection :adapter => 'jdbc', :url => 'jdbc:derby:test.derby;create=true'
128
- assert_raises(ActiveRecord::ConnectionNotEstablished) do
138
+ assert_raise ActiveRecord::ConnectionNotEstablished do
129
139
  ActiveRecord::Base.connection
130
140
  end
131
141
  end
@@ -176,14 +186,9 @@ class GenericJdbcConnectionTest < Test::Unit::TestCase
176
186
  end
177
187
  end
178
188
 
179
- @@derby_driver_loaded = nil
180
-
181
189
  def load_derby_driver
182
- @@derby_driver_loaded ||= begin
183
- require 'jdbc/derby'
184
- Jdbc::Derby.load_driver
185
- true
186
- end
190
+ require 'jdbc/derby'
191
+ Jdbc::Derby.load_driver(:require)
187
192
  end
188
193
 
189
194
  end
@@ -1,35 +1,33 @@
1
- require 'jdbc_common'
1
+ require 'test_helper'
2
2
  require 'db/jndi_config'
3
3
 
4
4
  class JndiConnectionPoolCallbacksTest < Test::Unit::TestCase
5
-
6
- def self.startup
7
- ActiveRecord::Base.establish_connection JNDI_CONFIG
8
- end
9
-
10
- def setup
11
- @logger = stub_everything "logger"
12
- @config = JNDI_CONFIG
13
- @connection = ActiveRecord::ConnectionAdapters::JdbcConnection.new @config
14
- Entry.connection_pool.disconnect!
15
- assert !Entry.connection_pool.connected?
16
- class << Entry.connection_pool; public :instance_variable_set; end
5
+
6
+ class Dummy < ActiveRecord::Base; end
7
+
8
+ setup do
9
+ Dummy.establish_connection JNDI_CONFIG.dup
17
10
  end
18
-
19
- def teardown
20
- Entry.connection_pool.disconnect!
11
+
12
+ teardown do
13
+ Dummy.remove_connection
21
14
  end
22
-
23
- def test_should_call_hooks_on_checkout_and_checkin
24
- @adapter = ActiveRecord::ConnectionAdapters::JdbcAdapter.new @connection, @logger, @config
25
- Entry.connection_pool.instance_variable_set "@connections", [@adapter]
26
- assert !@connection.active?
27
-
28
- Entry.connection_pool.checkout
29
- assert @connection.active?
30
-
31
- Entry.connection_pool.checkin @adapter
32
- assert !@connection.active?
15
+
16
+ test 'calls hooks on checkout and checkin' do
17
+ connection = Dummy.connection_pool.checkout
18
+ assert_true connection.active?
19
+
20
+ # connection = Dummy.connection
21
+ Dummy.connection_pool.checkin connection
22
+ assert_false connection.active?
23
+
24
+ pool = Dummy.connection_pool
25
+ assert_false pool.active_connection? if pool.respond_to?(:active_connection?)
26
+ assert_true pool.connection.active? # checks out
27
+ assert_true pool.active_connection? if pool.respond_to?(:active_connection?)
28
+ assert_true connection.active?
29
+ Dummy.connection_pool.disconnect!
30
+ assert_false connection.active?
33
31
  end
34
32
 
35
- end if ActiveRecord::Base.respond_to?(:connection_pool)
33
+ end
data/test/jndi_test.rb CHANGED
@@ -1,9 +1,5 @@
1
- # To support the connection pooling in the test, you'll need
2
- # commons-dbcp, commons-pool, and commons-collections.
3
-
4
- require 'jdbc_common'
5
-
6
1
  require 'db/jndi_config'
2
+ require 'simple'
7
3
 
8
4
  class DerbyJndiTest < Test::Unit::TestCase
9
5
  include SimpleTestMethods
@@ -12,23 +8,20 @@ class DerbyJndiTest < Test::Unit::TestCase
12
8
  DbTypeMigration.big_decimal_precision = 31
13
9
  ALIVE_SQL = 'SELECT 1 FROM SYS.SYSSCHEMAS'
14
10
 
15
- def self.startup
16
- ActiveRecord::Base.establish_connection( {
17
- :connection_alive_sql => ALIVE_SQL
18
- }.merge(JNDI_CONFIG) )
11
+ def setup
12
+ config = { :connection_alive_sql => ALIVE_SQL }.merge(JNDI_CONFIG)
13
+ ActiveRecord::Base.establish_connection config
14
+ super
19
15
  end
20
-
21
- # @override
22
- #def test_connection_alive_sql; end
23
16
 
24
17
  test "(raw) connection is a jndi connection" do
25
18
  connection = ActiveRecord::Base.connection.raw_connection
19
+ assert_true connection.jndi?
26
20
  assert_true connection.jndi_connection?
27
21
  end
28
22
 
29
23
  test "fills username from data source meta-data if missing" do
30
24
  connection = ActiveRecord::Base.connection.raw_connection
31
- assert_true connection.jndi_connection?
32
25
 
33
26
  config = { :jndi => JNDI_CONFIG[:jndi] }
34
27
  ArJdbc::Derby.adapter_matcher('Derby', config)
@@ -52,12 +45,10 @@ class DerbyJndiPooledTest < Test::Unit::TestCase
52
45
  :connection_alive_sql => DerbyJndiTest::ALIVE_SQL
53
46
  }.merge(JNDI_POOLED_CONFIG) )
54
47
  end
55
-
56
- # @override
57
- #def test_connection_alive_sql; end
58
48
 
59
49
  test "(raw) connection is a jndi connection" do
60
50
  connection = ActiveRecord::Base.connection.raw_connection
51
+ assert_true connection.jndi?
61
52
  assert_true connection.jndi_connection?
62
53
  end
63
54
 
@@ -23,9 +23,10 @@ class DbTypeMigration < ActiveRecord::Migration
23
23
  t.column :sample_integer, :integer, :limit => 5
24
24
  t.column :sample_integer_with_limit_2, :integer, :limit => 2
25
25
  t.column :sample_integer_with_limit_8, :integer, :limit => 8
26
- t.column :sample_integer_no_limit, :integer
26
+ t.column :sample_integer_no_limit, :integer, :default => 42
27
27
  t.column :sample_integer_neg_default, :integer, :default => -1
28
28
  t.column :sample_text, :text
29
+ t.decimal :decimal_with_scale, :precision => 15, :scale => 3
29
30
  t.decimal :big_decimal, :precision => big_decimal_precision, :scale => 0
30
31
  end
31
32
  end
data/test/models/thing.rb CHANGED
@@ -5,6 +5,7 @@ class CreateThings < ActiveRecord::Migration
5
5
  t.timestamps
6
6
  end
7
7
  add_index :things, :name, :unique => true
8
+ add_index :things, :created_at, :where => 'name IS NOT NULL', :name => "thing_partial_index"
8
9
  end
9
10
 
10
11
  def self.down
@@ -0,0 +1,13 @@
1
+ module Mysql # :nodoc:
2
+ # remove_const(:Error) if const_defined?(:Error)
3
+ class Error < StandardError; end
4
+
5
+ def self.client_version
6
+ 50400 # faked out for AR tests
7
+ end
8
+
9
+ #module GemVersion
10
+ # VERSION = '2.8.2'
11
+ #end
12
+
13
+ end
@@ -0,0 +1,6 @@
1
+ # activerecord/test/cases/query_cache_test.rb requires this file
2
+ module SQLite3 # gem 'sqlite3' (native)
3
+ module Version
4
+ VERSION = '1.3.7' # SQLite3::Version::VERSION > '1.2.5'
5
+ end
6
+ end
@@ -0,0 +1,31 @@
1
+ require 'pathname'
2
+
3
+ module Rails
4
+ class Configuration; end unless const_defined?(:Configuration)
5
+ Configuration.class_eval do
6
+ def root
7
+ defined?(RAILS_ROOT) ? Pathname.new(RAILS_ROOT).realpath : raise("Rails.root not set")
8
+ end
9
+ end
10
+ class Application
11
+ def self.config
12
+ @config ||= Configuration.new
13
+ end
14
+ def self.paths
15
+ @paths ||= Hash.new { [] }
16
+ end
17
+ end
18
+ def self.application
19
+ Rails::Application
20
+ end
21
+ def self.configuration
22
+ application.config
23
+ end
24
+ def self.root
25
+ application && application.config.root
26
+ end
27
+ def self.env
28
+ env = defined?(RAILS_ENV) ? RAILS_ENV : ( ENV["RAILS_ENV"] || "development" )
29
+ ActiveSupport::StringInquirer.new(env)
30
+ end
31
+ end