diff options
Diffstat (limited to 'activerecord/test')
-rwxr-xr-x | activerecord/test/associations_test.rb | 9 | ||||
-rw-r--r-- | activerecord/test/fixtures/developer.rb | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/activerecord/test/associations_test.rb b/activerecord/test/associations_test.rb index fc2afb721f..4ad40f338c 100755 --- a/activerecord/test/associations_test.rb +++ b/activerecord/test/associations_test.rb @@ -1246,10 +1246,13 @@ class HasAndBelongsToManyAssociationsTest < Test::Unit::TestCase end def test_removing_associations_on_destroy - Developer.find(1).destroy - assert Developer.connection.select_all("SELECT * FROM developers_projects WHERE developer_id = 1").empty? + david = DeveloperWithBeforeDestroyRaise.find(1) + assert !david.projects.empty? + assert_nothing_raised { david.destroy } + assert david.projects.empty? + assert DeveloperWithBeforeDestroyRaise.connection.select_all("SELECT * FROM developers_projects WHERE developer_id = 1").empty? end - + def test_additional_columns_from_join_table # SQL Server doesn't have a separate column type just for dates, # so the time is in the string and incorrectly formatted diff --git a/activerecord/test/fixtures/developer.rb b/activerecord/test/fixtures/developer.rb index ce65ff78c0..29555d926a 100644 --- a/activerecord/test/fixtures/developer.rb +++ b/activerecord/test/fixtures/developer.rb @@ -28,3 +28,13 @@ class DeveloperWithAggregate < ActiveRecord::Base self.table_name = 'developers' composed_of :salary, :class_name => 'DeveloperSalary', :mapping => [%w(salary amount)] end + +class DeveloperWithBeforeDestroyRaise < ActiveRecord::Base + self.table_name = 'developers' + has_and_belongs_to_many :projects, :join_table => 'developers_projects', :foreign_key => 'developer_id' + before_destroy :raise_if_projects_empty! + + def raise_if_projects_empty! + raise if projects.empty? + end +end |