mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-21 14:19:39 +02:00
129 lines
3.3 KiB
Ruby
129 lines
3.3 KiB
Ruby
|
require "ostruct"
|
||
|
|
||
|
module PlaidTestHelper
|
||
|
PLAID_TEST_ACCOUNT_ID = "plaid_test_account_id"
|
||
|
PLAID_TEST_CASH_SECURITY_ID = "plaid_test_cash_security_id"
|
||
|
|
||
|
# Special case
|
||
|
def create_plaid_cash_security(attributes = {})
|
||
|
default_attributes = {
|
||
|
close_price: nil,
|
||
|
close_price_as_of: nil,
|
||
|
cusip: nil,
|
||
|
fixed_income: nil,
|
||
|
industry: nil,
|
||
|
institution_id: nil,
|
||
|
institution_security_id: nil,
|
||
|
is_cash_equivalent: false, # Plaid sometimes returns false here (bad data), so we should not rely on it
|
||
|
isin: nil,
|
||
|
iso_currency_code: "USD",
|
||
|
market_identifier_code: nil,
|
||
|
name: "US Dollar",
|
||
|
option_contract: nil,
|
||
|
proxy_security_id: nil,
|
||
|
sector: nil,
|
||
|
security_id: PLAID_TEST_CASH_SECURITY_ID,
|
||
|
sedol: nil,
|
||
|
ticker_symbol: "CUR:USD",
|
||
|
type: "cash",
|
||
|
unofficial_currency_code: nil,
|
||
|
update_datetime: nil
|
||
|
}
|
||
|
|
||
|
OpenStruct.new(
|
||
|
default_attributes.merge(attributes)
|
||
|
)
|
||
|
end
|
||
|
|
||
|
def create_plaid_security(attributes = {})
|
||
|
default_attributes = {
|
||
|
close_price: 606.71,
|
||
|
close_price_as_of: Date.current,
|
||
|
cusip: nil,
|
||
|
fixed_income: nil,
|
||
|
industry: "Mutual Funds",
|
||
|
institution_id: nil,
|
||
|
institution_security_id: nil,
|
||
|
is_cash_equivalent: false,
|
||
|
isin: nil,
|
||
|
iso_currency_code: "USD",
|
||
|
market_identifier_code: "XNAS",
|
||
|
name: "iShares S&P 500 Index",
|
||
|
option_contract: nil,
|
||
|
proxy_security_id: nil,
|
||
|
sector: "Financial",
|
||
|
security_id: "plaid_test_security_id",
|
||
|
sedol: "2593025",
|
||
|
ticker_symbol: "IVV",
|
||
|
type: "etf",
|
||
|
unofficial_currency_code: nil,
|
||
|
update_datetime: nil
|
||
|
}
|
||
|
|
||
|
OpenStruct.new(
|
||
|
default_attributes.merge(attributes)
|
||
|
)
|
||
|
end
|
||
|
|
||
|
def create_plaid_cash_holding(attributes = {})
|
||
|
default_attributes = {
|
||
|
account_id: PLAID_TEST_ACCOUNT_ID,
|
||
|
cost_basis: 1000,
|
||
|
institution_price: 1,
|
||
|
institution_price_as_of: Date.current,
|
||
|
iso_currency_code: "USD",
|
||
|
quantity: 1000,
|
||
|
security_id: PLAID_TEST_CASH_SECURITY_ID,
|
||
|
unofficial_currency_code: nil,
|
||
|
vested_quantity: nil,
|
||
|
vested_value: nil
|
||
|
}
|
||
|
|
||
|
OpenStruct.new(
|
||
|
default_attributes.merge(attributes)
|
||
|
)
|
||
|
end
|
||
|
|
||
|
def create_plaid_holding(attributes = {})
|
||
|
default_attributes = {
|
||
|
account_id: PLAID_TEST_ACCOUNT_ID,
|
||
|
cost_basis: 2000,
|
||
|
institution_price: 200,
|
||
|
institution_price_as_of: Date.current,
|
||
|
iso_currency_code: "USD",
|
||
|
quantity: 10,
|
||
|
security_id: "plaid_test_security_id",
|
||
|
unofficial_currency_code: nil,
|
||
|
vested_quantity: nil,
|
||
|
vested_value: nil
|
||
|
}
|
||
|
|
||
|
OpenStruct.new(
|
||
|
default_attributes.merge(attributes)
|
||
|
)
|
||
|
end
|
||
|
|
||
|
def create_plaid_investment_transaction(attributes = {})
|
||
|
default_attributes = {
|
||
|
account_id: PLAID_TEST_ACCOUNT_ID,
|
||
|
amount: 500,
|
||
|
cancel_transaction_id: nil,
|
||
|
date: 5.days.ago.to_date,
|
||
|
fees: 0,
|
||
|
investment_transaction_id: "plaid_test_investment_transaction_id",
|
||
|
iso_currency_code: "USD",
|
||
|
name: "Buy 100 shares of IVV",
|
||
|
price: 606.71,
|
||
|
quantity: 100,
|
||
|
security_id: "plaid_test_security_id",
|
||
|
type: "buy",
|
||
|
subtype: "buy",
|
||
|
unofficial_currency_code: nil
|
||
|
}
|
||
|
|
||
|
OpenStruct.new(
|
||
|
default_attributes.merge(attributes)
|
||
|
)
|
||
|
end
|
||
|
end
|