@@ -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