Files
fizzy/test/models/concerns/push_notifiable_test.rb
T
Rosa Gutierrez 3e5233239b Fix push notification not firing on notification creation
- Rails only applies the last callback when `after_create_commit` and
  `after_update_commit` reference the same method name [1]:

> However, if you use the `after_create_commit` and the
`after_update_commit` callback with the same method name, it will only
allow the last callback defined to take effect, as they both internally
alias to `after_commit` which overrides previously defined callbacks
with the same method name.

- Push notifications were never sent when a notification was first
  created — only when the source was updated
- Replaced the two callbacks with a single `after_save_commit`, which
  fires on both create and update, with the
  `source_id_previously_changed?` guard (true for both new records and
  source changes)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

[1] https://guides.rubyonrails.org/active_record_callbacks.html#aliases-for-after-commit
2026-02-20 18:37:33 +01:00

29 lines
847 B
Ruby

require "test_helper"
class PushNotifiableTest < ActiveSupport::TestCase
test "enqueues push notification job when notification is created" do
assert_enqueued_with(job: PushNotificationJob) do
users(:david).notifications.create!(
source: events(:layout_published),
creator: users(:jason)
)
end
end
test "enqueues push notification job when notification source changes" do
notification = notifications(:logo_mentioned_david)
assert_enqueued_with(job: PushNotificationJob) do
notification.update!(source: events(:logo_published))
end
end
test "does not enqueue push notification job for other updates" do
notification = notifications(:logo_mentioned_david)
assert_no_enqueued_jobs only: PushNotificationJob do
notification.update!(unread_count: 5)
end
end
end