diff options
Diffstat (limited to 'users/test')
-rw-r--r-- | users/test/functional/v1/messages_controller_test.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/users/test/functional/v1/messages_controller_test.rb b/users/test/functional/v1/messages_controller_test.rb new file mode 100644 index 0000000..0bc09be --- /dev/null +++ b/users/test/functional/v1/messages_controller_test.rb @@ -0,0 +1,60 @@ +require 'test_helper' + +class V1::MessagesControllerTest < ActionController::TestCase + + setup do + @message = Message.new(:text => 'a test message') + @message.save + @user = FactoryGirl.build(:user) + @user.message_ids_to_see << @message.id + @user.save + login :is_admin? => true + end + + teardown do + @user.destroy + @message.destroy + end + + test "get messages for user" do + get :user_messages, :user_id => @user.id + assert response.body.include? @message.text + assert response.body.include? @message.id + end + + test "mark message read for user" do + assert @user.message_ids_to_see.include?(@message.id) + assert !@user.message_ids_seen.include?(@message.id) + + put :mark_read, :user_id => @user.id, :message_id => @message.id + @user.reload + assert !@user.message_ids_to_see.include?(@message.id) + assert @user.message_ids_seen.include?(@message.id) + assert_json_response true + end + + test "do not get seen messages" do + put :mark_read, :user_id => @user.id, :message_id => @message.id + @user.reload + get :user_messages, :user_id => @user.id + assert !(response.body.include? @message.text) + assert !(response.body.include? @message.id) + end + + test "empty messages for non-existing user" do + get :user_messages, :user_id => 'some random string' + assert_json_response [] + end + + test "mark read responds even with bad inputs" do + put :mark_read, :user_id => 'nonsense', :message_id => 'more nonsense' + assert_json_response false + end + + test "fails if not admin" do + login :is_admin? => false + get :user_messages, :user_id => @user.id + assert_access_denied + end + +end |