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) {
if (data.user.id !== this.currentUser.id) {
const message = this.args.channel.messagesManager.findMessage(
data.chat_message_id
);
if (message) {
message.react(data.emoji, data.action, data.user, this.currentUser.id);
}
const message = this.args.channel.messagesManager.findMessage(
data.chat_message_id
);
if (message) {
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
chat_system_bootstrap
category_channel_1.add(current_user)
sign_in(current_user)
end
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
it "shows existing reactions under the message" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
expect(channel).to have_reaction(message_1, reaction_1)
end
it "increments when clicking it" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
channel.click_reaction(message_1, reaction_1)
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 using inline reaction button" do
it "adds a reaction" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
channel.hover_message(message_1)
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)
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-react-btn").click
find(".chat-emoji-picker [data-emoji=\"nerd_face\"]").click
context "when current user has multiple sessions" do
it "adds reaction on each session" do
reaction = OpenStruct.new(emoji: "nerd_face")
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
context "when using message actions menu" do
context "when using the emoji picker" do
it "adds a reaction" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
channel.hover_message(message_1)
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)
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
context "when using frequent reactions" do
it "adds a reaction" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
channel.hover_message(message_1)
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
it "shows existing reactions under the message" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
expect(channel).to have_reaction(message_1, reaction_1)
end
it "removes it when clicking it" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
channel.click_reaction(message_1, reaction_1)
expect(channel).to have_no_reactions(message_1)
@ -153,6 +171,7 @@ RSpec.describe "React to message", type: :system, js: true do
end
it "doesnt create duplicate reactions" do
sign_in(current_user)
chat.visit_channel(category_channel_1)
Chat::Publisher.publish_reaction!(category_channel_1, message_1, "add", user_1, "heart")