From 2e67cc252ee6d2a7fb36c6108be83ddbda4c625f Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Thu, 30 Apr 2020 15:49:09 -0500 Subject: [PATCH] return usable error message when chat creation fails (#7629) --- app/controllers/chat_channels_controller.rb | 3 +++ spec/requests/chat_channels_spec.rb | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/app/controllers/chat_channels_controller.rb b/app/controllers/chat_channels_controller.rb index 9248ff9ee..638284a40 100644 --- a/app/controllers/chat_channels_controller.rb +++ b/app/controllers/chat_channels_controller.rb @@ -80,6 +80,7 @@ class ChatChannelsController < ApplicationController chat_recipient = User.find(params[:user_id]) valid_listing = ClassifiedListing.where(user_id: params[:user_id], contact_via_connect: true).limit(1) authorize ChatChannel + if chat_recipient.inbox_type == "open" || valid_listing.length == 1 chat = ChatChannel.create_with_users(users: [current_user, chat_recipient], channel_type: "direct") message_markdown = params[:message] @@ -93,6 +94,8 @@ class ChatChannelsController < ApplicationController else render json: { status: "error", message: "not allowed!" }, status: :bad_request end + rescue StandardError => e + render json: { status: "error", message: e.message }, status: :bad_request end def block_chat diff --git a/spec/requests/chat_channels_spec.rb b/spec/requests/chat_channels_spec.rb index 9018268dd..53badbc5f 100644 --- a/spec/requests/chat_channels_spec.rb +++ b/spec/requests/chat_channels_spec.rb @@ -237,6 +237,13 @@ RSpec.describe "ChatChannels", type: :request do params: { user_id: user_open_inbox.id } expect(user_open_inbox.chat_channel_memberships.size).to eq(1) end + + it "returns error message if create_with_users fails" do + allow(ChatChannel).to receive(:create_with_users).and_raise(StandardError.new("Blocked")) + post "/chat_channels/create_chat", + params: { user_id: user_open_inbox.id } + expect(response.parsed_body["message"]).to eq("Blocked") + end end describe "POST /chat_channels/block_chat" do