mirror of
https://github.com/discourse/discourse.git
synced 2024-12-19 20:05:16 +08:00
c080ac0094
Prior to this fix we would show the message after a round trip to the server. If you had a too long message error, at this point your input would be empty and we would show an error in chat. It's important to have this server side safety net, but we can have a better UX by showing an error on the frontend before sending the message, that way you can correct your message before sending it and not lose it.
56 lines
1.6 KiB
Ruby
56 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe "Message errors", type: :system do
|
|
context "when message is too long" do
|
|
let(:chat_page) { PageObjects::Pages::Chat.new }
|
|
let(:dialog_page) { PageObjects::Components::Dialog.new }
|
|
let(:max_length) { SiteSetting.chat_maximum_message_length }
|
|
let(:message) { "atoolongmessage" + "a" * max_length }
|
|
|
|
fab!(:current_user) { Fabricate(:admin) }
|
|
|
|
before do
|
|
chat_system_bootstrap
|
|
sign_in(current_user)
|
|
end
|
|
|
|
context "when in channel" do
|
|
fab!(:channel) { Fabricate(:chat_channel) }
|
|
|
|
let(:channel_page) { PageObjects::Pages::ChatChannel.new }
|
|
|
|
before { channel.add(current_user) }
|
|
|
|
it "shows a dialog with the error and keeps the message in the input" do
|
|
chat_page.visit_channel(channel)
|
|
|
|
channel_page.send_message(message)
|
|
|
|
expect(dialog_page).to have_content(
|
|
I18n.t("chat.errors.message_too_long", count: max_length),
|
|
)
|
|
expect(channel_page.composer).to have_value(message)
|
|
end
|
|
end
|
|
|
|
context "when in thread" do
|
|
fab!(:thread) { Fabricate(:chat_thread) }
|
|
|
|
let(:thread_page) { PageObjects::Pages::ChatThread.new }
|
|
|
|
before { thread.add(current_user) }
|
|
|
|
it "shows a dialog with the error and keeps the message in the input" do
|
|
chat_page.visit_thread(thread)
|
|
|
|
thread_page.send_message(message)
|
|
|
|
expect(dialog_page).to have_content(
|
|
I18n.t("chat.errors.message_too_long", count: max_length),
|
|
)
|
|
expect(thread_page.composer).to have_value(message)
|
|
end
|
|
end
|
|
end
|
|
end
|