##// END OF EJS Templates
Disallow users to delete a version referenced by a custom field (#20159)....
Jean-Philippe Lang -
r13994:bc9ca5fcfd74
parent child
Show More
@@ -146,7 +146,7 class VersionsController < ApplicationController
146 146 end
147 147
148 148 def destroy
149 if @version.fixed_issues.empty?
149 if @version.deletable?
150 150 @version.destroy
151 151 respond_to do |format|
152 152 format.html { redirect_back_or_default settings_project_path(@project, :tab => 'versions') }
@@ -227,6 +227,10 class Version < ActiveRecord::Base
227 227 sharing != 'none'
228 228 end
229 229
230 def deletable?
231 fixed_issues.empty? && !referenced_by_a_custom_field?
232 end
233
230 234 private
231 235
232 236 def load_issue_counts
@@ -288,4 +292,9 class Version < ActiveRecord::Base
288 292 progress
289 293 end
290 294 end
295
296 def referenced_by_a_custom_field?
297 CustomValue.joins(:custom_field).
298 where(:value => id.to_s, :custom_fields => {:field_format => 'version'}).any?
299 end
291 300 end
@@ -125,6 +125,7 module ObjectHelpers
125 125 @generated_version_name.succ!
126 126 version = Version.new(attributes)
127 127 version.name = @generated_version_name.dup if version.name.blank?
128 version.project ||= Project.find(1)
128 129 yield version if block_given?
129 130 version.save!
130 131 version
@@ -235,6 +235,27 class VersionTest < ActiveSupport::TestCase
235 235 assert_equal @version, project_2_issue.fixed_version
236 236 end
237 237
238 def test_deletable_should_return_true_when_not_referenced
239 version = Version.generate!
240
241 assert_equal true, version.deletable?
242 end
243
244 def test_deletable_should_return_false_when_referenced_by_an_issue
245 version = Version.generate!
246 Issue.generate!(:fixed_version => version)
247
248 assert_equal false, version.deletable?
249 end
250
251 def test_deletable_should_return_false_when_referenced_by_a_custom_field
252 version = Version.generate!
253 field = IssueCustomField.generate!(:field_format => 'version')
254 value = CustomValue.create!(:custom_field => field, :customized => Issue.first, :value => version.id)
255
256 assert_equal false, version.deletable?
257 end
258
238 259 private
239 260
240 261 def add_issue(version, attributes={})
General Comments 0
You need to be logged in to leave comments. Login now