Merge branch 'main' into mobile/search-scrolling
* main: Extract event particulars helper method Reapply "Push event payload body updates" Bump z-index Bump z-index dep: Fix up Gemfile.saas.lock
This commit is contained in:
+3
-2
@@ -164,7 +164,7 @@ GIT
|
||||
|
||||
GIT
|
||||
remote: https://github.com/rails/web-console.git
|
||||
revision: bdbb39114348b037a515b2ce75a47457b0e647d1
|
||||
revision: 90e3474306f2367cfeaf2875e91e2bc2d71b5f0f
|
||||
specs:
|
||||
web-console (4.3.0)
|
||||
actionview (>= 8.0.0)
|
||||
@@ -382,6 +382,7 @@ GEM
|
||||
logger
|
||||
mini_mime (1.1.5)
|
||||
minitest (6.0.2)
|
||||
drb (~> 2.0)
|
||||
prism (~> 1.5)
|
||||
mission_control-jobs (1.1.0)
|
||||
actioncable (>= 7.1)
|
||||
@@ -509,7 +510,7 @@ GEM
|
||||
minitest
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.7.0)
|
||||
loofah (~> 2.21)
|
||||
loofah (~> 2.25)
|
||||
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
||||
rainbow (3.1.1)
|
||||
rake (13.3.1)
|
||||
|
||||
@@ -286,6 +286,7 @@
|
||||
inset-inline-end: 0;
|
||||
position: absolute;
|
||||
translate: 100%;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
|
||||
@@ -91,6 +91,10 @@
|
||||
.card__board {
|
||||
border-radius: 0 var(--border-radius) var(--border-radius) 0;
|
||||
}
|
||||
|
||||
.card-perma__notch--bottom {
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Search
|
||||
|
||||
@@ -22,8 +22,32 @@ class Notification::EventPayload < Notification::DefaultPayload
|
||||
card.closure ? "Moved to Done by #{event.creator.name}" : "Closed by #{event.creator.name}"
|
||||
when "card_reopened"
|
||||
"Reopened by #{event.creator.name}"
|
||||
when "card_triaged"
|
||||
if column_name.present?
|
||||
"Moved to #{column_name} by #{event.creator.name}"
|
||||
else
|
||||
"Moved by #{event.creator.name}"
|
||||
end
|
||||
when "card_sent_back_to_triage"
|
||||
"Moved back to Maybe? by #{event.creator.name}"
|
||||
when "card_board_changed", "card_collection_changed"
|
||||
if new_location_name.present?
|
||||
"Moved to #{new_location_name} by #{event.creator.name}"
|
||||
else
|
||||
"Moved by #{event.creator.name}"
|
||||
end
|
||||
when "card_title_changed"
|
||||
if new_title.present?
|
||||
"Renamed to #{new_title} by #{event.creator.name}"
|
||||
else
|
||||
"Renamed by #{event.creator.name}"
|
||||
end
|
||||
when "card_postponed"
|
||||
"Moved to Not Now by #{event.creator.name}"
|
||||
when "card_auto_postponed"
|
||||
"Moved to Not Now due to inactivity"
|
||||
else
|
||||
event.creator.name
|
||||
"Updated by #{event.creator.name}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -57,6 +81,22 @@ class Notification::EventPayload < Notification::DefaultPayload
|
||||
card.title.presence || "Card #{card.number}"
|
||||
end
|
||||
|
||||
def event_particulars
|
||||
event.particulars.dig("particulars") || {}
|
||||
end
|
||||
|
||||
def column_name
|
||||
event_particulars["column"]
|
||||
end
|
||||
|
||||
def new_location_name
|
||||
event_particulars["new_board"] || event_particulars["new_collection"]
|
||||
end
|
||||
|
||||
def new_title
|
||||
event_particulars["new_title"]
|
||||
end
|
||||
|
||||
def card_url_with_comment_anchor(comment)
|
||||
Rails.application.routes.url_helpers.card_url(
|
||||
comment.card,
|
||||
|
||||
@@ -65,6 +65,210 @@ class Notification::PushTarget::WebTest < ActiveSupport::TestCase
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for triage includes column name" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_triaged", particulars: { "particulars" => { "column" => "In Progress" } })
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved to In Progress by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for triage falls back when column name is missing" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_triaged", particulars: {})
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for triage falls back when column name is blank" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_triaged", particulars: { "particulars" => { "column" => "" } })
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for sent back to triage includes Maybe?" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_sent_back_to_triage")
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved back to Maybe? by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for board change includes new board name" do
|
||||
event = events(:logo_published)
|
||||
event.update!(
|
||||
action: "card_board_changed",
|
||||
particulars: { "particulars" => { "old_board" => "Old Board", "new_board" => "New Board" } }
|
||||
)
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved to New Board by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for board change falls back when board name is missing" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_board_changed", particulars: {})
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for board change falls back when board name is blank" do
|
||||
event = events(:logo_published)
|
||||
event.update!(
|
||||
action: "card_board_changed",
|
||||
particulars: { "particulars" => { "new_board" => "" } }
|
||||
)
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for collection change includes new collection name" do
|
||||
event = events(:logo_published)
|
||||
event.update!(
|
||||
action: "card_collection_changed",
|
||||
particulars: { "particulars" => { "new_collection" => "New Collection" } }
|
||||
)
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved to New Collection by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for collection change falls back when collection name is missing" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_collection_changed", particulars: {})
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for collection change falls back when collection name is blank" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_collection_changed", particulars: { "particulars" => { "new_collection" => "" } })
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for title change includes new title" do
|
||||
event = events(:logo_published)
|
||||
event.update!(
|
||||
action: "card_title_changed",
|
||||
particulars: { "particulars" => { "old_title" => "Old Title", "new_title" => "New Title" } }
|
||||
)
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Renamed to New Title by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for title change falls back when title is missing" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_title_changed", particulars: {})
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Renamed by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for title change falls back when title is blank" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_title_changed", particulars: { "particulars" => { "new_title" => "" } })
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Renamed by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for postponed includes Not Now" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_postponed")
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved to Not Now by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for auto postponed includes inactivity message" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_auto_postponed")
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Moved to Not Now due to inactivity"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for unhandled action uses updated fallback message" do
|
||||
event = events(:logo_published)
|
||||
event.update!(action: "card_unassigned")
|
||||
@notification.update!(source: event)
|
||||
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:body] == "Updated by #{event.creator.name}"
|
||||
end
|
||||
|
||||
Notification::PushTarget::Web.new(@notification).process
|
||||
end
|
||||
|
||||
test "payload for mention includes mentioner name" do
|
||||
@web_push_pool.expects(:queue).once.with do |payload, _|
|
||||
payload[:title].include?("mentioned you")
|
||||
|
||||
Reference in New Issue
Block a user