##// END OF EJS Templates
Versions that are not shared should not be assignable when selecting another project (#11506)....
Jean-Philippe Lang -
r9903:9eb041fbc799
parent child
Show More
@@ -148,6 +148,7 class Issue < ActiveRecord::Base
148
148
149 def reload(*args)
149 def reload(*args)
150 @workflow_rule_by_attribute = nil
150 @workflow_rule_by_attribute = nil
151 @assignable_versions = nil
151 super
152 super
152 end
153 end
153
154
@@ -252,6 +253,8 class Issue < ActiveRecord::Base
252 write_attribute(:project_id, project ? project.id : nil)
253 write_attribute(:project_id, project ? project.id : nil)
253 association_instance_set('project', project)
254 association_instance_set('project', project)
254 if project_was && project && project_was != project
255 if project_was && project && project_was != project
256 @assignable_versions = nil
257
255 unless keep_tracker || project.trackers.include?(tracker)
258 unless keep_tracker || project.trackers.include?(tracker)
256 self.tracker = project.trackers.first
259 self.tracker = project.trackers.first
257 end
260 end
@@ -639,7 +642,21 class Issue < ActiveRecord::Base
639
642
640 # Versions that the issue can be assigned to
643 # Versions that the issue can be assigned to
641 def assignable_versions
644 def assignable_versions
642 @assignable_versions ||= (project.shared_versions.open + [Version.find_by_id(fixed_version_id_was)]).compact.uniq.sort
645 return @assignable_versions if @assignable_versions
646
647 versions = project.shared_versions.open.all
648 if fixed_version
649 if fixed_version_id_changed?
650 # nothing to do
651 elsif project_id_changed?
652 if project.shared_versions.include?(fixed_version)
653 versions << fixed_version
654 end
655 else
656 versions << fixed_version
657 end
658 end
659 @assignable_versions = versions.uniq.sort
643 end
660 end
644
661
645 # Returns true if this issue is blocked by another issue that is still open
662 # Returns true if this issue is blocked by another issue that is still open
@@ -760,6 +760,26 class IssueTest < ActiveSupport::TestCase
760 assert issue.save
760 assert issue.save
761 end
761 end
762
762
763 def test_should_not_be_able_to_keep_unshared_version_when_changing_project
764 issue = Issue.find(2)
765 assert_equal 2, issue.fixed_version_id
766 issue.project_id = 3
767 assert_nil issue.fixed_version_id
768 issue.fixed_version_id = 2
769 assert !issue.save
770 assert_include 'Target version is not included in the list', issue.errors.full_messages
771 end
772
773 def test_should_keep_shared_version_when_changing_project
774 Version.find(2).update_attribute :sharing, 'tree'
775
776 issue = Issue.find(2)
777 assert_equal 2, issue.fixed_version_id
778 issue.project_id = 3
779 assert_equal 2, issue.fixed_version_id
780 assert issue.save
781 end
782
763 def test_allowed_target_projects_on_move_should_include_projects_with_issue_tracking_enabled
783 def test_allowed_target_projects_on_move_should_include_projects_with_issue_tracking_enabled
764 assert_include Project.find(2), Issue.allowed_target_projects_on_move(User.find(2))
784 assert_include Project.find(2), Issue.allowed_target_projects_on_move(User.find(2))
765 end
785 end
General Comments 0
You need to be logged in to leave comments. Login now