end
def enabled_module_names=(module_names)
- enabled_modules.clear
- module_names = [] unless module_names && module_names.is_a?(Array)
- module_names.each do |name|
- enabled_modules << EnabledModule.new(:name => name.to_s)
+ if module_names && module_names.is_a?(Array)
+ module_names = module_names.collect(&:to_s)
+ # remove disabled modules
+ enabled_modules.each {|mod| mod.destroy unless module_names.include?(mod.name)}
+ # add new modules
+ module_names.each {|name| enabled_modules << EnabledModule.new(:name => name)}
+ else
+ enabled_modules.clear
end
end
require File.dirname(__FILE__) + '/../test_helper'\r
\r
class ProjectTest < Test::Unit::TestCase\r
- fixtures :projects, :issues, :issue_statuses, :journals, :journal_details, :users, :members, :roles, :projects_trackers, :trackers, :boards\r
+ fixtures :projects, :enabled_modules, \r
+ :issues, :issue_statuses, :journals, :journal_details,\r
+ :users, :members, :roles, :projects_trackers, :trackers, :boards\r
\r
def setup\r
@ecookbook = Project.find(1)\r
Project.delete_all\r
assert_nil Project.next_identifier\r
end\r
+ \r
+ def test_enabled_module_names_should_not_recreate_enabled_modules\r
+ project = Project.find(1)\r
+ # Remove one module\r
+ modules = project.enabled_modules.slice(0..-2)\r
+ assert modules.any?\r
+ assert_difference 'EnabledModule.count', -1 do\r
+ project.enabled_module_names = modules.collect(&:name)\r
+ end\r
+ project.reload\r
+ # Ids should be preserved\r
+ assert_equal project.enabled_module_ids.sort, modules.collect(&:id).sort\r
+ end\r
end\r