diff --git a/app/controllers/transfers_controller.rb b/app/controllers/transfers_controller.rb index a1a7e27c..c20ccacc 100644 --- a/app/controllers/transfers_controller.rb +++ b/app/controllers/transfers_controller.rb @@ -36,14 +36,11 @@ class TransfersController < ApplicationController end def update - if transfer_update_params[:status] == "rejected" - @transfer.reject! - elsif transfer_update_params[:status] == "confirmed" - @transfer.confirm! + Transfer.transaction do + update_transfer_status + update_transfer_details end - @transfer.outflow_transaction.update!(category_id: transfer_update_params[:category_id]) - respond_to do |format| format.html { redirect_back_or_to transactions_url, notice: t(".success") } format.turbo_stream @@ -69,4 +66,17 @@ class TransfersController < ApplicationController def transfer_update_params params.require(:transfer).permit(:notes, :status, :category_id) end + + def update_transfer_status + if transfer_update_params[:status] == "rejected" + @transfer.reject! + elsif transfer_update_params[:status] == "confirmed" + @transfer.confirm! + end + end + + def update_transfer_details + @transfer.outflow_transaction.update!(category_id: transfer_update_params[:category_id]) + @transfer.update!(notes: transfer_update_params[:notes]) + end end diff --git a/test/controllers/transfers_controller_test.rb b/test/controllers/transfers_controller_test.rb index 3c2961ca..3350b2c6 100644 --- a/test/controllers/transfers_controller_test.rb +++ b/test/controllers/transfers_controller_test.rb @@ -30,4 +30,15 @@ class TransfersControllerTest < ActionDispatch::IntegrationTest delete transfer_url(transfers(:one)) end end + + test "can add notes to transfer" do + transfer = transfers(:one) + assert_nil transfer.notes + + patch transfer_url(transfer), params: { transfer: { notes: "Test notes" } } + + assert_redirected_to transactions_url + assert_equal "Transfer updated", flash[:notice] + assert_equal "Test notes", transfer.reload.notes + end end