1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-18 20:59:39 +02:00
Maybe/test/models/provider_test.rb
Zach Gollwitzer f65b93a352
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
2025-03-17 11:54:53 -04:00

61 lines
1.2 KiB
Ruby

require "test_helper"
require "ostruct"
class TestProvider < Provider
def fetch_data
provider_response(retries: 3) do
client.get("/test")
end
end
private
def client
@client ||= Faraday.new
end
def retryable_errors
[ Faraday::TimeoutError ]
end
end
class ProviderTest < ActiveSupport::TestCase
setup do
@provider = TestProvider.new
end
test "retries then provides failed response" do
client = mock
Faraday.stubs(:new).returns(client)
client.expects(:get)
.with("/test")
.raises(Faraday::TimeoutError)
.times(3)
response = @provider.fetch_data
assert_not response.success?
assert_match "timeout", response.error.message
end
test "fail, retry, succeed" do
client = mock
Faraday.stubs(:new).returns(client)
sequence = sequence("retry_sequence")
client.expects(:get)
.with("/test")
.raises(Faraday::TimeoutError)
.in_sequence(sequence)
client.expects(:get)
.with("/test")
.returns(Provider::ProviderResponse.new(success?: true, data: "success", error: nil))
.in_sequence(sequence)
response = @provider.fetch_data
assert response.success?
end
end