##// END OF EJS Templates
Added Project#enable_module! and Project#disable_module! (#7115)...
Jean-Baptiste Barth -
r5978:88bd76b0e494
parent child
Show More
@@ -544,7 +544,27 class Project < ActiveRecord::Base
544 def enabled_module_names
544 def enabled_module_names
545 enabled_modules.collect(&:name)
545 enabled_modules.collect(&:name)
546 end
546 end
547
547
548 # Enable a specific module
549 #
550 # Examples:
551 # project.enable_module!(:issue_tracking)
552 # project.enable_module!("issue_tracking")
553 def enable_module!(name)
554 enabled_modules << EnabledModule.new(:name => name.to_s) unless module_enabled?(name)
555 end
556
557 # Disable a module if it exists
558 #
559 # Examples:
560 # project.disable_module!(:issue_tracking)
561 # project.disable_module!("issue_tracking")
562 # project.disable_module!(project.enabled_modules.first)
563 def disable_module!(target)
564 target = enabled_modules.detect{|mod| target.to_s == mod.name} unless enabled_modules.include?(target)
565 target.destroy unless target.blank?
566 end
567
548 safe_attributes 'name',
568 safe_attributes 'name',
549 'description',
569 'description',
550 'homepage',
570 'homepage',
@@ -597,6 +597,54 class ProjectTest < ActiveSupport::TestCase
597 end
597 end
598 end
598 end
599
599
600 context "enabled_modules" do
601 setup do
602 @project = Project.find(1)
603 end
604
605 should "define module by names and preserve ids" do
606 # Remove one module
607 modules = @project.enabled_modules.slice(0..-2)
608 assert modules.any?
609 assert_difference 'EnabledModule.count', -1 do
610 @project.enabled_module_names = modules.collect(&:name)
611 end
612 @project.reload
613 # Ids should be preserved
614 assert_equal @project.enabled_module_ids.sort, modules.collect(&:id).sort
615 end
616
617 should "enable a module" do
618 @project.enabled_module_names = []
619 @project.reload
620 assert_equal [], @project.enabled_module_names
621 #with string
622 @project.enable_module!("issue_tracking")
623 assert_equal ["issue_tracking"], @project.enabled_module_names
624 #with symbol
625 @project.enable_module!(:gantt)
626 assert_equal ["issue_tracking", "gantt"], @project.enabled_module_names
627 #don't add a module twice
628 @project.enable_module!("issue_tracking")
629 assert_equal ["issue_tracking", "gantt"], @project.enabled_module_names
630 end
631
632 should "disable a module" do
633 #with string
634 assert @project.enabled_module_names.include?("issue_tracking")
635 @project.disable_module!("issue_tracking")
636 assert ! @project.reload.enabled_module_names.include?("issue_tracking")
637 #with symbol
638 assert @project.enabled_module_names.include?("gantt")
639 @project.disable_module!(:gantt)
640 assert ! @project.reload.enabled_module_names.include?("gantt")
641 #with EnabledModule object
642 first_module = @project.enabled_modules.first
643 @project.disable_module!(first_module)
644 assert ! @project.reload.enabled_module_names.include?(first_module.name)
645 end
646 end
647
600 def test_enabled_module_names_should_not_recreate_enabled_modules
648 def test_enabled_module_names_should_not_recreate_enabled_modules
601 project = Project.find(1)
649 project = Project.find(1)
602 # Remove one module
650 # Remove one module
General Comments 0
You need to be logged in to leave comments. Login now