From 72fd17770734e731ca0acc0e87db198fce5f020e Mon Sep 17 00:00:00 2001 From: Zach Gollwitzer Date: Mon, 20 Jan 2025 15:12:53 -0500 Subject: [PATCH] Do not raise on Plaid item not found exceptions for item deletions (#1646) --- app/models/plaid_item.rb | 2 ++ test/models/plaid_item_test.rb | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/app/models/plaid_item.rb b/app/models/plaid_item.rb index 79087900..cbbe14bb 100644 --- a/app/models/plaid_item.rb +++ b/app/models/plaid_item.rb @@ -131,5 +131,7 @@ class PlaidItem < ApplicationRecord def remove_plaid_item plaid_provider.remove_item(access_token) + rescue StandardError => e + Rails.logger.warn("Failed to remove Plaid item #{id}: #{e.message}") end end diff --git a/test/models/plaid_item_test.rb b/test/models/plaid_item_test.rb index d689e855..e18b1785 100644 --- a/test/models/plaid_item_test.rb +++ b/test/models/plaid_item_test.rb @@ -18,4 +18,16 @@ class PlaidItemTest < ActiveSupport::TestCase @plaid_item.destroy end end + + test "if plaid item not found, silently continues with deletion" do + @plaid_provider = mock + + PlaidItem.stubs(:plaid_provider).returns(@plaid_provider) + + @plaid_provider.expects(:remove_item).with(@plaid_item.access_token).raises(Plaid::ApiError.new("Item not found")) + + assert_difference "PlaidItem.count", -1 do + @plaid_item.destroy + end + end end