FEATURE: Add a shortcut to archive PM

This patch adds a new shortcut to allow archiving private messages. When
on a private message page, just type `a` to archive it. Typing `a` on an
already archived message will move it back to inbox.
This commit is contained in:
Loïc Guitaut
2023-08-31 17:10:24 +02:00
committed by Loïc Guitaut
parent 98dfc9df3f
commit cf8c3cf3f0
3 changed files with 51 additions and 1 deletions

View File

@@ -0,0 +1,45 @@
# frozen_string_literal: true
RSpec.describe "Keyboard shortcuts", type: :system do
describe "<a>" do
let(:current_user) { topic.user }
let(:topic_page) { PageObjects::Pages::Topic.new }
before { sign_in(current_user) }
context "when on a private message page" do
fab!(:topic) { Fabricate(:private_message_topic) }
context "when the message is not archived" do
it "archives the message" do
topic_page.visit_topic(topic)
send_keys("a")
expect(page).to have_current_path("/u/#{current_user.username}/messages")
expect(UserArchivedMessage.exists?(topic: topic)).to be true
end
end
context "when the message is already archived" do
before { UserArchivedMessage.create!(topic: topic, user: current_user) }
it "moves back the message to inbox" do
topic_page.visit_topic(topic)
send_keys("a")
expect(page).to have_current_path("/u/#{current_user.username}/messages")
expect(UserArchivedMessage.exists?(topic: topic)).to be false
end
end
end
context "when on a public topic page" do
fab!(:topic) { Fabricate(:topic) }
it "doesn't archive the topic" do
topic_page.visit_topic(topic)
send_keys("a")
expect(page).to have_current_path("/t/#{topic.slug}/#{topic.id}")
expect(UserArchivedMessage.exists?(topic: topic)).to be false
end
end
end
end