]> source.dussan.org Git - redmine.git/commitdiff
Adds tests for plugin settings editing.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 3 Dec 2011 10:06:41 +0000 (10:06 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 3 Dec 2011 10:06:41 +0000 (10:06 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8039 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/settings_controller.rb
test/fixtures/plugins/foo_plugin/_foo_plugin_settings.html.erb [new file with mode: 0644]
test/functional/settings_controller_test.rb

index a8b11922926ff2eca3134c6dcf0d40a3dc2b7065..257b903218d1a893b6331cd97ce9e35932700710 100644 (file)
@@ -51,12 +51,12 @@ class SettingsController < ApplicationController
   def plugin
     @plugin = Redmine::Plugin.find(params[:id])
     if request.post?
-      Setting["plugin_#{@plugin.id}"] = params[:settings]
+      Setting.send "plugin_#{@plugin.id}=", params[:settings]
       flash[:notice] = l(:notice_successful_update)
       redirect_to :action => 'plugin', :id => @plugin.id
     else
       @partial = @plugin.settings[:partial]
-      @settings = Setting["plugin_#{@plugin.id}"]
+      @settings = Setting.send "plugin_#{@plugin.id}"
     end
   rescue Redmine::PluginNotFound
     render_404
diff --git a/test/fixtures/plugins/foo_plugin/_foo_plugin_settings.html.erb b/test/fixtures/plugins/foo_plugin/_foo_plugin_settings.html.erb
new file mode 100644 (file)
index 0000000..44537d3
--- /dev/null
@@ -0,0 +1 @@
+<p><label>Example setting</label><%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %></p>
index 13a0bcca2b60747347921c894af1620944587fab..fb9bb628662511f2bf83a0cb14d2286d6750b739 100644 (file)
@@ -56,4 +56,33 @@ class SettingsControllerTest < ActionController::TestCase
     assert_equal %w(issue_added issue_updated news_added), Setting.notified_events
     assert_equal 'Test footer', Setting.emails_footer
   end
+
+  def test_get_plugin_settings
+    Setting.stubs(:plugin_foo).returns({'sample_setting' => 'Plugin setting value'})
+    ActionController::Base.view_paths.unshift(File.join(Rails.root, "test/fixtures/plugins"))
+    Redmine::Plugin.register :foo do
+      settings :partial => "foo_plugin/foo_plugin_settings"
+    end
+
+    get :plugin, :id => 'foo'
+    assert_response :success
+    assert_template 'plugin'
+    assert_tag 'form', :attributes => {:action => '/settings/plugin/foo'},
+      :descendant => {:tag => 'input', :attributes => {:name => 'settings[sample_setting]', :value => 'Plugin setting value'}}
+
+    Redmine::Plugin.clear
+  end
+
+  def test_get_invalid_plugin_settings
+    get :plugin, :id => 'none'
+    assert_response 404
+  end
+
+  def test_post_plugin_settings
+    Setting.expects(:plugin_foo=).with({'sample_setting' => 'Value'}).returns(true)
+    Redmine::Plugin.register(:foo) {}
+
+    post :plugin, :id => 'foo', :settings => {'sample_setting' => 'Value'}
+    assert_redirected_to '/settings/plugin/foo'
+  end
 end