diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index 825f81bfc..6a8ebe03f 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -1,9 +1,9 @@ module EventsHelper def event_column(event) case event.action - when "closed" + when "card_closed" 3 - when "published" + when "card_published" 1 else 2 @@ -32,9 +32,9 @@ module EventsHelper def render_column_headers(day_timeline) headers = { - "Added" => day_timeline.events.where(action: "published").count, + "Added" => day_timeline.events.where(action: "card_published").count, "Updated" => nil, - "Closed" => day_timeline.events.where(action: "closed").count + "Closed" => day_timeline.events.where(action: "card_closed").count } headers.map do |header, count| @@ -45,46 +45,46 @@ module EventsHelper def event_action_sentence(event) case event.action - when "assigned" + when "card_assigned" if event.assignees.include?(Current.user) "#{ event.creator == Current.user ? "You" : event.creator.name } will handle #{ event.eventable.title }".html_safe else "#{ event.creator == Current.user ? "You" : event.creator.name } assigned #{ event.assignees.pluck(:name).to_sentence } to #{ event.eventable.title }".html_safe end - when "unassigned" + when "card_unassigned" "#{ event.creator == Current.user ? "You" : event.creator.name } unassigned #{ event.assignees.include?(Current.user) ? "yourself" : event.assignees.pluck(:name).to_sentence } from #{ event.eventable.title }".html_safe - when "commented" + when "card_commented" "#{ event.creator == Current.user ? "You" : event.creator.name } commented on #{ event.eventable.title }".html_safe - when "published" + when "card_published" "#{ event.creator == Current.user ? "You" : event.creator.name } added #{ event.eventable.title }".html_safe - when "closed" + when "card_closed" "#{ event.creator == Current.user ? "You" : event.creator.name } closed #{ event.eventable.title }".html_safe - when "staged" + when "card_staged" "#{event.creator == Current.user ? "You" : event.creator.name} moved #{ event.eventable.title } to the #{event.stage_name} stage".html_safe - when "unstaged" + when "card_unstaged" "#{event.creator == Current.user ? "You" : event.creator.name} moved #{ event.eventable.title } out ofthe #{event.stage_name} stage".html_safe - when "due_date_added" + when "card_due_date_added" "#{event.creator == Current.user ? "You" : event.creator.name} set the date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on #{ event.eventable.title }".html_safe - when "due_date_changed" + when "card_due_date_changed" "#{event.creator == Current.user ? "You" : event.creator.name} changed the date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')} on #{ event.eventable.title }".html_safe - when "due_date_removed" + when "card_due_date_removed" "#{event.creator == Current.user ? "You" : event.creator.name} removed the date on #{ event.eventable.title }" - when "title_changed" + when "card_title_changed" "#{event.creator == Current.user ? "You" : event.creator.name} renamed #{ event.eventable.title } (was: '#{event.particulars.dig('particulars', 'old_title')})'".html_safe end end def event_action_icon(event) case event.action - when "assigned" - "assigned" - when "staged" + when "card_assigned" + "card_assigned" + when "card_staged" "bolt" - when "unstaged" + when "card_unstaged" "bolt" - when "commented" + when "card_commented" "comment" - when "title_changed" + when "card_title_changed" "rename" else "person" diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb index cbb1774a0..344e5c0f4 100644 --- a/app/helpers/notifications_helper.rb +++ b/app/helpers/notifications_helper.rb @@ -1,8 +1,8 @@ module NotificationsHelper def event_notification_title(event) case event_notification_action(event) - when "commented" then "RE: " + event.eventable.title - when "assigned" then "Assigned to you: " + event.eventable.title + when "card_commented" then "RE: " + event.eventable.title + when "card_assigned" then "Assigned to you: " + event.eventable.title else event.eventable.title end end @@ -11,9 +11,9 @@ module NotificationsHelper name = event.creator.name case event_notification_action(event) - when "closed" then "Closed by #{name}" - when "published" then "Added by #{name}" - when "commented" then comment_notification_body(event) + when "card_closed" then "Closed by #{name}" + when "card_published" then "Added by #{name}" + when "card_commented" then comment_notification_body(event) else name end end @@ -49,7 +49,7 @@ module NotificationsHelper private def event_notification_action(event) if event.initial_assignment? - "assigned" + "card_assigned" else event.action end diff --git a/app/models/card/eventable.rb b/app/models/card/eventable.rb index 7ac190f3d..51c760fde 100644 --- a/app/models/card/eventable.rb +++ b/app/models/card/eventable.rb @@ -31,18 +31,18 @@ module Card::Eventable def track_due_date_change if due_on.present? if due_on_before_last_save.nil? - track_event("due_date_added", particulars: { due_date: due_on }) + track_event("card_due_date_added", particulars: { due_date: due_on }) else - track_event("due_date_changed", particulars: { due_date: due_on }) + track_event("card_due_date_changed", particulars: { due_date: due_on }) end elsif due_on_before_last_save.present? - track_event("due_date_removed") + track_event("card_due_date_removed") end end def track_title_change if title_before_last_save.present? - track_event "title_changed", particulars: { old_title: title_before_last_save, new_title: title } + track_event "card_title_changed", particulars: { old_title: title_before_last_save, new_title: title } end end end diff --git a/app/models/event.rb b/app/models/event.rb index 3b2dca64c..1cf31aa13 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -24,6 +24,6 @@ class Event < ApplicationRecord # TODO: This doesn't belong here anymore def initial_assignment? - action == "published" && eventable.assigned_to?(creator) + action == "card_published" && eventable.assigned_to?(creator) end end diff --git a/app/models/event_summary.rb b/app/models/event_summary.rb index 241d3cc3c..f04841e66 100644 --- a/app/models/event_summary.rb +++ b/app/models/event_summary.rb @@ -13,23 +13,23 @@ class EventSummary < ApplicationRecord def summarize(event) case event.action - when "assigned" + when "card_assigned" "Assigned to #{event.assignees.pluck(:name).to_sentence}." - when "unassigned" + when "card_unassigned" "Unassigned from #{event.assignees.pluck(:name).to_sentence}." - when "staged" + when "card_staged" "#{event.creator.name} moved this to '#{event.stage_name}'." - when "closed" + when "card_closed" "Closed by #{ event.creator.name }" - when "unstaged" + when "card_unstaged" "#{event.creator.name} removed this from '#{event.stage_name}'." - when "due_date_added" + when "card_due_date_added" "#{event.creator.name} set due date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')}." - when "due_date_changed" + when "card_due_date_changed" "#{event.creator.name} changed due date to #{event.particulars.dig('particulars', 'due_date').to_date.strftime('%B %-d')}." - when "due_date_removed" + when "card_due_date_removed" "#{event.creator.name} removed the date." - when "title_changed" + when "card_title_changed" "#{event.creator.name} changed title from '#{event.particulars.dig('particulars', 'old_title')}' to '#{event.particulars.dig('particulars', 'new_title')}'." end end diff --git a/app/models/eventable.rb b/app/models/eventable.rb index 183c638d5..e14803f09 100644 --- a/app/models/eventable.rb +++ b/app/models/eventable.rb @@ -7,7 +7,7 @@ module Eventable def track_event(action, creator: Current.user, collection: self.collection, **particulars) if should_track_event? - collection.events.create!(action:, creator:, collection:, eventable: self, particulars:) + collection.events.create!(action: "#{eventable_prefix}_#{action}", creator:, collection:, eventable: self, particulars:) end end @@ -18,4 +18,8 @@ module Eventable def should_track_event? true end + + def eventable_prefix + self.class.name.demodulize.underscore + end end diff --git a/app/models/notifier/event_notifier.rb b/app/models/notifier/event_notifier.rb index e7b11b4d8..eb7e77cb5 100644 --- a/app/models/notifier/event_notifier.rb +++ b/app/models/notifier/event_notifier.rb @@ -5,11 +5,11 @@ class Notifier::EventNotifier < Notifier private def recipients case source.action - when "assigned" + when "card_assigned" source.assignees.excluding(source.collection.access_only_users) - when "published" + when "card_published" watchers_and_subscribers(include_only_watching: true).without(creator, *card.mentionees) - when "commented" + when "card_commented" watchers_and_subscribers.without(creator, *source.comment.mentionees) else watchers_and_subscribers.without(creator) diff --git a/app/views/events/_event.html.erb b/app/views/events/_event.html.erb index a27058abe..867324c66 100644 --- a/app/views/events/_event.html.erb +++ b/app/views/events/_event.html.erb @@ -22,7 +22,7 @@ <% end %> - <% if event.action == "commented" && !strip_tags(event&.comment&.body_html).blank? %> + <% if event.action == "card_commented" && !strip_tags(event&.comment&.body_html).blank? %> <%= strip_tags(event.comment.body_html).truncate(200) -%> diff --git a/test/fixtures/events.yml b/test/fixtures/events.yml index 11c8b46e9..bf65e5486 100644 --- a/test/fixtures/events.yml +++ b/test/fixtures/events.yml @@ -2,7 +2,7 @@ logo_published: creator: david collection: writebook eventable: logo (Card) - action: published + action: card_published summary: logo_initial_activity created_at: <%= 1.week.ago %> @@ -10,7 +10,7 @@ logo_assignment_jz: creator: david collection: writebook eventable: logo (Card) - action: assigned + action: card_assigned summary: logo_initial_activity particulars: <%= { assignee_ids: [ ActiveRecord::FixtureSet.identify(:jz) ] }.to_json %> created_at: <%= 1.week.ago + 1.hour %> @@ -19,7 +19,7 @@ logo_assignment_km: creator: david collection: writebook eventable: logo (Card) - action: assigned + action: card_assigned summary: logo_second_activity particulars: <%= { assignee_ids: [ ActiveRecord::FixtureSet.identify(:kevin) ] }.to_json %> created_at: <%= 1.day.ago %> @@ -28,7 +28,7 @@ layout_published: creator: david collection: writebook eventable: layout (Card) - action: published + action: card_published summary: layout_initial_activity created_at: <%= 1.week.ago %> @@ -36,7 +36,7 @@ layout_commented: creator: david collection: writebook eventable: layout (Card) - action: commented + action: card_commented summary: layout_initial_activity particulars: <%= { comment_id: ActiveRecord::FixtureSet.identify(:layout_overflowing_david) }.to_json %> created_at: <%= 1.week.ago %> @@ -45,7 +45,7 @@ layout_assignment_jz: creator: david collection: writebook eventable: layout (Card) - action: assigned + action: card_assigned summary: layout_initial_activity particulars: <%= { assignee_ids: [ ActiveRecord::FixtureSet.identify(:jz) ] }.to_json %> created_at: <%= 1.hour.ago %> @@ -54,7 +54,7 @@ text_published: creator: kevin collection: writebook eventable: text (Card) - action: published + action: card_published summary: text_initial_activity created_at: <%= 1.week.ago %> @@ -62,7 +62,7 @@ shipping_published: creator: kevin collection: writebook eventable: shipping (Card) - action: published + action: card_published summary: shipping_initial_activity created_at: <%= 1.week.ago %> @@ -70,6 +70,6 @@ shipping_closed: creator: kevin collection: writebook eventable: shipping (Card) - action: closed + action: card_closed summary: shipping_initial_activity created_at: <%= 2.days.ago %> diff --git a/test/integration/card_messages.rb b/test/integration/card_messages.rb index 0253e45f3..257619ede 100644 --- a/test/integration/card_messages.rb +++ b/test/integration/card_messages.rb @@ -24,6 +24,6 @@ class CardMessagesTest < ActionDispatch::IntegrationTest assert_equal 3, card.messages.count assert_predicate card.messages.last, :event_summary? assert_equal 1, card.messages.last.event_summary.events.count - assert_equal "assigned", card.messages.last.messageable.events.last.action + assert_equal "card_assigned", card.messages.last.messageable.events.last.action end end diff --git a/test/models/card/staged_test.rb b/test/models/card/staged_test.rb index 492374fb5..ce12a75f3 100644 --- a/test/models/card/staged_test.rb +++ b/test/models/card/staged_test.rb @@ -4,7 +4,7 @@ class Card::StagedTest < ActiveSupport::TestCase setup { Current.session = sessions(:david) } test "change stage" do - assert_difference -> { Event.where(action: :staged).count }, +1 do + assert_difference -> { Event.where(action: :card_staged).count }, +1 do cards(:logo).change_stage_to(workflow_stages(:qa_in_progress)) assert_equal workflow_stages(:qa_in_progress), cards(:logo).reload.stage end diff --git a/test/models/card_test.rb b/test/models/card_test.rb index 3d251e278..39add0d99 100644 --- a/test/models/card_test.rb +++ b/test/models/card_test.rb @@ -25,14 +25,14 @@ class CardTest < ActiveSupport::TestCase cards(:logo).toggle_assignment users(:kevin) end assert_not cards(:logo).assigned_to?(users(:kevin)) - assert_equal "unassigned", Event.last.action + assert_equal "card_unassigned", Event.last.action assert_equal [ users(:kevin) ], Event.last.assignees assert_difference %w[ cards(:logo).assignees.count Event.count ], +1 do cards(:logo).toggle_assignment users(:kevin) end assert cards(:logo).assigned_to?(users(:kevin)) - assert_equal "assigned", Event.last.action + assert_equal "card_assigned", Event.last.action assert_equal [ users(:kevin) ], Event.last.assignees end @@ -74,7 +74,7 @@ class CardTest < ActiveSupport::TestCase assert_equal cards(:logo, :layout, :text), Card.open end - test "unassigned" do + test "card_unassigned" do assert_equal cards(:shipping, :text), Card.unassigned end