1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-18 20:59:39 +02:00
Maybe/test/system/trades_test.rb
Josh Pigford cd91e66618
Initial pass at Synth-based ticker selection (#1392)
* Initial pass at Synth-based ticker selection

* Update _tickers.turbo_stream.erb

* Functional combobox display

* A few cleanup steps

* Linter

* Prevent long strings

* Another step towards functional combobox

* Deprecated files

* Custom Combobox implementation

* Lint

* Test suite fixes

* Lint

* Make direct use of mic codes

* Update splits

* Update trades_test.rb
2024-10-30 09:23:44 -04:00

85 lines
2 KiB
Ruby

require "application_system_test_case"
class TradesTest < ApplicationSystemTestCase
include ActiveJob::TestHelper
setup do
sign_in @user = users(:family_admin)
@account = accounts(:investment)
visit_account_trades
Security::SynthComboboxOption.stubs(:find_in_synth).returns([
Security::SynthComboboxOption.new(
symbol: "AAPL",
name: "Apple Inc.",
logo_url: "https://logo.synthfinance.com/ticker/AAPL",
exchange_acronym: "NASDAQ",
exchange_mic: "XNAS"
)
])
end
test "can create buy transaction" do
shares_qty = 25.0
open_new_trade_modal
fill_in "Ticker symbol", with: "AAPL"
select_combobox_option("Apple")
fill_in "Date", with: Date.current
fill_in "Quantity", with: shares_qty
fill_in "account_entry[price]", with: 214.23
click_button "Add transaction"
visit_account_trades
within_trades do
assert_text "Purchase 10 shares of AAPL"
assert_text "Buy #{shares_qty} shares of AAPL"
end
end
test "can create sell transaction" do
aapl = @account.holdings.current.find { |h| h.security.ticker == "AAPL" }
open_new_trade_modal
select "Sell", from: "Type"
fill_in "Ticker symbol", with: aapl.ticker
select_combobox_option(aapl.security.name)
fill_in "Date", with: Date.current
fill_in "Quantity", with: aapl.qty
fill_in "account_entry[price]", with: 215.33
click_button "Add transaction"
visit_account_trades
within_trades do
assert_text "Sell #{aapl.qty} shares of AAPL"
end
end
private
def open_new_trade_modal
click_link "new_trade_account_#{@account.id}"
end
def within_trades(&block)
within "#" + dom_id(@account, "trades"), &block
end
def visit_account_trades
visit account_url(@account, tab: "transactions")
end
def select_combobox_option(text)
within "#account_entry_ticker-hw-listbox" do
find("li", text: text).click
end
end
end