activerecord 1.11.1 → 1.12.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (102) hide show
  1. data/CHANGELOG +198 -0
  2. data/lib/active_record.rb +19 -14
  3. data/lib/active_record/acts/list.rb +8 -6
  4. data/lib/active_record/acts/tree.rb +33 -10
  5. data/lib/active_record/aggregations.rb +1 -7
  6. data/lib/active_record/associations.rb +151 -82
  7. data/lib/active_record/associations/association_collection.rb +25 -0
  8. data/lib/active_record/associations/association_proxy.rb +9 -8
  9. data/lib/active_record/associations/belongs_to_association.rb +19 -5
  10. data/lib/active_record/associations/has_and_belongs_to_many_association.rb +44 -69
  11. data/lib/active_record/associations/has_many_association.rb +6 -14
  12. data/lib/active_record/associations/has_one_association.rb +5 -3
  13. data/lib/active_record/base.rb +344 -130
  14. data/lib/active_record/callbacks.rb +2 -2
  15. data/lib/active_record/connection_adapters/abstract/connection_specification.rb +128 -0
  16. data/lib/active_record/connection_adapters/abstract/database_statements.rb +104 -0
  17. data/lib/active_record/connection_adapters/abstract/quoting.rb +51 -0
  18. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +249 -0
  19. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +245 -0
  20. data/lib/active_record/connection_adapters/abstract_adapter.rb +29 -464
  21. data/lib/active_record/connection_adapters/db2_adapter.rb +40 -10
  22. data/lib/active_record/connection_adapters/mysql_adapter.rb +131 -60
  23. data/lib/active_record/connection_adapters/oci_adapter.rb +106 -26
  24. data/lib/active_record/connection_adapters/postgresql_adapter.rb +211 -62
  25. data/lib/active_record/connection_adapters/sqlite_adapter.rb +193 -44
  26. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +24 -15
  27. data/lib/active_record/fixtures.rb +47 -24
  28. data/lib/active_record/migration.rb +34 -5
  29. data/lib/active_record/observer.rb +32 -2
  30. data/lib/active_record/query_cache.rb +12 -11
  31. data/lib/active_record/schema.rb +58 -0
  32. data/lib/active_record/schema_dumper.rb +84 -0
  33. data/lib/active_record/transactions.rb +1 -3
  34. data/lib/active_record/validations.rb +40 -26
  35. data/lib/active_record/vendor/mysql.rb +6 -0
  36. data/lib/active_record/version.rb +9 -0
  37. data/rakefile +5 -16
  38. data/test/abstract_unit.rb +6 -11
  39. data/test/adapter_test.rb +58 -0
  40. data/test/ar_schema_test.rb +33 -0
  41. data/test/association_callbacks_test.rb +14 -0
  42. data/test/associations_go_eager_test.rb +56 -14
  43. data/test/associations_test.rb +245 -25
  44. data/test/base_test.rb +205 -34
  45. data/test/binary_test.rb +25 -42
  46. data/test/callbacks_test.rb +75 -0
  47. data/test/conditions_scoping_test.rb +136 -0
  48. data/test/connections/native_mysql/connection.rb +0 -4
  49. data/test/connections/native_sqlite3/in_memory_connection.rb +17 -0
  50. data/test/copy_table_sqlite.rb +64 -0
  51. data/test/deprecated_associations_test.rb +7 -6
  52. data/test/deprecated_finder_test.rb +3 -3
  53. data/test/finder_test.rb +33 -3
  54. data/test/fixtures/accounts.yml +5 -0
  55. data/test/fixtures/categories_ordered.yml +7 -0
  56. data/test/fixtures/category.rb +11 -1
  57. data/test/fixtures/comment.rb +22 -2
  58. data/test/fixtures/comments.yml +6 -0
  59. data/test/fixtures/companies.yml +15 -0
  60. data/test/fixtures/company.rb +24 -1
  61. data/test/fixtures/db_definitions/db2.drop.sql +5 -1
  62. data/test/fixtures/db_definitions/db2.sql +15 -1
  63. data/test/fixtures/db_definitions/mysql.drop.sql +2 -0
  64. data/test/fixtures/db_definitions/mysql.sql +17 -2
  65. data/test/fixtures/db_definitions/oci.drop.sql +37 -5
  66. data/test/fixtures/db_definitions/oci.sql +47 -4
  67. data/test/fixtures/db_definitions/oci2.drop.sql +1 -1
  68. data/test/fixtures/db_definitions/oci2.sql +2 -2
  69. data/test/fixtures/db_definitions/postgresql.drop.sql +4 -0
  70. data/test/fixtures/db_definitions/postgresql.sql +33 -4
  71. data/test/fixtures/db_definitions/sqlite.drop.sql +2 -0
  72. data/test/fixtures/db_definitions/sqlite.sql +16 -2
  73. data/test/fixtures/db_definitions/sqlserver.drop.sql +2 -0
  74. data/test/fixtures/db_definitions/sqlserver.sql +16 -2
  75. data/test/fixtures/developer.rb +1 -1
  76. data/test/fixtures/flowers.jpg +0 -0
  77. data/test/fixtures/keyboard.rb +3 -0
  78. data/test/fixtures/mixins.yml +11 -1
  79. data/test/fixtures/order.rb +4 -0
  80. data/test/fixtures/post.rb +4 -0
  81. data/test/fixtures/posts.yml +7 -0
  82. data/test/fixtures/project.rb +1 -0
  83. data/test/fixtures/subject.rb +4 -0
  84. data/test/fixtures/subscriber.rb +2 -4
  85. data/test/fixtures/topics.yml +2 -2
  86. data/test/fixtures_test.rb +79 -7
  87. data/test/inheritance_test.rb +2 -2
  88. data/test/lifecycle_test.rb +14 -6
  89. data/test/migration_test.rb +164 -6
  90. data/test/mixin_test.rb +78 -2
  91. data/test/pk_test.rb +25 -1
  92. data/test/readonly_test.rb +31 -0
  93. data/test/reflection_test.rb +4 -1
  94. data/test/schema_dumper_test.rb +19 -0
  95. data/test/schema_test_postgresql.rb +3 -2
  96. data/test/synonym_test_oci.rb +17 -0
  97. data/test/threaded_connections_test.rb +2 -1
  98. data/test/transactions_test.rb +109 -10
  99. data/test/validations_test.rb +70 -42
  100. metadata +25 -5
  101. data/test/fixtures/associations.png +0 -0
  102. data/test/thread_safety_test.rb +0 -36
@@ -28,7 +28,10 @@ class ReflectionTest < Test::Unit::TestCase
28
28
  end
29
29
 
30
30
  def test_content_columns
31
- assert_equal 8, Topic.content_columns.length
31
+ content_columns = Topic.content_columns
32
+ content_column_names = content_columns.map {|column| column.name}
33
+ assert_equal 8, content_columns.length
34
+ assert_equal %w(title author_name author_email_address written_on bonus_time last_read content approved).sort, content_column_names.sort
32
35
  end
33
36
 
34
37
  def test_column_string_type_and_limit
@@ -0,0 +1,19 @@
1
+ require 'abstract_unit'
2
+ require "#{File.dirname(__FILE__)}/../lib/active_record/schema_dumper"
3
+ require 'stringio'
4
+
5
+ if ActiveRecord::Base.connection.respond_to?(:tables)
6
+
7
+ class SchemaDumperTest < Test::Unit::TestCase
8
+ def test_schema_dump
9
+ stream = StringIO.new
10
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
11
+ output = stream.string
12
+
13
+ assert_match %r{create_table "accounts"}, output
14
+ assert_match %r{create_table "authors"}, output
15
+ assert_no_match %r{create_table "schema_info"}, output
16
+ end
17
+ end
18
+
19
+ end
@@ -1,6 +1,8 @@
1
1
  require 'abstract_unit'
2
2
 
3
3
  class SchemaTest < Test::Unit::TestCase
4
+ self.use_transactional_fixtures = false
5
+
4
6
  SCHEMA_NAME = 'test_schema'
5
7
  TABLE_NAME = 'things'
6
8
  COLUMNS = [
@@ -15,8 +17,7 @@ class SchemaTest < Test::Unit::TestCase
15
17
  end
16
18
 
17
19
  def teardown
18
- @connection.execute "DROP TABLE #{SCHEMA_NAME}.#{TABLE_NAME}"
19
- @connection.execute "DROP SCHEMA #{SCHEMA_NAME}"
20
+ @connection.execute "DROP SCHEMA #{SCHEMA_NAME} CASCADE"
20
21
  end
21
22
 
22
23
  def test_with_schema_prefixed_table_name
@@ -0,0 +1,17 @@
1
+ require 'abstract_unit'
2
+ require 'fixtures/topic'
3
+ require 'fixtures/subject'
4
+
5
+ # confirm that synonyms work just like tables; in this case
6
+ # the "subjects" table in Oracle (defined in oci.sql) is just
7
+ # a synonym to the "topics" table
8
+
9
+ class TestOracleSynonym < Test::Unit::TestCase
10
+
11
+ def test_oracle_synonym
12
+ topic = Topic.new
13
+ subject = Subject.new
14
+ assert_equal(topic.attributes, subject.attributes)
15
+ end
16
+
17
+ end
@@ -1,4 +1,5 @@
1
1
  require 'abstract_unit'
2
+ require 'fixtures/topic'
2
3
 
3
4
  class ThreadedConnectionsTest < Test::Unit::TestCase
4
5
  self.use_transactional_fixtures = false
@@ -11,7 +12,7 @@ class ThreadedConnectionsTest < Test::Unit::TestCase
11
12
  end
12
13
 
13
14
  def gather_connections(use_threaded_connections)
14
- ActiveRecord::Base.threaded_connections = use_threaded_connections
15
+ ActiveRecord::Base.allow_concurrency = use_threaded_connections
15
16
  ActiveRecord::Base.establish_connection(@connection)
16
17
 
17
18
  5.times do
@@ -1,11 +1,11 @@
1
1
  require 'abstract_unit'
2
2
  require 'fixtures/topic'
3
-
3
+ require 'fixtures/developer'
4
4
 
5
5
  class TransactionTest < Test::Unit::TestCase
6
6
  self.use_transactional_fixtures = false
7
7
 
8
- fixtures :topics
8
+ fixtures :topics, :developers
9
9
 
10
10
  def setup
11
11
  # sqlite does not seem to return these in the right order, so we sort them
@@ -15,20 +15,51 @@ class TransactionTest < Test::Unit::TestCase
15
15
 
16
16
  def test_successful
17
17
  Topic.transaction do
18
- @first.approved = 1
19
- @second.approved = 0
18
+ @first.approved = true
19
+ @second.approved = false
20
+ @first.save
21
+ @second.save
22
+ end
23
+
24
+ assert Topic.find(1).approved?, "First should have been approved"
25
+ assert !Topic.find(2).approved?, "Second should have been unapproved"
26
+ end
27
+
28
+ def transaction_with_return
29
+ Topic.transaction do
30
+ @first.approved = true
31
+ @second.approved = false
20
32
  @first.save
21
33
  @second.save
34
+ return
22
35
  end
36
+ end
37
+
38
+ def test_successful_with_return
39
+ class << Topic.connection
40
+ alias :real_commit_db_transaction :commit_db_transaction
41
+ def commit_db_transaction
42
+ $committed = true
43
+ real_commit_db_transaction
44
+ end
45
+ end
46
+
47
+ $committed = false
48
+ transaction_with_return
49
+ assert $committed
23
50
 
24
51
  assert Topic.find(1).approved?, "First should have been approved"
25
52
  assert !Topic.find(2).approved?, "Second should have been unapproved"
53
+ ensure
54
+ class << Topic.connection
55
+ alias :commit_db_transaction :real_commit_db_transaction rescue nil
56
+ end
26
57
  end
27
58
 
28
59
  def test_successful_with_instance_method
29
60
  @first.transaction do
30
- @first.approved = 1
31
- @second.approved = 0
61
+ @first.approved = true
62
+ @second.approved = false
32
63
  @first.save
33
64
  @second.save
34
65
  end
@@ -36,7 +67,7 @@ class TransactionTest < Test::Unit::TestCase
36
67
  assert Topic.find(1).approved?, "First should have been approved"
37
68
  assert !Topic.find(2).approved?, "Second should have been unapproved"
38
69
  end
39
-
70
+
40
71
  def test_failing_on_exception
41
72
  begin
42
73
  Topic.transaction do
@@ -94,8 +125,8 @@ class TransactionTest < Test::Unit::TestCase
94
125
  def test_nested_explicit_transactions
95
126
  Topic.transaction do
96
127
  Topic.transaction do
97
- @first.approved = 1
98
- @second.approved = 0
128
+ @first.approved = true
129
+ @second.approved = false
99
130
  @first.save
100
131
  @second.save
101
132
  end
@@ -104,7 +135,75 @@ class TransactionTest < Test::Unit::TestCase
104
135
  assert Topic.find(1).approved?, "First should have been approved"
105
136
  assert !Topic.find(2).approved?, "Second should have been unapproved"
106
137
  end
107
-
138
+
139
+ # This will cause transactions to overlap and fail unless they are
140
+ # performed on separate database connections.
141
+ def test_transaction_per_thread
142
+ assert_nothing_raised do
143
+ threads = (1..20).map do
144
+ Thread.new do
145
+ Topic.transaction do
146
+ topic = Topic.find(:first)
147
+ topic.approved = !topic.approved?
148
+ topic.save!
149
+ topic.approved = !topic.approved?
150
+ topic.save!
151
+ end
152
+ end
153
+ end
154
+
155
+ threads.each { |t| t.join }
156
+ end
157
+ end
158
+
159
+ # Test for dirty reads among simultaneous transactions.
160
+ def test_transaction_isolation__read_committed
161
+ # Should be invariant.
162
+ original_salary = Developer.find(1).salary
163
+ temporary_salary = 200000
164
+
165
+ assert_nothing_raised do
166
+ threads = (1..20).map do
167
+ Thread.new do
168
+ Developer.transaction do
169
+ # Expect original salary.
170
+ dev = Developer.find(1)
171
+ assert_equal original_salary, dev.salary
172
+
173
+ dev.salary = temporary_salary
174
+ dev.save!
175
+
176
+ # Expect temporary salary.
177
+ dev = Developer.find(1)
178
+ assert_equal temporary_salary, dev.salary
179
+
180
+ dev.salary = original_salary
181
+ dev.save!
182
+
183
+ # Expect original salary.
184
+ dev = Developer.find(1)
185
+ assert_equal original_salary, dev.salary
186
+ end
187
+ end
188
+ end
189
+
190
+ # Keep our eyes peeled.
191
+ threads << Thread.new do
192
+ 10.times do
193
+ sleep 0.05
194
+ Developer.transaction do
195
+ # Always expect original salary.
196
+ assert_equal original_salary, Developer.find(1).salary
197
+ end
198
+ end
199
+ end
200
+
201
+ threads.each { |t| t.join }
202
+ end
203
+
204
+ assert_equal original_salary, Developer.find(1).salary
205
+ end
206
+
108
207
 
109
208
  private
110
209
  def add_exception_raising_after_save_callback_to_topic
@@ -396,15 +396,20 @@ class ValidationsTest < Test::Unit::TestCase
396
396
  def test_validates_length_of_using_within
397
397
  Topic.validates_length_of(:title, :content, :within => 3..5)
398
398
 
399
- t = Topic.create("title" => "a!", "content" => "I'm ooooooooh so very long")
400
- assert !t.save
401
-
399
+ t = Topic.new("title" => "a!", "content" => "I'm ooooooooh so very long")
400
+ assert !t.valid?
402
401
  assert_equal "is too short (min is 3 characters)", t.errors.on(:title)
403
402
  assert_equal "is too long (max is 5 characters)", t.errors.on(:content)
404
403
 
404
+ t.title = nil
405
+ t.content = nil
406
+ assert !t.valid?
407
+ assert_equal "is too short (min is 3 characters)", t.errors.on(:title)
408
+ assert_equal "is too short (min is 3 characters)", t.errors.on(:content)
409
+
405
410
  t.title = "abe"
406
411
  t.content = "mad"
407
- assert t.save
412
+ assert t.valid?
408
413
  end
409
414
 
410
415
  def test_optionally_validates_length_of_using_within
@@ -702,43 +707,6 @@ class ValidationsTest < Test::Unit::TestCase
702
707
  assert_equal r.errors.on(:topic).first, "This string contains 'single' and \"double\" quotes"
703
708
  end
704
709
 
705
- def test_validates_numericality_of_with_string
706
- Topic.validates_numericality_of( :approved )
707
- ["not a number","42 not a number","0xdeadbeef","00-1","-+019.0","12.12.13.12",nil].each do |v|
708
- t = Topic.create("title" => "numeric test", "content" => "whatever", "approved" => "not a number")
709
- assert !t.valid?, "#{v} not rejected as a number"
710
- assert t.errors.on(:approved)
711
- end
712
- end
713
-
714
- def test_validates_numericality_of
715
- Topic.validates_numericality_of( :approved, :allow_nil => true )
716
- ["10", "10.0", "10.5", "-10.5", "-0.0001","0090","-090","-090.1",nil,""].each do |v|
717
- t = Topic.new("title" => "numeric test", "content" => "whatever", "approved" => v)
718
- assert t.valid?, "#{v} not recognized as a number"
719
- # we cannot check this as approved is actually an integer field
720
- #assert_in_delta v.to_f, t.approved, 0.0000001
721
- end
722
- end
723
-
724
- def test_validates_numericality_of_int_with_string
725
- Topic.validates_numericality_of( :approved, :only_integer => true )
726
- ["not a number","42 not a number","0xdeadbeef","0-1","--3","+-3","+3-1",nil].each do |v|
727
- t = Topic.create("title" => "numeric test", "content" => "whatever", "approved" => v)
728
- assert !t.valid?, "#{v} not rejected as integer"
729
- assert t.errors.on(:approved)
730
- end
731
- end
732
-
733
- def test_validates_numericality_of_int
734
- Topic.validates_numericality_of( :approved, :only_integer => true, :allow_nil => true )
735
- ["42", "+42", "-42", "042", "0042", "-042", 42, nil,""].each do |v|
736
- t = Topic.new("title" => "numeric test", "content" => "whatever", "approved" => v)
737
- assert t.valid?, "#{v} not recognized as integer"
738
- assert_equal((v.nil? or v == "")? nil : v.to_i, t.approved)
739
- end
740
- end
741
-
742
710
  def test_conditional_validation_using_method_true
743
711
  # When the method returns true
744
712
  Topic.validates_length_of( :title, :maximum=>5, :too_long=>"hoo %d", :if => :condition_is_true )
@@ -801,4 +769,64 @@ class ValidationsTest < Test::Unit::TestCase
801
769
  r.topic = Topic.find :first
802
770
  assert r.valid?
803
771
  end
804
- end
772
+ end
773
+
774
+
775
+ class ValidatesNumericalityTest
776
+ NIL = [nil, "", " ", " \t \r \n"]
777
+ FLOAT_STRINGS = %w(0.0 +0.0 -0.0 10.0 10.5 -10.5 -0.0001 -090.1)
778
+ INTEGER_STRINGS = %w(0 +0 -0 10 +10 -10 0090 -090)
779
+ FLOATS = [0.0, 10.0, 10.5, -10.5, -0.0001] + FLOAT_STRINGS
780
+ INTEGERS = [0, 10, -10] + INTEGER_STRINGS
781
+ JUNK = ["not a number", "42 not a number", "0xdeadbeef", "00-1", "--3", "+-3", "+3-1", "-+019.0", "12.12.13.12"]
782
+
783
+ def setup
784
+ Topic.write_inheritable_attribute(:validate, nil)
785
+ Topic.write_inheritable_attribute(:validate_on_create, nil)
786
+ Topic.write_inheritable_attribute(:validate_on_update, nil)
787
+ end
788
+
789
+ def test_default_validates_numericality_of
790
+ Topic.validates_numericality_of :approved
791
+
792
+ invalid!(NIL + JUNK)
793
+ valid!(FLOATS + INTEGERS)
794
+ end
795
+
796
+ def test_validates_numericality_of_with_nil_allowed
797
+ Topic.validates_numericality_of :approved, :allow_nil => true
798
+
799
+ invalid!(JUNK)
800
+ valid!(NIL + FLOATS + INTEGERS)
801
+ end
802
+
803
+ def test_validates_numericality_of_with_integer_only
804
+ Topic.validates_numericality_of :approved, :only_integer => true
805
+
806
+ invalid!(NIL + JUNK + FLOATS)
807
+ valid!(INTEGERS)
808
+ end
809
+
810
+ def test_validates_numericality_of_with_integer_only_and_nil_allowed
811
+ Topic.validates_numericality_of :approved, :only_integer => true, :allow_nil => true
812
+
813
+ invalid!(JUNK + FLOATS)
814
+ valid!(NIL + INTEGERS)
815
+ end
816
+
817
+ private
818
+ def invalid!(values)
819
+ values.each do |value|
820
+ topic = Topic.create("title" => "numeric test", "content" => "whatever", "approved" => value)
821
+ assert !topic.valid?, "#{value} not rejected as a number"
822
+ assert topic.errors.on(:approved)
823
+ end
824
+ end
825
+
826
+ def valid!(values)
827
+ values.each do |value|
828
+ topic = Topic.create("title" => "numeric test", "content" => "whatever", "approved" => value)
829
+ assert topic.valid?, "#{value} not accepted as a number"
830
+ end
831
+ end
832
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: activerecord
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.11.1
7
- date: 2005-07-11
6
+ version: 1.12.1
7
+ date: 2005-10-19
8
8
  summary: Implements the ActiveRecord pattern for ORM.
9
9
  require_paths:
10
10
  - lib
@@ -51,10 +51,13 @@ files:
51
51
  - lib/active_record/observer.rb
52
52
  - lib/active_record/query_cache.rb
53
53
  - lib/active_record/reflection.rb
54
+ - lib/active_record/schema.rb
55
+ - lib/active_record/schema_dumper.rb
54
56
  - lib/active_record/timestamp.rb
55
57
  - lib/active_record/transactions.rb
56
58
  - lib/active_record/validations.rb
57
59
  - lib/active_record/vendor
60
+ - lib/active_record/version.rb
58
61
  - lib/active_record/wrappers
59
62
  - lib/active_record/wrappings.rb
60
63
  - lib/active_record/acts/list.rb
@@ -66,6 +69,7 @@ files:
66
69
  - lib/active_record/associations/has_and_belongs_to_many_association.rb
67
70
  - lib/active_record/associations/has_many_association.rb
68
71
  - lib/active_record/associations/has_one_association.rb
72
+ - lib/active_record/connection_adapters/abstract
69
73
  - lib/active_record/connection_adapters/abstract_adapter.rb
70
74
  - lib/active_record/connection_adapters/db2_adapter.rb
71
75
  - lib/active_record/connection_adapters/mysql_adapter.rb
@@ -73,6 +77,11 @@ files:
73
77
  - lib/active_record/connection_adapters/postgresql_adapter.rb
74
78
  - lib/active_record/connection_adapters/sqlite_adapter.rb
75
79
  - lib/active_record/connection_adapters/sqlserver_adapter.rb
80
+ - lib/active_record/connection_adapters/abstract/connection_specification.rb
81
+ - lib/active_record/connection_adapters/abstract/database_statements.rb
82
+ - lib/active_record/connection_adapters/abstract/quoting.rb
83
+ - lib/active_record/connection_adapters/abstract/schema_definitions.rb
84
+ - lib/active_record/connection_adapters/abstract/schema_statements.rb
76
85
  - lib/active_record/vendor/db2.rb
77
86
  - lib/active_record/vendor/mysql.rb
78
87
  - lib/active_record/vendor/mysql411.rb
@@ -81,8 +90,10 @@ files:
81
90
  - test/aaa_create_tables_test.rb
82
91
  - test/abstract_unit.rb
83
92
  - test/active_schema_mysql.rb
93
+ - test/adapter_test.rb
84
94
  - test/aggregations_test.rb
85
95
  - test/all.sh
96
+ - test/ar_schema_test.rb
86
97
  - test/association_callbacks_test.rb
87
98
  - test/association_inheritance_reload.rb
88
99
  - test/associations_go_eager_test.rb
@@ -92,7 +103,9 @@ files:
92
103
  - test/callbacks_test.rb
93
104
  - test/class_inheritable_attributes_test.rb
94
105
  - test/column_alias_test.rb
106
+ - test/conditions_scoping_test.rb
95
107
  - test/connections
108
+ - test/copy_table_sqlite.rb
96
109
  - test/deprecated_associations_test.rb
97
110
  - test/deprecated_finder_test.rb
98
111
  - test/finder_test.rb
@@ -107,9 +120,11 @@ files:
107
120
  - test/modules_test.rb
108
121
  - test/multiple_db_test.rb
109
122
  - test/pk_test.rb
123
+ - test/readonly_test.rb
110
124
  - test/reflection_test.rb
125
+ - test/schema_dumper_test.rb
111
126
  - test/schema_test_postgresql.rb
112
- - test/thread_safety_test.rb
127
+ - test/synonym_test_oci.rb
113
128
  - test/threaded_connections_test.rb
114
129
  - test/transactions_test.rb
115
130
  - test/unconnected_test.rb
@@ -128,16 +143,17 @@ files:
128
143
  - test/connections/native_postgresql/connection.rb
129
144
  - test/connections/native_sqlite/connection.rb
130
145
  - test/connections/native_sqlite3/connection.rb
146
+ - test/connections/native_sqlite3/in_memory_connection.rb
131
147
  - test/connections/native_sqlserver/connection.rb
132
148
  - test/connections/native_sqlserver_odbc/connection.rb
133
149
  - test/fixtures/accounts.yml
134
- - test/fixtures/associations.png
135
150
  - test/fixtures/author.rb
136
151
  - test/fixtures/authors.yml
137
152
  - test/fixtures/auto_id.rb
138
153
  - test/fixtures/bad_fixtures
139
154
  - test/fixtures/binary.rb
140
155
  - test/fixtures/categories.yml
156
+ - test/fixtures/categories_ordered.yml
141
157
  - test/fixtures/categories_posts.yml
142
158
  - test/fixtures/category.rb
143
159
  - test/fixtures/column_name.rb
@@ -162,12 +178,15 @@ files:
162
178
  - test/fixtures/entrants.yml
163
179
  - test/fixtures/fk_test_has_fk.yml
164
180
  - test/fixtures/fk_test_has_pk.yml
181
+ - test/fixtures/flowers.jpg
182
+ - test/fixtures/keyboard.rb
165
183
  - test/fixtures/migrations
166
184
  - test/fixtures/mixin.rb
167
185
  - test/fixtures/mixins.yml
168
186
  - test/fixtures/movie.rb
169
187
  - test/fixtures/movies.yml
170
188
  - test/fixtures/naked
189
+ - test/fixtures/order.rb
171
190
  - test/fixtures/people.yml
172
191
  - test/fixtures/person.rb
173
192
  - test/fixtures/post.rb
@@ -175,6 +194,7 @@ files:
175
194
  - test/fixtures/project.rb
176
195
  - test/fixtures/projects.yml
177
196
  - test/fixtures/reply.rb
197
+ - test/fixtures/subject.rb
178
198
  - test/fixtures/subscriber.rb
179
199
  - test/fixtures/subscribers
180
200
  - test/fixtures/task.rb
@@ -248,5 +268,5 @@ dependencies:
248
268
  -
249
269
  - "="
250
270
  - !ruby/object:Gem::Version
251
- version: 1.1.1
271
+ version: 1.2.1
252
272
  version: