<%# TODO: Will need a better way to split a formatted monetary value into these 3 parts %>
<% if @balance_series.nil? %>
diff --git a/app/views/shared/_currency_dropdown.html.erb b/app/views/shared/_currency_dropdown.html.erb
index 9a3573a4..124eef59 100644
--- a/app/views/shared/_currency_dropdown.html.erb
+++ b/app/views/shared/_currency_dropdown.html.erb
@@ -1,14 +1,14 @@
- <%= f.object.original_currency %>
+ <%= f.object.currency %>
<%# Example of how account currency value is updated %>
- <%= f.hidden_field :original_currency, data: {currency_dropdown_target: "input"} %>
+ <%= f.hidden_field :currency, data: {currency_dropdown_target: "input"} %>
<%= lucide_icon("chevron-down", class: "text-gray-500 w-5 h-5" ) %>
<% options.each do |option| %>
- "><%= option %>
- <%= inline_svg_tag('icn-check.svg', class: "text-gray-500 fill-current #{'hidden'if option != f.object.original_currency}") %>
+ "><%= option %>
+ <%= inline_svg_tag('icn-check.svg', class: "text-gray-500 fill-current #{'hidden'if option != f.object.currency}") %>
<% end %>
diff --git a/config/locales/models/account/en.yml b/config/locales/models/account/en.yml
index c0f6a519..4b199653 100644
--- a/config/locales/models/account/en.yml
+++ b/config/locales/models/account/en.yml
@@ -3,11 +3,11 @@ en:
activerecord:
attributes:
account:
+ balance: Balance
+ currency: Currency
family: Family
family_id: Family
name: Name
- original_balance: Balance
- original_currency: Currency
subtype: Subtype
models:
account: Account
diff --git a/db/migrate/20240227142457_rename_account_balance.rb b/db/migrate/20240227142457_rename_account_balance.rb
new file mode 100644
index 00000000..a1b5fe2d
--- /dev/null
+++ b/db/migrate/20240227142457_rename_account_balance.rb
@@ -0,0 +1,6 @@
+class RenameAccountBalance < ActiveRecord::Migration[7.2]
+ def change
+ rename_column :accounts, :original_balance, :balance
+ rename_column :accounts, :original_currency, :currency
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 1e310aa8..01b212e0 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[7.2].define(version: 2024_02_23_162105) do
+ActiveRecord::Schema[7.2].define(version: 2024_02_27_142457) do
# These are extensions that must be enabled in order to support this database
enable_extension "pgcrypto"
enable_extension "plpgsql"
@@ -74,8 +74,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_02_23_162105) do
t.datetime "updated_at", null: false
t.string "accountable_type"
t.uuid "accountable_id"
- t.decimal "original_balance", precision: 19, scale: 4, default: "0.0"
- t.string "original_currency", default: "USD"
+ t.decimal "balance", precision: 19, scale: 4, default: "0.0"
+ t.string "currency", default: "USD"
t.decimal "converted_balance", precision: 19, scale: 4, default: "0.0"
t.string "converted_currency", default: "USD"
t.string "status", default: "OK"
diff --git a/db/seeds.rb b/db/seeds.rb
index 2f0f3fac..17f34674 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -28,7 +28,7 @@ Currency.find_or_create_by(iso_code: "USD", name: "United States Dollar")
current_balance = 350000
-account = Account.create_or_find_by(name: "Seed Property Account", accountable: Account::Property.new, family: family, original_balance: current_balance, original_currency: "USD")
+account = Account.create_or_find_by(name: "Seed Property Account", accountable: Account::Property.new, family: family, balance: current_balance, currency: "USD")
puts "Account created: #{account.name}"
# Represent user-defined "Valuations" at various dates
diff --git a/test/controllers/accounts_controller_test.rb b/test/controllers/accounts_controller_test.rb
index f2e4d7f5..bb493fee 100644
--- a/test/controllers/accounts_controller_test.rb
+++ b/test/controllers/accounts_controller_test.rb
@@ -2,8 +2,8 @@ require "test_helper"
class AccountsControllerTest < ActionDispatch::IntegrationTest
setup do
- sign_in @user = users(:bob)
- @account = accounts(:dylan_checking)
+ sign_in @user = users(:family_admin)
+ @account = accounts(:generic)
end
test "new" do
diff --git a/test/controllers/pages_controller_test.rb b/test/controllers/pages_controller_test.rb
index 5083248e..b9c4ff29 100644
--- a/test/controllers/pages_controller_test.rb
+++ b/test/controllers/pages_controller_test.rb
@@ -2,7 +2,7 @@ require "test_helper"
class PagesControllerTest < ActionDispatch::IntegrationTest
setup do
- sign_in users(:bob)
+ sign_in users(:family_admin)
end
test "dashboard" do
diff --git a/test/controllers/password_resets_controller_test.rb b/test/controllers/password_resets_controller_test.rb
index ebe75b9e..e9a1b956 100644
--- a/test/controllers/password_resets_controller_test.rb
+++ b/test/controllers/password_resets_controller_test.rb
@@ -2,7 +2,7 @@ require "test_helper"
class PasswordResetsControllerTest < ActionDispatch::IntegrationTest
setup do
- @user = users(:bob)
+ @user = users(:family_admin)
end
test "new" do
diff --git a/test/controllers/transactions_controller_test.rb b/test/controllers/transactions_controller_test.rb
index addd3364..428f8e01 100644
--- a/test/controllers/transactions_controller_test.rb
+++ b/test/controllers/transactions_controller_test.rb
@@ -2,8 +2,8 @@ require "test_helper"
class TransactionsControllerTest < ActionDispatch::IntegrationTest
setup do
- sign_in @user = users(:bob)
- @transaction = transactions(:one)
+ sign_in @user = users(:family_admin)
+ @transaction = transactions(:checking_one)
end
test "should get index" do
diff --git a/test/controllers/valuations_controller_test.rb b/test/controllers/valuations_controller_test.rb
index 177341e4..478aaf75 100644
--- a/test/controllers/valuations_controller_test.rb
+++ b/test/controllers/valuations_controller_test.rb
@@ -2,8 +2,8 @@ require "test_helper"
class ValuationsControllerTest < ActionDispatch::IntegrationTest
setup do
- sign_in @user = users(:bob)
- @account = accounts(:dylan_checking)
+ sign_in @user = users(:family_admin)
+ @account = accounts(:generic)
end
test "new" do
diff --git a/test/fixtures/account/credits.yml b/test/fixtures/account/credits.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/credits.yml
+++ b/test/fixtures/account/credits.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account/depositories.yml b/test/fixtures/account/depositories.yml
index d7a33292..05896e62 100644
--- a/test/fixtures/account/depositories.yml
+++ b/test/fixtures/account/depositories.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
-one: {}
-# column: value
-#
-two: {}
-# column: value
+checking: {}
diff --git a/test/fixtures/account/investments.yml b/test/fixtures/account/investments.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/investments.yml
+++ b/test/fixtures/account/investments.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account/loans.yml b/test/fixtures/account/loans.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/loans.yml
+++ b/test/fixtures/account/loans.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account/other_assets.yml b/test/fixtures/account/other_assets.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/other_assets.yml
+++ b/test/fixtures/account/other_assets.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account/other_liabilities.yml b/test/fixtures/account/other_liabilities.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/other_liabilities.yml
+++ b/test/fixtures/account/other_liabilities.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account/properties.yml b/test/fixtures/account/properties.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/properties.yml
+++ b/test/fixtures/account/properties.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account/vehicles.yml b/test/fixtures/account/vehicles.yml
index d7a33292..182a6978 100644
--- a/test/fixtures/account/vehicles.yml
+++ b/test/fixtures/account/vehicles.yml
@@ -1,11 +1 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-# This model initially had no columns defined. If you add columns to the
-# model remove the "{}" from the fixture names and add the columns immediately
-# below each fixture, per the syntax in the comments below
-#
one: {}
-# column: value
-#
-two: {}
-# column: value
diff --git a/test/fixtures/account_balances.yml b/test/fixtures/account_balances.yml
index bf597587..99798f29 100644
--- a/test/fixtures/account_balances.yml
+++ b/test/fixtures/account_balances.yml
@@ -1,13 +1,13 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-one:
- account: dylan_checking
- date: 2024-02-12
- balance: 9.99
- currency: MyString
+# one:
+# account: generic
+# date: 2024-02-12
+# balance: 9.99
+# currency: MyString
-two:
- account: richards_savings
- date: 2024-02-12
- balance: 9.99
- currency: MyString
+# two:
+# account: generic
+# date: 2024-02-13
+# balance: 9.99
+# currency: MyString
diff --git a/test/fixtures/accounts.yml b/test/fixtures/accounts.yml
index 8d181abb..d5208a43 100644
--- a/test/fixtures/accounts.yml
+++ b/test/fixtures/accounts.yml
@@ -1,14 +1,23 @@
-dylan_checking:
+# No transactions, no valuations, just a generic account
+generic:
family: dylan_family
- name: Bob's Checking
- original_balance: 1200
+ name: No history, generic account
+ balance: 1200
-dylan_roth:
+# Account with only valuations
+collectible:
family: dylan_family
- name: Bob's Roth IRA
- original_balance: 1200
+ name: Collectible Account
+ balance: 500
-richards_savings:
- family: richards_family
- name: Keef's HYSA
- original_balance: 1500
+# Account with only transactions
+checking:
+ family: dylan_family
+ name: Checking Account
+ balance: 5000
+
+# Account with both transactions and valuations
+savings_with_valuation_overrides:
+ family: dylan_family
+ name: Savings account with valuation overrides
+ balance: 20000
diff --git a/test/fixtures/exchange_rates.yml b/test/fixtures/exchange_rates.yml
index e08ad7fb..75ffb6fb 100644
--- a/test/fixtures/exchange_rates.yml
+++ b/test/fixtures/exchange_rates.yml
@@ -1,13 +1,13 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-one:
- base_currency: one
- converted_currency: one
- rate: 9.99
- date: 2024-02-09
+# one:
+# base_currency: one
+# converted_currency: one
+# rate: 9.99
+# date: 2024-02-09
-two:
- base_currency: two
- converted_currency: two
- rate: 9.99
- date: 2024-02-09
+# two:
+# base_currency: two
+# converted_currency: two
+# rate: 9.99
+# date: 2024-02-09
diff --git a/test/fixtures/families.yml b/test/fixtures/families.yml
index a6b44dc7..002da9c0 100644
--- a/test/fixtures/families.yml
+++ b/test/fixtures/families.yml
@@ -1,7 +1,2 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
dylan_family:
name: The Dylan Family
-
-richards_family:
- name: The Richards Family
diff --git a/test/fixtures/transactions.yml b/test/fixtures/transactions.yml
index 35735abc..77a560f6 100644
--- a/test/fixtures/transactions.yml
+++ b/test/fixtures/transactions.yml
@@ -1,15 +1,55 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+# Checking account transactions
+checking_one:
+ name: Starbucks
+ date: <%= 5.days.ago.to_date %>
+ amount: 10
+ account: checking
-one:
- name: MyString
- date: 2024-02-23
- amount: 9.99
- currency: MyString
- account: dylan_checking
+checking_two:
+ name: Chipotle
+ date: <%= 12.days.ago.to_date %>
+ amount: 30
+ account: checking
-two:
- name: MyString
- date: 2024-02-20
- amount: 9.99
- currency: MyString
- account: dylan_checking
+checking_three:
+ name: Amazon
+ date: <%= 15.days.ago.to_date %>
+ amount: 20
+ account: checking
+
+checking_four:
+ name: Paycheck
+ date: <%= 22.days.ago.to_date %>
+ amount: -1075
+ account: checking
+
+checking_five:
+ name: Netflix
+ date: <%= 30.days.ago.to_date %>
+ amount: 15
+ account: checking
+
+# Savings account that has these transactions and valuation overrides
+savings_one:
+ name: Interest Received
+ date: <%= 5.days.ago.to_date %>
+ amount: -200
+ account: savings_with_valuation_overrides
+
+savings_two:
+ name: Check Deposit
+ date: <%= 12.days.ago.to_date %>
+ amount: -50
+ account: savings_with_valuation_overrides
+
+savings_three:
+ name: Withdrawal
+ date: <%= 18.days.ago.to_date %>
+ amount: 2000
+ account: savings_with_valuation_overrides
+
+savings_four:
+ name: Check Deposit
+ date: <%= 30.days.ago.to_date %>
+ amount: -500
+ account: savings_with_valuation_overrides
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
index a8cb3766..fa2bf2f8 100644
--- a/test/fixtures/users.yml
+++ b/test/fixtures/users.yml
@@ -1,20 +1,13 @@
-bob:
+family_admin:
family: dylan_family
first_name: Bob
last_name: Dylan
email: bob@bobdylan.com
password_digest: <%= BCrypt::Password.create('password') %>
-jakob:
+family_member:
family: dylan_family
first_name: Jakob
last_name: Dylan
email: jakobdylan@yahoo.com
password_digest: <%= BCrypt::Password.create('password') %>
-
-keith:
- family: richards_family
- first_name: Keith
- last_name: Richards
- email: keith@rollingstones.com
- password_digest: <%= BCrypt::Password.create('password') %>
diff --git a/test/fixtures/valuations.yml b/test/fixtures/valuations.yml
index 1568ef5b..9c519b0e 100644
--- a/test/fixtures/valuations.yml
+++ b/test/fixtures/valuations.yml
@@ -1,11 +1,26 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+# For collectible account that only has valuations (no transactions)
+collectible_one:
+ value: 550
+ date: <%= 4.days.ago.to_date %>
+ account: collectible
-one:
- value: 9.99
- date: 2024-02-15
- account: dylan_checking
+collectible_two:
+ value: 700
+ date: <%= 12.days.ago.to_date %>
+ account: collectible
-two:
- value: 9.99
- date: 2024-02-15
- account: richards_savings
+collectible_three:
+ value: 400
+ date: <%= 30.days.ago.to_date %>
+ account: collectible
+
+# For checking account that has valuations and transactions
+savings_one:
+ value: 20500
+ date: <%= 3.days.ago.to_date %>
+ account: savings_with_valuation_overrides
+
+savings_two:
+ value: 19500
+ date: <%= 12.days.ago.to_date %>
+ account: savings_with_valuation_overrides
diff --git a/test/models/account_test.rb b/test/models/account_test.rb
index b211b4da..5b0983c2 100644
--- a/test/models/account_test.rb
+++ b/test/models/account_test.rb
@@ -2,8 +2,9 @@ require "test_helper"
class AccountTest < ActiveSupport::TestCase
def setup
- depository = Account::Depository.create!
- @account = Account.create!(family: families(:dylan_family), name: "Explicit Checking", original_balance: 1200, accountable: depository)
+ depository = account_depositories(:checking)
+ @account = accounts(:checking)
+ @account.accountable = depository
end
test "new account should be valid" do
diff --git a/test/models/current_test.rb b/test/models/current_test.rb
index 7f4c3c38..6d12ac6c 100644
--- a/test/models/current_test.rb
+++ b/test/models/current_test.rb
@@ -2,7 +2,7 @@ require "test_helper"
class CurrentTest < ActiveSupport::TestCase
test "family returns user family" do
- user = users(:bob)
+ user = users(:family_admin)
Current.user = user
assert_equal user.family, Current.family
end
diff --git a/test/models/family_test.rb b/test/models/family_test.rb
index b9597731..d3e37007 100644
--- a/test/models/family_test.rb
+++ b/test/models/family_test.rb
@@ -6,12 +6,12 @@ class FamilyTest < ActiveSupport::TestCase
end
test "should have many users" do
- assert_equal 2, @dylan_family.users.size
- assert @dylan_family.users.include?(users(:bob))
+ assert @dylan_family.users.size > 0
+ assert @dylan_family.users.include?(users(:family_admin))
end
test "should have many accounts" do
- assert_equal 2, @dylan_family.accounts.size
+ assert @dylan_family.accounts.size > 0
end
test "should destroy dependent users" do
diff --git a/test/models/transaction_test.rb b/test/models/transaction_test.rb
index dc48590c..9210a737 100644
--- a/test/models/transaction_test.rb
+++ b/test/models/transaction_test.rb
@@ -1,7 +1,4 @@
require "test_helper"
class TransactionTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
end
diff --git a/test/models/user_test.rb b/test/models/user_test.rb
index 135d7c79..348a9efe 100644
--- a/test/models/user_test.rb
+++ b/test/models/user_test.rb
@@ -2,7 +2,7 @@ require "test_helper"
class UserTest < ActiveSupport::TestCase
def setup
- @user = users(:bob)
+ @user = users(:family_admin)
end
test "should be valid" do
diff --git a/test/models/valuation_test.rb b/test/models/valuation_test.rb
index 0b775e65..59ba8292 100644
--- a/test/models/valuation_test.rb
+++ b/test/models/valuation_test.rb
@@ -1,7 +1,4 @@
require "test_helper"
class ValuationTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
end
diff --git a/test/system/accounts_test.rb b/test/system/accounts_test.rb
index 9c4401fe..e45636c6 100644
--- a/test/system/accounts_test.rb
+++ b/test/system/accounts_test.rb
@@ -2,7 +2,7 @@ require "application_system_test_case"
class AccountsTest < ApplicationSystemTestCase
setup do
- sign_in @user = users(:bob)
+ sign_in @user = users(:family_admin)
end
test "should create account" do