Skip to content

Commit

Permalink
test that ActiveRecord destroy and destroy_all return destroyed r…
Browse files Browse the repository at this point in the history
…ecords

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
  • Loading branch information
mislav authored and jeremy committed Jul 8, 2010
1 parent ba9c469 commit 2d3bc99
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 12 deletions.
Expand Up @@ -234,8 +234,9 @@ def clear
# See destroy for more info.
def destroy_all
load_target
destroy(@target)
reset_target!
destroy(@target).tap do
reset_target!
end
end

def create(attrs = {})
Expand Down
Expand Up @@ -834,8 +834,11 @@ def test_destroying_a_collection

def test_destroy_all
force_signal37_to_load_all_clients_of_firm
assert !companies(:first_firm).clients_of_firm.empty?, "37signals has clients after load"
companies(:first_firm).clients_of_firm.destroy_all
clients = companies(:first_firm).clients_of_firm.to_a
assert !clients.empty?, "37signals has clients after load"
destroyed = companies(:first_firm).clients_of_firm.destroy_all
assert_equal clients.sort_by(&:id), destroyed.sort_by(&:id)
assert destroyed.all? { |client| client.frozen? }, "destroyed clients should be frozen"
assert companies(:first_firm).clients_of_firm.empty?, "37signals has no clients after destroy all"
assert companies(:first_firm).clients_of_firm(true).empty?, "37signals has no clients after destroy all and refresh"
end
Expand Down
24 changes: 16 additions & 8 deletions activerecord/test/cases/base_test.rb
Expand Up @@ -587,17 +587,25 @@ def test_table_name_guesses
end

def test_destroy_all
original_count = Topic.count
topics_by_mary = Topic.count(:conditions => mary = "author_name = 'Mary'")

Topic.destroy_all mary
assert_equal original_count - topics_by_mary, Topic.count
conditions = "author_name = 'Mary'"
topics_by_mary = Topic.all(:conditions => conditions, :order => 'id')
assert ! topics_by_mary.empty?

assert_difference('Topic.count', -topics_by_mary.size) do
destroyed = Topic.destroy_all(conditions).sort_by(&:id)
assert_equal topics_by_mary, destroyed
assert destroyed.all? { |topic| topic.frozen? }
end
end

def test_destroy_many
assert_equal 3, Client.count
Client.destroy([2, 3])
assert_equal 1, Client.count
clients = Client.find([2, 3], :order => 'id')

assert_difference('Client.count', -2) do
destroyed = Client.destroy([2, 3]).sort_by(&:id)
assert_equal clients, destroyed
assert destroyed.all? { |client| client.frozen? }
end
end

def test_delete_many
Expand Down

0 comments on commit 2d3bc99

Please sign in to comment.