diff --git a/lib/fintoc/v2/managers/account_numbers_manager.rb b/lib/fintoc/v2/managers/account_numbers_manager.rb index a7ffd33..6b65a25 100644 --- a/lib/fintoc/v2/managers/account_numbers_manager.rb +++ b/lib/fintoc/v2/managers/account_numbers_manager.rb @@ -29,6 +29,10 @@ def update(account_number_id, idempotency_key: nil, **params) build_account_number(data) end + def delete(account_number_id) + _delete_account_number(account_number_id) + end + private def _create_account_number( @@ -55,6 +59,10 @@ def _update_account_number(account_number_id, idempotency_key: nil, **params) .call("account_numbers/#{account_number_id}", **params) end + def _delete_account_number(account_number_id) + @client.delete(version: :v2).call("account_numbers/#{account_number_id}") + end + def build_account_number(data) Fintoc::V2::AccountNumber.new(**data, client: @client) end diff --git a/lib/fintoc/v2/resources/account_number.rb b/lib/fintoc/v2/resources/account_number.rb index 3dac238..d0a179d 100644 --- a/lib/fintoc/v2/resources/account_number.rb +++ b/lib/fintoc/v2/resources/account_number.rb @@ -2,7 +2,8 @@ module Fintoc module V2 class AccountNumber attr_reader :id, :object, :description, :number, :created_at, :updated_at, - :mode, :status, :is_root, :account_id, :metadata + :mode, :status, :is_root, :account_id, :metadata, + :last_transfer_at, :deleted_at def initialize( id:, @@ -16,6 +17,8 @@ def initialize( is_root:, account_id:, metadata:, + last_transfer_at: nil, + deleted_at: nil, client: nil, ** ) @@ -30,6 +33,8 @@ def initialize( @is_root = is_root @account_id = account_id @metadata = metadata + @last_transfer_at = last_transfer_at + @deleted_at = deleted_at @client = client end @@ -84,9 +89,8 @@ def simulate_receive_transfer(amount:, currency: 'MXN', idempotency_key: nil) private def refresh_from_account_number(account_number) - unless account_number.id == @id - raise ArgumentError, 'AccountNumber must be the same instance' - end + raise ArgumentError, 'AccountNumber must be the same instance' unless + account_number.id == @id @object = account_number.object @description = account_number.description @@ -98,6 +102,8 @@ def refresh_from_account_number(account_number) @is_root = account_number.is_root @account_id = account_number.account_id @metadata = account_number.metadata + @last_transfer_at = account_number.last_transfer_at + @deleted_at = account_number.deleted_at self end diff --git a/spec/lib/fintoc/v2/managers/account_numbers_manager_spec.rb b/spec/lib/fintoc/v2/managers/account_numbers_manager_spec.rb index 4c83635..fe024fb 100644 --- a/spec/lib/fintoc/v2/managers/account_numbers_manager_spec.rb +++ b/spec/lib/fintoc/v2/managers/account_numbers_manager_spec.rb @@ -135,4 +135,20 @@ end end end + + describe '#delete' do + let(:delete_proc) { instance_double(Proc) } + + before do + allow(client).to receive(:delete).with(version: :v2).and_return(delete_proc) + allow(delete_proc) + .to receive(:call) + .with("account_numbers/#{account_number_id}") + .and_return(true) + end + + it 'calls delete on the client' do + expect(manager.delete(account_number_id)).to be true + end + end end