From d611b2cc6cc2f7896ebd0d0e72eadf2cf54f0629 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Wed, 4 Feb 2026 15:04:28 -0500 Subject: [PATCH] Move comment events when card moves to a new board (#2486) When a card moves between boards, comment events were staying on the old board. Now they move with the card. --- app/models/card.rb | 1 + test/models/card_test.rb | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/models/card.rb b/app/models/card.rb index d422afa85..c3c0b9173 100644 --- a/app/models/card.rb +++ b/app/models/card.rb @@ -58,6 +58,7 @@ class Card < ApplicationRecord transaction do card.update!(board: new_board) card.events.update_all(board_id: new_board.id) + Event.where(eventable: card.comments).update_all(board_id: new_board.id) end end diff --git a/test/models/card_test.rb b/test/models/card_test.rb index 6ce17d924..93aa2929c 100644 --- a/test/models/card_test.rb +++ b/test/models/card_test.rb @@ -128,25 +128,29 @@ class CardTest < ActiveSupport::TestCase test "move cards to a different board" do card = cards(:logo) - old_board = boards(:writebook) + old_board = card.board new_board = boards(:private) - assert_equal old_board, card.board + card.comments.create!(body: "Sensitive information", creator: users(:david)) - assert card.events.where(board: old_board).exists? + card_events_on_old_board = card.events.where(board: old_board) + comment_events_on_old_board = Event.where(board: old_board, eventable: card.comments) + + assert card_events_on_old_board.exists? + assert comment_events_on_old_board.exists? card.move_to(new_board) assert_equal new_board, card.reload.board - events_in_old_board = card.events.where(board: old_board) - events_in_new_board = card.events.where(board: new_board) + card_events_on_new_board = card.events.where(board: new_board) + comment_events_on_new_board = Event.where(board: new_board, eventable: card.comments) - assert_empty events_in_old_board - assert events_in_new_board.exists? - - board_changed_event = events_in_new_board.find { |event| event.action == "card_board_changed" } - assert board_changed_event + assert_empty card_events_on_old_board + assert_empty comment_events_on_old_board + assert card_events_on_new_board.exists? + assert comment_events_on_new_board.exists? + assert card_events_on_new_board.find_by(action: "card_board_changed") end test "a card is filled if it has either the title or the description set" do