+require "test_helper"
+
+class UserMutesControllerTest < ActionDispatch::IntegrationTest
+ def test_routes
+ assert_routing(
+ { :path => "/user/username/mute", :method => :post },
+ { :controller => "user_mutes", :action => "create", :display_name => "username" }
+ )
+ assert_routing(
+ { :path => "/user/username/mute", :method => :delete },
+ { :controller => "user_mutes", :action => "destroy", :display_name => "username" }
+ )
+ assert_routing(
+ { :path => "/user_mutes", :method => :get },
+ { :controller => "user_mutes", :action => "index" }
+ )
+ end
+
+ def test_index
+ user = create(:user)
+ user.mutes.create(:subject => create(:user))
+ session_for(user)
+
+ get user_mutes_path
+ assert_match "You have muted 1 User", @response.body
+ end
+
+ def test_create
+ user = create(:user)
+ session_for(user)
+
+ assert_equal 0, user.muted_users.count
+ subject = create(:user, :display_name => "Bob")
+ post user_mute_path(subject)
+ assert_match "You muted Bob", flash[:notice]
+
+ assert_equal 1, user.muted_users.count
+ assert_equal subject, user.muted_users.first
+
+ post user_mute_path(subject)
+ assert_match "Bob could not be muted. Is already muted", flash[:error]
+ assert_equal 1, user.muted_users.count
+ end
+
+ def test_destroy
+ user = create(:user)
+ session_for(user)
+
+ subject = create(:user, :display_name => "Bob")
+ user.mutes.create(:subject => subject)
+ assert_equal 1, user.muted_users.count
+
+ delete user_mute_path(subject)
+ assert_match "You unmuted Bob", flash[:notice]
+ assert_equal 0, user.muted_users.count
+
+ delete user_mute_path(subject)
+ assert_response :not_found
+ end
+end