From 80a5ad7ff344b9c5047a1990f6af19f97c4bd680 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 1 Apr 2008 17:43:20 +0000 Subject: [PATCH] Fixed: Boards are not deleted when project is deleted (closes #963). git-svn-id: http://redmine.rubyforge.org/svn/trunk@1316 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/project.rb | 2 +- test/unit/project_test.rb | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index a223b35f..eaa33c96 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -33,7 +33,7 @@ class Project < ActiveRecord::Base has_many :documents, :dependent => :destroy has_many :news, :dependent => :delete_all, :include => :author has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name" - has_many :boards, :order => "position ASC" + has_many :boards, :dependent => :destroy, :order => "position ASC" has_one :repository, :dependent => :destroy has_many :changesets, :through => :repository has_one :wiki, :dependent => :destroy diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index f7da6ecb..9af68c23 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -18,7 +18,7 @@ require File.dirname(__FILE__) + '/../test_helper' class ProjectTest < Test::Unit::TestCase - fixtures :projects, :issues, :issue_statuses, :journals, :journal_details, :users, :members, :roles, :projects_trackers, :trackers + fixtures :projects, :issues, :issue_statuses, :journals, :journal_details, :users, :members, :roles, :projects_trackers, :trackers, :boards def setup @ecookbook = Project.find(1) @@ -84,12 +84,15 @@ class ProjectTest < Test::Unit::TestCase assert_equal 2, @ecookbook.members.size # and 1 is locked assert_equal 3, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size + # some boards + assert @ecookbook.boards.any? @ecookbook.destroy # make sure that the project non longer exists assert_raise(ActiveRecord::RecordNotFound) { Project.find(@ecookbook.id) } - # make sure all members have been removed - assert_equal 0, Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).size + # make sure related data was removed + assert Member.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).empty? + assert Board.find(:all, :conditions => ['project_id = ?', @ecookbook.id]).empty? end def test_subproject_ok