]> source.dussan.org Git - redmine.git/commitdiff
Adds functional tests for MembersController.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 29 Nov 2011 20:29:50 +0000 (20:29 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 29 Nov 2011 20:29:50 +0000 (20:29 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7990 e93f8b46-1217-0410-a6f0-8f06a7374b81

test/functional/members_controller_test.rb

index da86a91538efad93819621d3a9be94561c37dd3d..3a4b2256ce10e744770a81f64bbd8cb13a6ad14b 100644 (file)
@@ -49,38 +49,22 @@ class MembersControllerTest < ActionController::TestCase
     assert User.find(7).member_of?(Project.find(1))
   end
 
-  context "post :new in JS format" do
-    context "with successful saves" do
-      should "add membership for each user" do
-        post :new, :format => "js", :id => 1, :member => {:role_ids => [1], :user_ids => [7, 8, 9]}
-
-        assert User.find(7).member_of?(Project.find(1))
-        assert User.find(8).member_of?(Project.find(1))
-        assert User.find(9).member_of?(Project.find(1))
-      end
-
-      should "replace the tab with RJS" do
-        post :new, :format => "js", :id => 1, :member => {:role_ids => [1], :user_ids => [7, 8, 9]}
-
-        assert_select_rjs :replace_html, 'tab-content-members'
-      end
-
+  def test_xhr_create
+    assert_difference 'Member.count', 3 do
+      post :new, :format => "js", :id => 1, :member => {:role_ids => [1], :user_ids => [7, 8, 9]}
     end
+    assert_select_rjs :replace_html, 'tab-content-members'
+    assert User.find(7).member_of?(Project.find(1))
+    assert User.find(8).member_of?(Project.find(1))
+    assert User.find(9).member_of?(Project.find(1))
+  end
 
-    context "with a failed save" do
-      should "not replace the tab with RJS" do
-        post :new, :format => "js", :id => 1, :member => {:role_ids => [], :user_ids => [7, 8, 9]}
-
-        assert_select '#tab-content-members', 0
-      end
-
-      should "open an error message" do
-        post :new, :format => "js", :id => 1, :member => {:role_ids => [], :user_ids => [7, 8, 9]}
-
-        assert @response.body.match(/alert/i), "Alert message not sent"
-      end
+  def test_xhr_create_with_failure
+    assert_no_difference 'Member.count' do
+      post :new, :format => "js", :id => 1, :member => {:role_ids => [], :user_ids => [7, 8, 9]}
     end
-
+    assert_select '#tab-content-members', 0
+    assert @response.body.match(/alert/i), "Alert message not sent"
   end
 
   def test_edit
@@ -90,6 +74,16 @@ class MembersControllerTest < ActionController::TestCase
     assert_redirected_to '/projects/ecookbook/settings/members'
   end
 
+  def test_xhr_edit
+    assert_no_difference 'Member.count' do
+      xhr :post, :edit, :id => 2, :member => {:role_ids => [1], :user_id => 3}
+    end
+    assert_select_rjs :replace_html, 'tab-content-members'
+    member = Member.find(2)
+    assert_equal [1], member.role_ids
+    assert_equal 3, member.user_id
+  end
+
   def test_destroy
     assert_difference 'Member.count', -1 do
       post :destroy, :id => 2
@@ -98,6 +92,13 @@ class MembersControllerTest < ActionController::TestCase
     assert !User.find(3).member_of?(Project.find(1))
   end
 
+  def test_xhr_destroy
+    assert_difference 'Member.count', -1 do
+      xhr :post, :destroy, :id => 2
+    end
+    assert_select_rjs :replace_html, 'tab-content-members'
+  end
+
   def test_autocomplete_for_member
     get :autocomplete_for_member, :id => 1, :q => 'mis'
     assert_response :success