diff --git a/app/controllers/transactions/bulk_updates_controller.rb b/app/controllers/transactions/bulk_updates_controller.rb index 133452f21..e90e47cd3 100644 --- a/app/controllers/transactions/bulk_updates_controller.rb +++ b/app/controllers/transactions/bulk_updates_controller.rb @@ -8,6 +8,7 @@ class Transactions::BulkUpdatesController < ApplicationController .entries .excluding_split_parents .where(id: bulk_update_params[:entry_ids]) + .includes(:entryable) .bulk_update!(bulk_update_params, update_tags: tags_provided?) redirect_back_or_to transactions_path, notice: "#{updated} transactions updated" diff --git a/test/controllers/transactions/bulk_updates_controller_test.rb b/test/controllers/transactions/bulk_updates_controller_test.rb index 0ab7fc016..8e34ba2fc 100644 --- a/test/controllers/transactions/bulk_updates_controller_test.rb +++ b/test/controllers/transactions/bulk_updates_controller_test.rb @@ -33,6 +33,24 @@ class Transactions::BulkUpdatesControllerTest < ActionDispatch::IntegrationTest end end + test "bulk update preloads transaction records" do + transaction_ids = @user.family.entries.transactions.limit(4).pluck(:id) + + queries = capture_sql_queries do + post transactions_bulk_update_url, params: { + bulk_update: { + entry_ids: transaction_ids, + notes: "Updated in bulk" + } + } + end + + assert_redirected_to transactions_url + assert_empty queries.grep( + /SELECT "transactions"\.\* FROM "transactions" WHERE "transactions"\."id" =/ + ) + end + test "bulk update preserves tags when tag_ids not provided" do transaction_entry = @user.family.entries.transactions.first original_tags = [ Tag.first, Tag.second ]