@@ -287,10 +287,14 class Project < ActiveRecord::Base | |||||
287 | end |
|
287 | end | |
288 |
|
288 | |||
289 | def enabled_module_names=(module_names) |
|
289 | def enabled_module_names=(module_names) | |
290 | enabled_modules.clear |
|
290 | if module_names && module_names.is_a?(Array) | |
291 | module_names = [] unless module_names && module_names.is_a?(Array) |
|
291 | module_names = module_names.collect(&:to_s) | |
292 | module_names.each do |name| |
|
292 | # remove disabled modules | |
293 | enabled_modules << EnabledModule.new(:name => name.to_s) |
|
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 | end |
|
298 | end | |
295 | end |
|
299 | end | |
296 |
|
300 |
@@ -18,7 +18,9 | |||||
18 | require File.dirname(__FILE__) + '/../test_helper' |
|
18 | require File.dirname(__FILE__) + '/../test_helper' | |
19 |
|
19 | |||
20 | class ProjectTest < Test::Unit::TestCase |
|
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 | def setup |
|
25 | def setup | |
24 | @ecookbook = Project.find(1) |
|
26 | @ecookbook = Project.find(1) | |
@@ -218,4 +220,17 class ProjectTest < Test::Unit::TestCase | |||||
218 | Project.delete_all |
|
220 | Project.delete_all | |
219 | assert_nil Project.next_identifier |
|
221 | assert_nil Project.next_identifier | |
220 | end |
|
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 | end |
|
236 | end |
General Comments 0
You need to be logged in to leave comments.
Login now