X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/516979b045f398b0c8ebb4f1cd3aaf57e8eca7a7..44b08cc35d5b5488919059016a427feae62acb05:/test/controllers/diary_entry_controller_test.rb diff --git a/test/controllers/diary_entry_controller_test.rb b/test/controllers/diary_entry_controller_test.rb index 6e07a4091..cbe72a6df 100644 --- a/test/controllers/diary_entry_controller_test.rb +++ b/test/controllers/diary_entry_controller_test.rb @@ -83,6 +83,14 @@ class DiaryEntryControllerTest < ActionController::TestCase { :path => "/user/username/diary/1/hidecomment/2", :method => :post }, { :controller => "diary_entry", :action => "hidecomment", :display_name => "username", :id => "1", :comment => "2" } ) + assert_routing( + { :path => "/user/username/diary/1/subscribe", :method => :post }, + { :controller => "diary_entry", :action => "subscribe", :display_name => "username", :id => "1" } + ) + assert_routing( + { :path => "/user/username/diary/1/unsubscribe", :method => :post }, + { :controller => "diary_entry", :action => "unsubscribe", :display_name => "username", :id => "1" } + ) end def test_new @@ -148,6 +156,9 @@ class DiaryEntryControllerTest < ActionController::TestCase assert_equal new_longitude.to_f, entry.longitude assert_equal new_language_code, entry.language_code + # checks if user was subscribed + assert_equal 1, entry.subscribers.length + assert_equal new_language_code, UserPreference.where(:user_id => users(:normal_user).id, :k => "diary.default_language").first.v new_language_code = "de" @@ -169,6 +180,9 @@ class DiaryEntryControllerTest < ActionController::TestCase assert_equal new_longitude.to_f, entry.longitude assert_equal new_language_code, entry.language_code + # checks if user was subscribed + assert_equal 1, entry.subscribers.length + assert_equal new_language_code, UserPreference.where(:user_id => users(:normal_user).id, :k => "diary.default_language").first.v end @@ -319,16 +333,20 @@ class DiaryEntryControllerTest < ActionController::TestCase # Now try an invalid comment with an empty body assert_no_difference "ActionMailer::Base.deliveries.size" do assert_no_difference "DiaryComment.count" do - post :comment, { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "" } }, { :user => users(:public_user).id } + assert_no_difference "entry.subscribers.count" do + post :comment, { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "" } }, { :user => users(:public_user).id } + end end end assert_response :success assert_template :view # Now try again with the right id - assert_difference "ActionMailer::Base.deliveries.size", 1 do + assert_difference "ActionMailer::Base.deliveries.size", entry.subscribers.count do assert_difference "DiaryComment.count", 1 do - post :comment, { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "New comment" } }, { :user => users(:public_user).id } + assert_difference "entry.subscribers.count", 1 do + post :comment, { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "New comment" } }, { :user => users(:public_user).id } + end end end assert_response :redirect @@ -641,6 +659,79 @@ class DiaryEntryControllerTest < ActionController::TestCase assert_response :not_found end + ## + # test subscribe success + def test_subscribe_success + diary_entry = create(:diary_entry, :user_id => users(:normal_user).id) + + #basic_authorization(users(:public_user).email, "test") + + assert_difference "diary_entry.subscribers.count", 1 do + post :subscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:public_user).id} + end + assert_response :redirect + end + + ## + # test subscribe fail + def test_subscribe_fail + diary_entry = create(:diary_entry, :user_id => users(:normal_user).id) + + # not signed in + assert_no_difference "diary_entry.subscribers.count", 1 do + post :subscribe, :id => diary_entry.id, :display_name => diary_entry.user.display_name + end + assert_response :forbidden + + # bad diary id + post :subscribe, {:id => 999111, :display_name => "username"}, { :user => users(:public_user).id} + assert_response :not_found + + # trying to subscribe when already subscribed + post :subscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:public_user).id} + assert_no_difference "diary_entry.subscribers.count" do + post :subscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:public_user).id} + end + end + + ## + # test unsubscribe success + def test_unsubscribe_success + diary_entry = create(:diary_entry, :user_id => users(:normal_user).id) + + assert_difference "diary_entry.subscribers.count", -1 do + post :unsubscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:normal_user).id} + end + assert_response :redirect + + post :subscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:public_user).id} + assert_difference "diary_entry.subscribers.count", -1 do + post :unsubscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:public_user).id} + end + assert_response :redirect + end + + ## + # test unsubscribe fail + def test_unsubscribe_fail + diary_entry = create(:diary_entry, :user_id => users(:normal_user).id) + + # not signed in + assert_no_difference "diary_entry.subscribers.count" do + post :unsubscribe, :id => diary_entry.id, :display_name => diary_entry.user.display_name + end + assert_response :forbidden + + # bad diary id + post :unsubscribe, {:id => 999111, :display_name => "username"}, { :user => users(:public_user).id} + assert_response :not_found + + # trying to subscribe when already subscribed + assert_no_difference "diary_entry.subscribers.count" do + post :unsubscribe, {:id => diary_entry.id, :display_name => diary_entry.user.display_name}, { :user => users(:public_user).id} + end + end + private def check_diary_list(*entries)