FIX: ensures user with multiple tabs see own reactions (#20759)

Prior to this fix, we wouldn't display reactions done on different tabs. So, if user A was reacting on tab 1, tab 2 wouldn't display this reaction.

Since few weeks ago we now have the guarantee to have uniq reactions on a message which should prevent any duplicate.

This commit also removes various skipped tests related to reactions and makes `sign_in` explicit at the beginning of each test.

<!-- NOTE: All pull requests should have tests (rspec in Ruby, qunit in JavaScript). If your code does not include test coverage, please include an explanation of why it was omitted. -->
This commit is contained in:
Joffrey JAFFEUX 2023-03-21 15:25:35 +01:00 committed by GitHub
parent 92797109ba
commit 7ccc7b75b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 23 deletions

View File

@ -675,13 +675,11 @@ export default class ChatLivePane extends Component {
} }
handleReactionMessage(data) { handleReactionMessage(data) {
if (data.user.id !== this.currentUser.id) { const message = this.args.channel.messagesManager.findMessage(
const message = this.args.channel.messagesManager.findMessage( data.chat_message_id
data.chat_message_id );
); if (message) {
if (message) { message.react(data.emoji, data.action, data.user, this.currentUser.id);
message.react(data.emoji, data.action, data.user, this.currentUser.id);
}
} }
} }

View File

@ -11,7 +11,6 @@ RSpec.describe "React to message", type: :system, js: true do
before do before do
chat_system_bootstrap chat_system_bootstrap
category_channel_1.add(current_user) category_channel_1.add(current_user)
sign_in(current_user)
end end
context "when other user has reacted" do context "when other user has reacted" do
@ -25,11 +24,13 @@ RSpec.describe "React to message", type: :system, js: true do
shared_examples "inline reactions" do shared_examples "inline reactions" do
it "shows existing reactions under the message" do it "shows existing reactions under the message" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
expect(channel).to have_reaction(message_1, reaction_1) expect(channel).to have_reaction(message_1, reaction_1)
end end
it "increments when clicking it" do it "increments when clicking it" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
channel.click_reaction(message_1, reaction_1) channel.click_reaction(message_1, reaction_1)
expect(channel).to have_reaction(message_1, reaction_1, 2) expect(channel).to have_reaction(message_1, reaction_1, 2)
@ -57,6 +58,7 @@ RSpec.describe "React to message", type: :system, js: true do
context "when desktop" do context "when desktop" do
context "when using inline reaction button" do context "when using inline reaction button" do
it "adds a reaction" do it "adds a reaction" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
channel.hover_message(message_1) channel.hover_message(message_1)
find(".chat-message-react-btn").click find(".chat-message-react-btn").click
@ -65,19 +67,41 @@ RSpec.describe "React to message", type: :system, js: true do
expect(channel).to have_reaction(message_1, reaction_1) expect(channel).to have_reaction(message_1, reaction_1)
end end
xit "adds the reaction to the frequently used list" do context "when current user has multiple sessions" do
chat.visit_channel(category_channel_1) it "adds reaction on each session" do
channel.hover_message(message_1) reaction = OpenStruct.new(emoji: "nerd_face")
find(".chat-message-react-btn").click
find(".chat-emoji-picker [data-emoji=\"nerd_face\"]").click
channel.hover_message(message_1) using_session(:tab_1) do
sign_in(current_user)
chat.visit_channel(category_channel_1)
end
using_session(:tab_2) do
sign_in(current_user)
chat.visit_channel(category_channel_1)
end
using_session(:tab_1) do |session|
channel.hover_message(message_1)
find(".chat-message-react-btn").click
find(".chat-emoji-picker [data-emoji=\"#{reaction.emoji}\"]").click
expect(channel).to have_reaction(message_1, reaction)
session.quit
end
using_session(:tab_2) do |session|
expect(channel).to have_reaction(message_1, reaction)
session.quit
end
end
end end
end end
context "when using message actions menu" do context "when using message actions menu" do
context "when using the emoji picker" do context "when using the emoji picker" do
it "adds a reaction" do it "adds a reaction" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
channel.hover_message(message_1) channel.hover_message(message_1)
find(".chat-message-actions .react-btn").click find(".chat-message-actions .react-btn").click
@ -85,19 +109,11 @@ RSpec.describe "React to message", type: :system, js: true do
expect(channel).to have_reaction(message_1, reaction_1) expect(channel).to have_reaction(message_1, reaction_1)
end end
xit "adds the reaction to the frequently used list" do
chat.visit_channel(category_channel_1)
channel.hover_message(message_1)
find(".chat-message-actions .react-btn").click
find(".chat-emoji-picker [data-emoji=\"nerd_face\"]").click
channel.hover_message(message_1)
end
end end
context "when using frequent reactions" do context "when using frequent reactions" do
it "adds a reaction" do it "adds a reaction" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
channel.hover_message(message_1) channel.hover_message(message_1)
find(".chat-message-actions [data-emoji-name=\"+1\"").click find(".chat-message-actions [data-emoji-name=\"+1\"").click
@ -122,11 +138,13 @@ RSpec.describe "React to message", type: :system, js: true do
shared_examples "inline reactions" do shared_examples "inline reactions" do
it "shows existing reactions under the message" do it "shows existing reactions under the message" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
expect(channel).to have_reaction(message_1, reaction_1) expect(channel).to have_reaction(message_1, reaction_1)
end end
it "removes it when clicking it" do it "removes it when clicking it" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
channel.click_reaction(message_1, reaction_1) channel.click_reaction(message_1, reaction_1)
expect(channel).to have_no_reactions(message_1) expect(channel).to have_no_reactions(message_1)
@ -153,6 +171,7 @@ RSpec.describe "React to message", type: :system, js: true do
end end
it "doesnt create duplicate reactions" do it "doesnt create duplicate reactions" do
sign_in(current_user)
chat.visit_channel(category_channel_1) chat.visit_channel(category_channel_1)
Chat::Publisher.publish_reaction!(category_channel_1, message_1, "add", user_1, "heart") Chat::Publisher.publish_reaction!(category_channel_1, message_1, "add", user_1, "heart")