summaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
Diffstat (limited to 'users')
-rw-r--r--users/app/controllers/v1/messages_controller.rb10
-rw-r--r--users/app/models/user.rb12
-rw-r--r--users/test/functional/v1/messages_controller_test.rb44
3 files changed, 58 insertions, 8 deletions
diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb
index a4e9aec..fa98042 100644
--- a/users/app/controllers/v1/messages_controller.rb
+++ b/users/app/controllers/v1/messages_controller.rb
@@ -6,14 +6,8 @@ module V1
# for now, will not pass unseen, so unseen will always be true
def user_messages(unseen = true)
- user_messages = unseen ? UserMessage.by_user_id_and_seen(:key => [params[:user_id], false]).all : UserMessage.by_user_id(:key => params[:user_id]).all
-
- messages = []
- user_messages.each do |um|
- messages << Message.find(um.message.id)
- end
-
- render json: messages
+ user = User.find(params[:user_id])
+ render json: (user ? user.messages : [] )
end
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index 720f5a9..fe3a127 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -72,6 +72,18 @@ class User < CouchRest::Model::Base
Ticket.for_user(self).limit(count).all #defaults to having most recent updated first
end
+ def messages(unseen = true)
+
+ user_messages = unseen ? UserMessage.by_user_id_and_seen(:key => [self.id, false]).all : UserMessage.by_user_id(:key => self.id).all
+
+ messages = []
+ user_messages.each do |um|
+ messages << Message.find(um.message.id)
+ end
+ messages
+
+ end
+
# DEPRECATED
#
# Please set the key on the identity directly
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..de2182b
--- /dev/null
+++ b/users/test/functional/v1/messages_controller_test.rb
@@ -0,0 +1,44 @@
+require 'test_helper'
+
+
+class V1::MessagesControllerTest < ActionController::TestCase
+
+ #TODO ensure authentication for all tests here
+
+ setup do
+ @user = FactoryGirl.build(:user)
+ @user.save
+ @message = Message.new(:text => 'a test message')
+ @message.save
+ @user_message = UserMessage.new(:message_id => @message.id, :user_id => @user.id)
+ @user_message.save
+ end
+
+ teardown do
+ @user_message.destroy
+ @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.seen
+ put :mark_read, :user_id => @user.id, :message_id => @message.id
+ @user_message.reload
+ assert @user_message.seen
+ end
+
+ test "do not get seen messages" do
+ @user_message.seen = true
+ @user_message.save
+ get :user_messages, :user_id => @user.id
+ assert !(response.body.include? @message.text)
+ assert !(response.body.include? @message.id)
+ end
+
+end