activerecord-jdbc-adapter 0.9.1 → 0.9.2
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.
- data/History.txt +33 -0
- data/Manifest.txt +17 -0
- data/README.txt +48 -20
- data/Rakefile +2 -169
- data/lib/active_record/connection_adapters/jdbc_adapter.rb +11 -5
- data/lib/active_record/connection_adapters/jdbc_adapter_spec.rb +12 -0
- data/lib/jdbc_adapter.rb +1 -1
- data/lib/jdbc_adapter/jdbc.rake +43 -30
- data/lib/jdbc_adapter/jdbc_adapter_internal.jar +0 -0
- data/lib/jdbc_adapter/jdbc_db2.rb +2 -2
- data/lib/jdbc_adapter/jdbc_derby.rb +11 -0
- data/lib/jdbc_adapter/jdbc_hsqldb.rb +6 -1
- data/lib/jdbc_adapter/jdbc_mimer.rb +14 -7
- data/lib/jdbc_adapter/jdbc_mssql.rb +18 -2
- data/lib/jdbc_adapter/jdbc_mysql.rb +3 -0
- data/lib/jdbc_adapter/jdbc_oracle.rb +24 -14
- data/lib/jdbc_adapter/jdbc_postgre.rb +38 -18
- data/lib/jdbc_adapter/jdbc_sqlite3.rb +96 -26
- data/lib/jdbc_adapter/missing_functionality_helper.rb +40 -34
- data/lib/jdbc_adapter/rake_tasks.rb +1 -1
- data/lib/jdbc_adapter/tsql_helper.rb +1 -0
- data/lib/jdbc_adapter/version.rb +1 -1
- data/lib/pg.rb +4 -0
- data/rails_generators/jdbc_generator.rb +15 -0
- data/rails_generators/templates/jdbc.rake +8 -0
- data/rails_generators/templates/jdbc.rb +7 -0
- data/rakelib/compile.rake +23 -0
- data/rakelib/package.rake +85 -0
- data/rakelib/rails.rake +41 -0
- data/rakelib/test.rake +71 -0
- data/src/java/jdbc_adapter/JdbcAdapterInternalService.java +1 -0
- data/src/java/jdbc_adapter/JdbcDerbySpec.java +11 -46
- data/src/java/jdbc_adapter/JdbcMySQLSpec.java +3 -2
- data/src/java/jdbc_adapter/MssqlRubyJdbcConnection.java +71 -0
- data/src/java/jdbc_adapter/PostgresRubyJdbcConnection.java +24 -4
- data/src/java/jdbc_adapter/RubyJdbcConnection.java +57 -44
- data/test/abstract_db_create.rb +45 -0
- data/test/db/mysql.rb +2 -2
- data/test/db/postgres.rb +2 -2
- data/test/helper.rb +5 -0
- data/test/jdbc_adapter/jdbc_db2_test.rb +5 -0
- data/test/jdbc_common.rb +2 -0
- data/test/models/entry.rb +3 -0
- data/test/models/validates_uniqueness_of_string.rb +19 -0
- data/test/mysql_db_create_test.rb +25 -0
- data/test/mysql_nonstandard_primary_key_test.rb +42 -0
- data/test/mysql_simple_test.rb +5 -0
- data/test/postgres_db_create_test.rb +21 -0
- data/test/postgres_nonseq_pkey_test.rb +40 -0
- data/test/simple.rb +62 -1
- data/test/sqlite3_simple_test.rb +153 -10
- metadata +26 -5
data/test/db/mysql.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
MYSQL_CONFIG = {
|
2
2
|
:username => 'blog',
|
3
3
|
:password => '',
|
4
4
|
:adapter => 'mysql',
|
@@ -6,5 +6,5 @@ config = {
|
|
6
6
|
:host => 'localhost'
|
7
7
|
}
|
8
8
|
|
9
|
-
ActiveRecord::Base.establish_connection(
|
9
|
+
ActiveRecord::Base.establish_connection(MYSQL_CONFIG)
|
10
10
|
|
data/test/db/postgres.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
POSTGRES_CONFIG = {
|
2
2
|
:adapter => 'postgresql',
|
3
3
|
:database => 'weblog_development',
|
4
4
|
:host => 'localhost',
|
@@ -6,4 +6,4 @@ config = {
|
|
6
6
|
:password => ''
|
7
7
|
}
|
8
8
|
|
9
|
-
ActiveRecord::Base.establish_connection(
|
9
|
+
ActiveRecord::Base.establish_connection(POSTGRES_CONFIG)
|
data/test/helper.rb
ADDED
@@ -18,4 +18,9 @@ class JdbcSpec::DB2Test < Test::Unit::TestCase
|
|
18
18
|
assert_equal %q{123.45}, @inst.quote("123.45", @column), "decimal columns should not have quotes"
|
19
19
|
end
|
20
20
|
|
21
|
+
def test_primary_key_generation
|
22
|
+
@column.type = :primary_key
|
23
|
+
assert_equal 'int not null generated by default as identity (start with 1) primary key', @inst.modify_types({:string => {}, :integer => {}, :boolean => {}})[:primary_key]
|
24
|
+
end
|
25
|
+
|
21
26
|
end
|
data/test/jdbc_common.rb
CHANGED
@@ -14,8 +14,10 @@ require 'models/auto_id'
|
|
14
14
|
require 'models/entry'
|
15
15
|
require 'models/data_types'
|
16
16
|
require 'models/add_not_null_column_to_table'
|
17
|
+
require 'models/validates_uniqueness_of_string'
|
17
18
|
require 'simple'
|
18
19
|
require 'has_many_through'
|
20
|
+
require 'helper'
|
19
21
|
require 'test/unit'
|
20
22
|
|
21
23
|
# Comment/uncomment to enable logging to be loaded for any of the database adapters
|
data/test/models/entry.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateValidatesUniquenessOf < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table "validates_uniqueness_of", :force => true do |t|
|
4
|
+
t.column :cs_string, :string
|
5
|
+
t.column :ci_string, :string
|
6
|
+
t.column :content, :text
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.down
|
11
|
+
drop_table "validates_uniqueness_of"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class ValidatesUniquenessOfString < ActiveRecord::Base
|
16
|
+
self.set_table_name "validates_uniqueness_of"
|
17
|
+
validates_uniqueness_of :cs_string, :case_sensitive => true
|
18
|
+
validates_uniqueness_of :ci_string, :case_sensitive => false
|
19
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'abstract_db_create'
|
2
|
+
require 'db/mysql'
|
3
|
+
|
4
|
+
class MysqlDbCreateTest < Test::Unit::TestCase
|
5
|
+
include AbstractDbCreate
|
6
|
+
|
7
|
+
def db_config
|
8
|
+
MYSQL_CONFIG
|
9
|
+
end
|
10
|
+
|
11
|
+
if find_executable?("mysql")
|
12
|
+
def test_rake_db_create
|
13
|
+
Rake::Task["db:create"].invoke
|
14
|
+
output = nil
|
15
|
+
IO.popen("mysql -u #{MYSQL_CONFIG[:username]} --password=#{MYSQL_CONFIG[:password]}", "r+") do |mysql|
|
16
|
+
mysql << "show databases where `Database` = '#{@db_name}';"
|
17
|
+
mysql.close_write
|
18
|
+
assert mysql.read =~ /#{@db_name}/m
|
19
|
+
end
|
20
|
+
end
|
21
|
+
else
|
22
|
+
def test_skipped
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'jdbc_common'
|
2
|
+
require 'db/mysql'
|
3
|
+
|
4
|
+
class Project < ActiveRecord::Migration
|
5
|
+
def self.up
|
6
|
+
create_table :project, :primary_key => "project_id" do |t|
|
7
|
+
t.string :projectType, :limit => 31
|
8
|
+
t.boolean :published
|
9
|
+
t.datetime :created_date
|
10
|
+
t.text :abstract, :title
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.down
|
15
|
+
drop_table :project
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
class MysqlNonstandardPrimaryKeyTest < Test::Unit::TestCase
|
21
|
+
|
22
|
+
def setup
|
23
|
+
Project.up
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
Project.down
|
28
|
+
end
|
29
|
+
|
30
|
+
def standard_dump
|
31
|
+
stream = StringIO.new
|
32
|
+
ActiveRecord::SchemaDumper.ignore_tables = []
|
33
|
+
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
|
34
|
+
stream.string
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_nonstandard_primary_key
|
38
|
+
output = standard_dump
|
39
|
+
assert_match %r(:primary_key => "project_id"), output, "non-standard primary key not preserved"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
data/test/mysql_simple_test.rb
CHANGED
@@ -19,6 +19,11 @@ class MysqlSimpleTest < Test::Unit::TestCase
|
|
19
19
|
assert_equal "a'a", s2
|
20
20
|
assert_equal "'a\\'a'", ActiveRecord::Base.connection.quote(s2)
|
21
21
|
end
|
22
|
+
|
23
|
+
def test_table_name_quoting_with_dot
|
24
|
+
s = "weblog_development.posts"
|
25
|
+
assert_equal "`weblog_development`.`posts`", ActiveRecord::Base.connection.quote_table_name(s)
|
26
|
+
end
|
22
27
|
end
|
23
28
|
|
24
29
|
class MysqlHasManyThroughTest < Test::Unit::TestCase
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'abstract_db_create'
|
2
|
+
require 'db/postgres'
|
3
|
+
|
4
|
+
class PostgresDbCreateTest < Test::Unit::TestCase
|
5
|
+
include AbstractDbCreate
|
6
|
+
|
7
|
+
def db_config
|
8
|
+
POSTGRES_CONFIG
|
9
|
+
end
|
10
|
+
|
11
|
+
if find_executable?("psql")
|
12
|
+
def test_rake_db_create
|
13
|
+
Rake::Task["db:create"].invoke
|
14
|
+
output = `psql -c '\\l'`
|
15
|
+
assert output =~ /#{@db_name}/m
|
16
|
+
end
|
17
|
+
else
|
18
|
+
def test_skipped
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'active_record'
|
3
|
+
require 'jdbc_common'
|
4
|
+
require 'db/postgres'
|
5
|
+
|
6
|
+
class CreateUrls < ActiveRecord::Migration
|
7
|
+
def self.up
|
8
|
+
create_table 'urls', :id => false do |t|
|
9
|
+
t.text :uhash, :null => false
|
10
|
+
t.text :url, :null => false
|
11
|
+
end
|
12
|
+
execute "ALTER TABLE urls ADD PRIMARY KEY (uhash)"
|
13
|
+
end
|
14
|
+
def self.down
|
15
|
+
drop_table 'urls'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Url < ActiveRecord::Base
|
20
|
+
set_primary_key :uhash
|
21
|
+
#Shouldn't be needed: set_sequence_name nil
|
22
|
+
end
|
23
|
+
|
24
|
+
class PostgresNonSeqPKey < Test::Unit::TestCase
|
25
|
+
def setup
|
26
|
+
CreateUrls.up
|
27
|
+
end
|
28
|
+
|
29
|
+
def teardown
|
30
|
+
CreateUrls.down
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_create
|
34
|
+
url = Url.create! do |u|
|
35
|
+
u.uhash = 'uhash'
|
36
|
+
u.url = 'http://url'
|
37
|
+
end
|
38
|
+
assert_equal( 'uhash', url.uhash )
|
39
|
+
end
|
40
|
+
end
|
data/test/simple.rb
CHANGED
@@ -10,6 +10,7 @@ module MigrationSetup
|
|
10
10
|
DbTypeMigration.up
|
11
11
|
CreateEntries.up
|
12
12
|
CreateAutoIds.up
|
13
|
+
CreateValidatesUniquenessOf.up
|
13
14
|
|
14
15
|
@connection = ActiveRecord::Base.connection
|
15
16
|
end
|
@@ -18,6 +19,7 @@ module MigrationSetup
|
|
18
19
|
DbTypeMigration.down
|
19
20
|
CreateEntries.down
|
20
21
|
CreateAutoIds.down
|
22
|
+
CreateValidatesUniquenessOf.down
|
21
23
|
ActiveRecord::Base.clear_active_connections!
|
22
24
|
end
|
23
25
|
end
|
@@ -47,6 +49,12 @@ module SimpleTestMethods
|
|
47
49
|
assert_equal 0, Entry.count
|
48
50
|
end
|
49
51
|
|
52
|
+
def test_find_with_string_slug
|
53
|
+
new_entry = Entry.create(:title => "Blah")
|
54
|
+
entry = Entry.find(new_entry.to_param)
|
55
|
+
assert_equal new_entry.id, entry.id
|
56
|
+
end
|
57
|
+
|
50
58
|
def test_insert_returns_id
|
51
59
|
unless ActiveRecord::Base.connection.adapter_name =~ /oracle/i
|
52
60
|
value = ActiveRecord::Base.connection.insert("INSERT INTO entries (title, content, rating) VALUES('insert_title', 'some content', 1)")
|
@@ -160,7 +168,7 @@ module SimpleTestMethods
|
|
160
168
|
e = DbType.find(:first)
|
161
169
|
assert_equal(true, e.sample_boolean)
|
162
170
|
end
|
163
|
-
|
171
|
+
|
164
172
|
def test_integer
|
165
173
|
# An unset boolean should default to nil
|
166
174
|
e = DbType.find(:first)
|
@@ -294,6 +302,59 @@ module SimpleTestMethods
|
|
294
302
|
AddNotNullColumnToTable.down
|
295
303
|
end
|
296
304
|
|
305
|
+
def test_validates_uniqueness_of_strings_case_sensitive
|
306
|
+
# MySQL string cmps are case-insensitive by default, so skip this test
|
307
|
+
return if ActiveRecord::Base.connection.config[:adapter] =~ /mysql/
|
308
|
+
|
309
|
+
name_lower = ValidatesUniquenessOfString.new(:cs_string => "name", :ci_string => '1')
|
310
|
+
name_lower.save!
|
311
|
+
|
312
|
+
name_upper = ValidatesUniquenessOfString.new(:cs_string => "NAME", :ci_string => '2')
|
313
|
+
assert_nothing_raised do
|
314
|
+
name_upper.save!
|
315
|
+
end
|
316
|
+
|
317
|
+
name_lower_collision = ValidatesUniquenessOfString.new(:cs_string => "name", :ci_string => '3')
|
318
|
+
assert_raise ActiveRecord::RecordInvalid do
|
319
|
+
name_lower_collision.save!
|
320
|
+
end
|
321
|
+
|
322
|
+
name_upper_collision = ValidatesUniquenessOfString.new(:cs_string => "NAME", :ci_string => '4')
|
323
|
+
assert_raise ActiveRecord::RecordInvalid do
|
324
|
+
name_upper_collision.save!
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def test_validates_uniqueness_of_strings_case_insensitive
|
329
|
+
name_lower = ValidatesUniquenessOfString.new(:cs_string => '1', :ci_string => "name")
|
330
|
+
name_lower.save!
|
331
|
+
|
332
|
+
name_upper = ValidatesUniquenessOfString.new(:cs_string => '2', :ci_string => "NAME")
|
333
|
+
assert_raise ActiveRecord::RecordInvalid do
|
334
|
+
name_upper.save!
|
335
|
+
end
|
336
|
+
|
337
|
+
name_lower_collision = ValidatesUniquenessOfString.new(:cs_string => '3', :ci_string => "name")
|
338
|
+
assert_raise ActiveRecord::RecordInvalid do
|
339
|
+
name_lower_collision.save!
|
340
|
+
end
|
341
|
+
|
342
|
+
alternate_name_upper = ValidatesUniquenessOfString.new(:cs_string => '4', :ci_string => "ALTERNATE_NAME")
|
343
|
+
assert_nothing_raised do
|
344
|
+
alternate_name_upper.save!
|
345
|
+
end
|
346
|
+
|
347
|
+
alternate_name_upper_collision = ValidatesUniquenessOfString.new(:cs_string => '5', :ci_string => "ALTERNATE_NAME")
|
348
|
+
assert_raise ActiveRecord::RecordInvalid do
|
349
|
+
alternate_name_upper_collision.save!
|
350
|
+
end
|
351
|
+
|
352
|
+
alternate_name_lower = ValidatesUniquenessOfString.new(:cs_string => '6', :ci_string => "alternate_name")
|
353
|
+
assert_raise ActiveRecord::RecordInvalid do
|
354
|
+
alternate_name_lower.save!
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
297
358
|
class ChangeEntriesTable < ActiveRecord::Migration
|
298
359
|
def self.up
|
299
360
|
change_table :entries do |t|
|
data/test/sqlite3_simple_test.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'jdbc_common'
|
2
2
|
require 'db/sqlite3'
|
3
3
|
require 'models/data_types'
|
4
|
+
require 'models/validates_uniqueness_of_string'
|
4
5
|
|
5
6
|
class SQLite3SimpleTest < Test::Unit::TestCase
|
6
7
|
include SimpleTestMethods
|
7
|
-
|
8
|
+
|
8
9
|
def test_recreate_database
|
9
10
|
assert @connection.tables.include?(Entry.table_name)
|
10
11
|
db = @connection.database_name
|
@@ -12,27 +13,169 @@ class SQLite3SimpleTest < Test::Unit::TestCase
|
|
12
13
|
assert (not @connection.tables.include? Entry.table_name)
|
13
14
|
self.setup # avoid teardown complaining
|
14
15
|
end
|
15
|
-
|
16
|
+
|
16
17
|
def test_execute_insert
|
17
18
|
assert_equal 1, Entry.count
|
18
19
|
id = @connection.execute "INSERT INTO entries (title, content) VALUES ('Execute Insert', 'This now works with SQLite3')"
|
19
20
|
assert_equal Entry.last.id, id
|
20
21
|
assert_equal 2, Entry.count
|
21
22
|
end
|
22
|
-
|
23
|
+
|
23
24
|
def test_execute_update
|
24
25
|
affected_rows = @connection.execute "UPDATE entries SET title = 'Execute Update' WHERE id = #{Entry.first.id}"
|
25
|
-
assert_equal 1, affected_rows
|
26
|
+
assert_equal 1, affected_rows
|
26
27
|
assert_equal 'Execute Update', Entry.first.title
|
27
28
|
end
|
28
|
-
|
29
|
+
|
29
30
|
def test_columns
|
30
31
|
cols = ActiveRecord::Base.connection.columns("entries")
|
31
32
|
assert cols.find {|col| col.name == "title"}
|
32
33
|
end
|
33
|
-
|
34
|
+
|
35
|
+
def test_remove_column
|
36
|
+
assert_nothing_raised do
|
37
|
+
ActiveRecord::Schema.define do
|
38
|
+
add_column "entries", "test_remove_column", :string
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
43
|
+
assert cols.find {|col| col.name == "test_remove_column"}
|
44
|
+
|
45
|
+
assert_nothing_raised do
|
46
|
+
ActiveRecord::Schema.define do
|
47
|
+
remove_column "entries", "test_remove_column"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
52
|
+
assert !cols.find {|col| col.name == "test_remove_column"}
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_rename_column
|
56
|
+
assert_nothing_raised do
|
57
|
+
ActiveRecord::Schema.define do
|
58
|
+
rename_column "entries", "title", "name"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
63
|
+
assert cols.find {|col| col.name == "name"}
|
64
|
+
assert !cols.find {|col| col.name == "title"}
|
65
|
+
|
66
|
+
assert_nothing_raised do
|
67
|
+
ActiveRecord::Schema.define do
|
68
|
+
rename_column "entries", "name", "title"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
73
|
+
assert cols.find {|col| col.name == "title"}
|
74
|
+
assert !cols.find {|col| col.name == "name"}
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_rename_column_preserves_content
|
78
|
+
post = Entry.find(:first)
|
79
|
+
assert_equal @title, post.title
|
80
|
+
assert_equal @content, post.content
|
81
|
+
assert_equal @rating, post.rating
|
82
|
+
|
83
|
+
assert_nothing_raised do
|
84
|
+
ActiveRecord::Schema.define do
|
85
|
+
rename_column "entries", "title", "name"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
post = Entry.find(:first)
|
90
|
+
assert_equal @title, post.name
|
91
|
+
assert_equal @content, post.content
|
92
|
+
assert_equal @rating, post.rating
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_rename_column_preserves_index
|
96
|
+
assert_equal(0, @connection.indexes(:entries).size)
|
97
|
+
|
98
|
+
index_name = "entries_index"
|
99
|
+
|
100
|
+
assert_nothing_raised do
|
101
|
+
ActiveRecord::Schema.define do
|
102
|
+
add_index "entries", "title", :name => index_name
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
indexes = @connection.indexes(:entries)
|
107
|
+
assert_equal(1, indexes.size)
|
108
|
+
assert_equal "entries", indexes.first.table.to_s
|
109
|
+
assert_equal index_name, indexes.first.name
|
110
|
+
assert !indexes.first.unique
|
111
|
+
assert_equal ["title"], indexes.first.columns
|
112
|
+
|
113
|
+
assert_nothing_raised do
|
114
|
+
ActiveRecord::Schema.define do
|
115
|
+
rename_column "entries", "title", "name"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
indexes = @connection.indexes(:entries)
|
120
|
+
assert_equal(1, indexes.size)
|
121
|
+
assert_equal "entries", indexes.first.table.to_s
|
122
|
+
assert_equal index_name, indexes.first.name
|
123
|
+
assert !indexes.first.unique
|
124
|
+
assert_equal ["name"], indexes.first.columns
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_change_column_default
|
128
|
+
assert_nothing_raised do
|
129
|
+
ActiveRecord::Schema.define do
|
130
|
+
add_column "entries", "test_change_column_default", :string, :default => "unchanged"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
135
|
+
col = cols.find{|col| col.name == "test_change_column_default"}
|
136
|
+
assert col
|
137
|
+
assert_equal col.default, 'unchanged'
|
138
|
+
|
139
|
+
assert_nothing_raised do
|
140
|
+
ActiveRecord::Schema.define do
|
141
|
+
change_column_default "entries", "test_change_column_default", "changed"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
146
|
+
col = cols.find{|col| col.name == "test_change_column_default"}
|
147
|
+
assert col
|
148
|
+
assert_equal col.default, 'changed'
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_change_column
|
152
|
+
assert_nothing_raised do
|
153
|
+
ActiveRecord::Schema.define do
|
154
|
+
add_column "entries", "test_change_column", :string
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
159
|
+
col = cols.find{|col| col.name == "test_change_column"}
|
160
|
+
assert col
|
161
|
+
assert_equal col.type, :string
|
162
|
+
|
163
|
+
assert_nothing_raised do
|
164
|
+
ActiveRecord::Schema.define do
|
165
|
+
change_column "entries", "test_change_column", :integer
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
cols = ActiveRecord::Base.connection.columns("entries")
|
170
|
+
col = cols.find{|col| col.name == "test_change_column"}
|
171
|
+
assert col
|
172
|
+
assert_equal col.type, :integer
|
173
|
+
end
|
174
|
+
|
34
175
|
end
|
35
|
-
|
176
|
+
|
177
|
+
# assert_raise ActiveRecord::RecordInvalid do
|
178
|
+
|
36
179
|
class SQLite3HasManyThroughTest < Test::Unit::TestCase
|
37
180
|
include HasManyThroughMethods
|
38
181
|
end
|
@@ -42,7 +185,7 @@ if jruby?
|
|
42
185
|
else
|
43
186
|
JInteger = Fixnum
|
44
187
|
class Fixnum
|
45
|
-
# Arbitrary value...we could pick
|
188
|
+
# Arbitrary value...we could pick
|
46
189
|
MAX_VALUE = 2
|
47
190
|
end
|
48
191
|
end
|
@@ -51,7 +194,7 @@ class SQLite3TypeConversionTest < Test::Unit::TestCase
|
|
51
194
|
TEST_TIME = Time.at(1169964202)
|
52
195
|
TEST_BINARY = "Some random binary data % \0 and then some"
|
53
196
|
def setup
|
54
|
-
DbTypeMigration.up
|
197
|
+
DbTypeMigration.up
|
55
198
|
DbType.create(
|
56
199
|
:sample_timestamp => TEST_TIME,
|
57
200
|
:sample_datetime => TEST_TIME,
|
@@ -80,7 +223,7 @@ class SQLite3TypeConversionTest < Test::Unit::TestCase
|
|
80
223
|
types = DbType.find(:first)
|
81
224
|
assert_equal(3, DbType.columns_hash["sample_small_decimal"].precision)
|
82
225
|
end
|
83
|
-
|
226
|
+
|
84
227
|
def test_binary
|
85
228
|
types = DbType.find(:first)
|
86
229
|
assert_equal(TEST_BINARY, types.sample_binary)
|