summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--users/app/controllers/v1/messages_controller.rb5
-rw-r--r--users/test/functional/v1/messages_controller_test.rb12
2 files changed, 13 insertions, 4 deletions
diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb
index fa98042..d49b161 100644
--- a/users/app/controllers/v1/messages_controller.rb
+++ b/users/app/controllers/v1/messages_controller.rb
@@ -10,14 +10,13 @@ module V1
render json: (user ? user.messages : [] )
end
-
# routes ensure this is only for PUT
def mark_read
user_message = UserMessage.find_by_user_id_and_message_id([params[:user_id], params[:message_id]])
- user_message.seen = true
+ user_message.seen = true if user_message
# TODO what to return?
- if user_message.save
+ if user_message and user_message.save
render json: true
else
render json: false
diff --git a/users/test/functional/v1/messages_controller_test.rb b/users/test/functional/v1/messages_controller_test.rb
index de2182b..7bffa8f 100644
--- a/users/test/functional/v1/messages_controller_test.rb
+++ b/users/test/functional/v1/messages_controller_test.rb
@@ -1,6 +1,5 @@
require 'test_helper'
-
class V1::MessagesControllerTest < ActionController::TestCase
#TODO ensure authentication for all tests here
@@ -31,6 +30,7 @@ class V1::MessagesControllerTest < ActionController::TestCase
put :mark_read, :user_id => @user.id, :message_id => @message.id
@user_message.reload
assert @user_message.seen
+ assert_json_response true
end
test "do not get seen messages" do
@@ -41,4 +41,14 @@ class V1::MessagesControllerTest < ActionController::TestCase
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
+
end