mirror of
https://github.com/we-promise/sure.git
synced 2026-05-25 21:44:56 +00:00
* Display multi-currency holdings correctly * Implement IBKR provider * Fix: Use historical exchange rate for historical prices * Add brokerage exchange rate for trades * Sync historical balances from IBKR * Add logos in activity history * Fix privacy mode blur in account view * Improve IBKR XML Flex report parser errors
43 lines
1.5 KiB
Ruby
43 lines
1.5 KiB
Ruby
require "test_helper"
|
|
|
|
class IbkrItemImporterTest < ActiveSupport::TestCase
|
|
setup do
|
|
@family = families(:empty)
|
|
@ibkr_item = @family.ibkr_items.create!(
|
|
name: "Interactive Brokers",
|
|
query_id: "QUERY123",
|
|
token: "TOKEN123"
|
|
)
|
|
end
|
|
|
|
test "imports accounts from parsed flex statement" do
|
|
provider = mock("ibkr_provider")
|
|
provider.expects(:download_statement).returns(file_fixture("ibkr/flex_statement.xml").read)
|
|
|
|
assert_difference "IbkrAccount.count", 2 do
|
|
result = IbkrItem::Importer.new(@ibkr_item, ibkr_provider: provider).import
|
|
assert_equal true, result[:success]
|
|
assert_equal 2, result[:accounts_imported]
|
|
end
|
|
|
|
primary_account = @ibkr_item.ibkr_accounts.find_by!(ibkr_account_id: "U1234567")
|
|
assert_equal "CHF", primary_account.currency
|
|
assert_equal BigDecimal("3351.0"), primary_account.current_balance
|
|
assert_equal 2, primary_account.raw_equity_summary_payload.size
|
|
assert_equal 1, primary_account.raw_holdings_payload.size
|
|
assert_equal 2, primary_account.raw_activities_payload["trades"].size
|
|
assert_equal 2, primary_account.raw_activities_payload["cash_transactions"].size
|
|
end
|
|
|
|
test "raises parse error for malformed flex statement xml" do
|
|
provider = mock("ibkr_provider")
|
|
provider.expects(:download_statement).returns("<FlexQueryResponse><FlexStatement>")
|
|
|
|
error = assert_raises(IbkrItem::ReportParser::ParseError) do
|
|
IbkrItem::Importer.new(@ibkr_item, ibkr_provider: provider).import
|
|
end
|
|
|
|
assert_match "Invalid IBKR Flex XML", error.message
|
|
end
|
|
end
|