mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-03 20:45:21 +02:00
43 lines
1.9 KiB
Ruby
43 lines
1.9 KiB
Ruby
|
require "test_helper"
|
||
|
|
||
|
class Family::AutoMerchantDetectorTest < ActiveSupport::TestCase
|
||
|
include EntriesTestHelper, ProviderTestHelper
|
||
|
|
||
|
setup do
|
||
|
@family = families(:dylan_family)
|
||
|
@account = @family.accounts.create!(name: "Rule test", balance: 100, currency: "USD", accountable: Depository.new)
|
||
|
@llm_provider = mock
|
||
|
Provider::Registry.stubs(:get_provider).with(:openai).returns(@llm_provider)
|
||
|
end
|
||
|
|
||
|
test "auto detects transaction merchants" do
|
||
|
txn1 = create_transaction(account: @account, name: "McDonalds").transaction
|
||
|
txn2 = create_transaction(account: @account, name: "Chipotle").transaction
|
||
|
txn3 = create_transaction(account: @account, name: "generic").transaction
|
||
|
|
||
|
provider_response = provider_success_response([
|
||
|
AutoDetectedMerchant.new(transaction_id: txn1.id, business_name: "McDonalds", business_url: "mcdonalds.com"),
|
||
|
AutoDetectedMerchant.new(transaction_id: txn2.id, business_name: "Chipotle", business_url: "chipotle.com"),
|
||
|
AutoDetectedMerchant.new(transaction_id: txn3.id, business_name: nil, business_url: nil)
|
||
|
])
|
||
|
|
||
|
@llm_provider.expects(:auto_detect_merchants).returns(provider_response).once
|
||
|
|
||
|
assert_difference "DataEnrichment.count", 2 do
|
||
|
Family::AutoMerchantDetector.new(@family, transaction_ids: [ txn1.id, txn2.id, txn3.id ]).auto_detect
|
||
|
end
|
||
|
|
||
|
assert_equal "McDonalds", txn1.reload.merchant.name
|
||
|
assert_equal "Chipotle", txn2.reload.merchant.name
|
||
|
assert_equal "https://logo.synthfinance.com/mcdonalds.com", txn1.reload.merchant.logo_url
|
||
|
assert_equal "https://logo.synthfinance.com/chipotle.com", txn2.reload.merchant.logo_url
|
||
|
assert_nil txn3.reload.merchant
|
||
|
|
||
|
# After auto-detection, all transactions are locked and no longer enrichable
|
||
|
assert_equal 0, @account.transactions.reload.enrichable(:merchant_id).count
|
||
|
end
|
||
|
|
||
|
private
|
||
|
AutoDetectedMerchant = Provider::LlmConcept::AutoDetectedMerchant
|
||
|
end
|