mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 15:49:39 +02:00
Data provider simplification, tests, and documentation (#1997)
* Ignore env.test from source control * Simplification of providers interface * Synth tests * Update money to use new find rates method * Remove unused issues code * Additional issue feature removals * Update price data fetching and tests * Update documentation for providers * Security test fixes * Fix self host test * Update synth usage data access * Remove AI pr schema changes
This commit is contained in:
parent
dd75cadebc
commit
f65b93a352
95 changed files with 2014 additions and 1638 deletions
|
@ -2,55 +2,42 @@ require "test_helper"
|
|||
require "ostruct"
|
||||
|
||||
class Provider::SynthTest < ActiveSupport::TestCase
|
||||
include ExchangeRateProviderInterfaceTest, SecurityPriceProviderInterfaceTest
|
||||
include ExchangeRateProviderInterfaceTest, SecurityProviderInterfaceTest
|
||||
|
||||
setup do
|
||||
@subject = @synth = Provider::Synth.new(ENV["SYNTH_API_KEY"])
|
||||
end
|
||||
|
||||
test "fetches paginated securities prices" do
|
||||
VCR.use_cassette("synth/security_prices") do
|
||||
response = @synth.fetch_security_prices(
|
||||
ticker: "AAPL",
|
||||
mic_code: "XNAS",
|
||||
start_date: Date.iso8601("2024-01-01"),
|
||||
end_date: Date.iso8601("2024-08-01")
|
||||
)
|
||||
|
||||
assert 213, response.size
|
||||
test "health check" do
|
||||
VCR.use_cassette("synth/health") do
|
||||
assert @synth.healthy?
|
||||
end
|
||||
end
|
||||
|
||||
test "fetches paginated exchange_rate historical data" do
|
||||
VCR.use_cassette("synth/exchange_rate_historical") do
|
||||
response = @synth.fetch_exchange_rates(
|
||||
from: "USD", to: "GBP", start_date: Date.parse("01.01.2024"), end_date: Date.parse("31.07.2024")
|
||||
)
|
||||
|
||||
assert 213, response.rates.size # 213 days between 01.01.2024 and 31.07.2024
|
||||
assert_equal [ :date, :rate ], response.rates.first.keys
|
||||
test "usage info" do
|
||||
VCR.use_cassette("synth/usage") do
|
||||
usage = @synth.usage.data
|
||||
assert usage.used.present?
|
||||
assert usage.limit.present?
|
||||
assert usage.utilization.present?
|
||||
assert usage.plan.present?
|
||||
end
|
||||
end
|
||||
|
||||
test "retries then provides failed response" do
|
||||
@client = mock
|
||||
Faraday.stubs(:new).returns(@client)
|
||||
test "enriches transaction" do
|
||||
VCR.use_cassette("synth/transaction_enrich") do
|
||||
response = @synth.enrich_transaction(
|
||||
"UBER EATS",
|
||||
amount: 25.50,
|
||||
date: Date.iso8601("2025-03-16"),
|
||||
city: "San Francisco",
|
||||
state: "CA",
|
||||
country: "US"
|
||||
)
|
||||
|
||||
@client.expects(:get).returns(OpenStruct.new(success?: false)).times(3)
|
||||
|
||||
response = @synth.fetch_exchange_rate from: "USD", to: "MXN", date: Date.iso8601("2024-08-01")
|
||||
|
||||
assert_match "Failed to fetch data from Provider::Synth", response.error.message
|
||||
end
|
||||
|
||||
test "retrying, then raising on network error" do
|
||||
@client = mock
|
||||
Faraday.stubs(:new).returns(@client)
|
||||
|
||||
@client.expects(:get).raises(Faraday::TimeoutError).times(3)
|
||||
|
||||
assert_raises Faraday::TimeoutError do
|
||||
@synth.fetch_exchange_rate from: "USD", to: "MXN", date: Date.iso8601("2024-08-01")
|
||||
data = response.data
|
||||
assert data.name.present?
|
||||
assert data.category.present?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue