mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 15:49:39 +02:00
Allow user to add buy and sell trade transactions for investment accounts (#1066)
* Consolidate modal form structure into partial + helper * Scaffold out trade transaction form * Normalize translations * Add buy and sell trade form with tests * Move entryable lists to dedicated controllers * Delegate entry group contents rendering * More cleanup * Extract transaction and valuation update logic from entries controller * Delegate edit and show actions to entryables * Trade builder * Update paths for transaction updates
This commit is contained in:
parent
6bca35fa22
commit
e05f03b314
75 changed files with 801 additions and 624 deletions
67
test/system/trades_test.rb
Normal file
67
test/system/trades_test.rb
Normal file
|
@ -0,0 +1,67 @@
|
|||
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
|
||||
end
|
||||
|
||||
test "can create buy transaction" do
|
||||
shares_qty = 25.0
|
||||
|
||||
open_new_trade_modal
|
||||
|
||||
fill_in "Ticker symbol", with: "NVDA"
|
||||
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 NVDA"
|
||||
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
|
||||
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: "trades")
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue