提交 8b0753b4 编写于 作者: R Rafael Mendonça França

Merge pull request #15916 from sgrif/sg-test-update-all

Consolidate testing of update_all type casting
...@@ -192,16 +192,6 @@ def test_attribute_for_inspect_for_array_field ...@@ -192,16 +192,6 @@ def test_attribute_for_inspect_for_array_field
assert_equal("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...]", record.attribute_for_inspect(:ratings)) assert_equal("[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...]", record.attribute_for_inspect(:ratings))
end end
def test_update_all
pg_array = PgArray.create! tags: ["one", "two", "three"]
PgArray.update_all tags: ["four", "five"]
assert_equal ["four", "five"], pg_array.reload.tags
PgArray.update_all tags: []
assert_equal [], pg_array.reload.tags
end
def test_escaping def test_escaping
unknown = 'foo\\",bar,baz,\\' unknown = 'foo\\",bar,baz,\\'
tags = ["hello_#{unknown}"] tags = ["hello_#{unknown}"]
......
...@@ -295,16 +295,6 @@ def test_multiline ...@@ -295,16 +295,6 @@ def test_multiline
assert_cycle("a\nb" => "c\nd") assert_cycle("a\nb" => "c\nd")
end end
def test_update_all
hstore = Hstore.create! tags: { "one" => "two" }
Hstore.update_all tags: { "three" => "four" }
assert_equal({ "three" => "four" }, hstore.reload.tags)
Hstore.update_all tags: { }
assert_equal({ }, hstore.reload.tags)
end
class TagCollection class TagCollection
def initialize(hash); @hash = hash end def initialize(hash); @hash = hash end
def to_hash; @hash end def to_hash; @hash end
......
...@@ -155,16 +155,6 @@ def test_yaml_round_trip_with_store_accessors ...@@ -155,16 +155,6 @@ def test_yaml_round_trip_with_store_accessors
assert_equal "320×480", y.resolution assert_equal "320×480", y.resolution
end end
def test_update_all
json = JsonDataType.create! payload: { "one" => "two" }
JsonDataType.update_all payload: { "three" => "four" }
assert_equal({ "three" => "four" }, json.reload.payload)
JsonDataType.update_all payload: { }
assert_equal({ }, json.reload.payload)
end
def test_changes_in_place def test_changes_in_place
json = JsonDataType.new json = JsonDataType.new
assert_not json.changed? assert_not json.changed?
......
...@@ -235,5 +235,33 @@ def test_relation_merging_with_merged_joins_as_strings ...@@ -235,5 +235,33 @@ def test_relation_merging_with_merged_joins_as_strings
posts_with_special_comments_with_ratings = Post.group("posts.id").joins(:special_comments).merge(special_comments_with_ratings) posts_with_special_comments_with_ratings = Post.group("posts.id").joins(:special_comments).merge(special_comments_with_ratings)
assert_equal 3, authors(:david).posts.merge(posts_with_special_comments_with_ratings).count.length assert_equal 3, authors(:david).posts.merge(posts_with_special_comments_with_ratings).count.length
end end
class EnsureRoundTripTypeCasting < ActiveRecord::Type::Value
def type
:string
end
def type_cast_from_database(value)
raise value unless value == "type cast for database"
"type cast from database"
end
def type_cast_for_database(value)
raise value unless value == "value from user"
"type cast for database"
end
end
class UpdateAllTestModel < ActiveRecord::Base
self.table_name = 'posts'
attribute :body, EnsureRoundTripTypeCasting.new
end
def test_update_all_goes_through_normal_type_casting
UpdateAllTestModel.update_all(body: "value from user", type: nil) # No STI
assert_equal "type cast from database", UpdateAllTestModel.first.body
end
end end
end end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册