mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-24 15:49:39 +02:00
Transactions cleanup (#817)
An overhaul and cleanup of the transactions feature including: - Simplification of transactions search and filtering - Consolidation of account sync logic after transaction change - Split sidebar modal and modal into "drawer" and "modal" concepts - Refactor of transaction partials and folder organization - Cleanup turbo frames and streams for transaction updates, including new Transactions::RowsController for inline updates - Refactored and added several integration and systems tests
This commit is contained in:
parent
ee162bbef7
commit
4ebc08e5a4
61 changed files with 789 additions and 683 deletions
94
test/system/transactions_test.rb
Normal file
94
test/system/transactions_test.rb
Normal file
|
@ -0,0 +1,94 @@
|
|||
require "application_system_test_case"
|
||||
|
||||
class TransactionsTest < ApplicationSystemTestCase
|
||||
setup do
|
||||
sign_in @user = users(:family_admin)
|
||||
|
||||
@test_category = @user.family.transaction_categories.create! name: "System Test Category"
|
||||
@test_merchant = @user.family.transaction_merchants.create! name: "System Test Merchant"
|
||||
@target_txn = @user.family.accounts.first.transactions.create! \
|
||||
name: "Oldest transaction",
|
||||
date: 10.years.ago.to_date,
|
||||
category: @test_category,
|
||||
merchant: @test_merchant,
|
||||
amount: 100
|
||||
|
||||
visit transactions_url
|
||||
end
|
||||
|
||||
test "can search for a transaction" do
|
||||
assert_selector "h1", text: "Transactions"
|
||||
|
||||
within "form#transactions-search" do
|
||||
fill_in "Search transactions by name", with: @target_txn.name
|
||||
end
|
||||
|
||||
assert_selector "#" + dom_id(@target_txn), count: 1
|
||||
|
||||
within "#transaction-search-filters" do
|
||||
assert_text @target_txn.name
|
||||
end
|
||||
end
|
||||
|
||||
test "can open filters and apply one or more" do
|
||||
find("#transaction-filters-button").click
|
||||
|
||||
within "#transaction-filters-menu" do
|
||||
check(@target_txn.account.name)
|
||||
click_button "Category"
|
||||
check(@test_category.name)
|
||||
click_button "Apply"
|
||||
end
|
||||
|
||||
assert_selector "#" + dom_id(@target_txn), count: 1
|
||||
|
||||
within "#transaction-search-filters" do
|
||||
assert_text @target_txn.account.name
|
||||
assert_text @target_txn.category.name
|
||||
end
|
||||
end
|
||||
|
||||
test "all filters work and empty state shows if no match" do
|
||||
find("#transaction-filters-button").click
|
||||
|
||||
within "#transaction-filters-menu" do
|
||||
click_button "Account"
|
||||
check(@target_txn.account.name)
|
||||
|
||||
click_button "Date"
|
||||
fill_in "q_start_date", with: 10.days.ago.to_date
|
||||
fill_in "q_end_date", with: Date.current
|
||||
|
||||
click_button "Type"
|
||||
assert_text "Filter by type coming soon..."
|
||||
|
||||
click_button "Amount"
|
||||
assert_text "Filter by amount coming soon..."
|
||||
|
||||
click_button "Category"
|
||||
check(@test_category.name)
|
||||
|
||||
click_button "Merchant"
|
||||
check(@test_merchant.name)
|
||||
|
||||
click_button "Apply"
|
||||
end
|
||||
|
||||
assert_text "No transactions found"
|
||||
|
||||
# Page reload doesn't affect results
|
||||
visit current_url
|
||||
|
||||
assert_text "No transactions found"
|
||||
|
||||
within "ul#transaction-search-filters" do
|
||||
find("li", text: @target_txn.account.name).first("a").click
|
||||
find("li", text: "on or after #{10.days.ago.to_date}").first("a").click
|
||||
find("li", text: "on or before #{Date.current}").first("a").click
|
||||
find("li", text: @target_txn.category.name).first("a").click
|
||||
find("li", text: @target_txn.merchant.name).first("a").click
|
||||
end
|
||||
|
||||
assert_selector "#" + dom_id(@user.family.transactions.ordered.first), count: 1
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue