##// END OF EJS Templates
Do not DELETE/INSERT enabled_modules when updating project modules....
Jean-Philippe Lang -
r2412:b05ed594a086
parent child
Show More
@@ -287,10 +287,14 class Project < ActiveRecord::Base
287 287 end
288 288
289 289 def enabled_module_names=(module_names)
290 enabled_modules.clear
291 module_names = [] unless module_names && module_names.is_a?(Array)
292 module_names.each do |name|
293 enabled_modules << EnabledModule.new(:name => name.to_s)
290 if module_names && module_names.is_a?(Array)
291 module_names = module_names.collect(&:to_s)
292 # remove disabled modules
293 enabled_modules.each {|mod| mod.destroy unless module_names.include?(mod.name)}
294 # add new modules
295 module_names.each {|name| enabled_modules << EnabledModule.new(:name => name)}
296 else
297 enabled_modules.clear
294 298 end
295 299 end
296 300
@@ -18,7 +18,9
18 18 require File.dirname(__FILE__) + '/../test_helper'
19 19
20 20 class ProjectTest < Test::Unit::TestCase
21 fixtures :projects, :issues, :issue_statuses, :journals, :journal_details, :users, :members, :roles, :projects_trackers, :trackers, :boards
21 fixtures :projects, :enabled_modules,
22 :issues, :issue_statuses, :journals, :journal_details,
23 :users, :members, :roles, :projects_trackers, :trackers, :boards
22 24
23 25 def setup
24 26 @ecookbook = Project.find(1)
@@ -218,4 +220,17 class ProjectTest < Test::Unit::TestCase
218 220 Project.delete_all
219 221 assert_nil Project.next_identifier
220 222 end
223
224 def test_enabled_module_names_should_not_recreate_enabled_modules
225 project = Project.find(1)
226 # Remove one module
227 modules = project.enabled_modules.slice(0..-2)
228 assert modules.any?
229 assert_difference 'EnabledModule.count', -1 do
230 project.enabled_module_names = modules.collect(&:name)
231 end
232 project.reload
233 # Ids should be preserved
234 assert_equal project.enabled_module_ids.sort, modules.collect(&:id).sort
235 end
221 236 end
General Comments 0
You need to be logged in to leave comments. Login now