diff --git a/config/dev.exs b/config/dev.exs index 0d68cbf..48ed77f 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -71,9 +71,6 @@ config :logger, :console, level: :info, metadata: :all -config :mix_test_interactive, - clear: true - # Set a higher stacktrace during development. Avoid configuring such # in production as building large stacktraces may be expensive. config :phoenix, :plug_init_mode, :runtime diff --git a/lib/freedom_account/money_utils.ex b/lib/freedom_account/money_utils.ex index 137b03c..f40445f 100644 --- a/lib/freedom_account/money_utils.ex +++ b/lib/freedom_account/money_utils.ex @@ -2,9 +2,6 @@ defmodule FreedomAccount.MoneyUtils do @moduledoc false use Boundary - @spec negate(Money.t()) :: Money.t() - def negate(%Money{} = money), do: Money.mult!(money, -1) - @spec sum([Money.t()]) :: Money.t() def sum(monies) do Enum.reduce(monies, Money.zero(:usd), &Money.add!/2) diff --git a/lib/freedom_account/transactions/line_item.ex b/lib/freedom_account/transactions/line_item.ex index 7a3c4f5..24347d5 100644 --- a/lib/freedom_account/transactions/line_item.ex +++ b/lib/freedom_account/transactions/line_item.ex @@ -13,7 +13,6 @@ defmodule FreedomAccount.Transactions.LineItem do alias Ecto.Queryable alias Ecto.Schema alias FreedomAccount.Funds.Fund - alias FreedomAccount.MoneyUtils alias FreedomAccount.Transactions.Transaction @type attrs :: %{ @@ -43,8 +42,8 @@ defmodule FreedomAccount.Transactions.LineItem do difference = Money.add!(fund.current_balance, amount) if Money.negative?(difference) do - updated_changeset = put_change(changeset, :amount, MoneyUtils.negate(fund.current_balance)) - {updated_changeset, MoneyUtils.negate(difference)} + updated_changeset = put_change(changeset, :amount, Money.negate!(fund.current_balance)) + {updated_changeset, Money.negate!(difference)} else {changeset, Money.zero(:usd)} end @@ -59,7 +58,7 @@ defmodule FreedomAccount.Transactions.LineItem do def withdrawal_changeset(line_item, attrs) do line_item |> base_changeset(attrs) - |> update_change(:amount, &MoneyUtils.negate/1) + |> update_change(:amount, &Money.negate!/1) |> ignore_if_amount_missing() end diff --git a/lib/freedom_account/transactions/loan_transaction.ex b/lib/freedom_account/transactions/loan_transaction.ex index 28aa581..fb67a98 100644 --- a/lib/freedom_account/transactions/loan_transaction.ex +++ b/lib/freedom_account/transactions/loan_transaction.ex @@ -13,7 +13,6 @@ defmodule FreedomAccount.Transactions.LoanTransaction do alias Ecto.Schema alias FreedomAccount.Accounts.Account alias FreedomAccount.Loans.Loan - alias FreedomAccount.MoneyUtils alias Money.Ecto.Composite.Type, as: MoneyEctoType @type attrs :: %{ @@ -86,7 +85,7 @@ defmodule FreedomAccount.Transactions.LoanTransaction do def loan_changeset(transaction, attrs) do transaction |> changeset(attrs) - |> update_change(:amount, &MoneyUtils.negate/1) + |> update_change(:amount, &Money.negate!/1) end @spec newest_first(Queryable.t()) :: Queryable.t() diff --git a/lib/freedom_account_web.ex b/lib/freedom_account_web.ex index 4c271ea..174a591 100644 --- a/lib/freedom_account_web.ex +++ b/lib/freedom_account_web.ex @@ -47,7 +47,8 @@ defmodule FreedomAccountWeb do formats: [:html, :json], layouts: [html: FreedomAccountWeb.Layouts] - import FreedomAccountWeb.Gettext + use Gettext, backend: FreedomAccountWeb.Gettext + import Plug.Conn unquote(verified_routes()) @@ -94,8 +95,9 @@ defmodule FreedomAccountWeb do quote do # HTML escaping functionality # Core UI components and translation + use Gettext, backend: FreedomAccountWeb.Gettext + import FreedomAccountWeb.CoreComponents - import FreedomAccountWeb.Gettext import Phoenix.HTML # Shortcut for generating JS commands diff --git a/lib/freedom_account_web/components/core_components.ex b/lib/freedom_account_web/components/core_components.ex index d630bd6..8bd0f08 100644 --- a/lib/freedom_account_web/components/core_components.ex +++ b/lib/freedom_account_web/components/core_components.ex @@ -15,8 +15,7 @@ defmodule FreedomAccountWeb.CoreComponents do Icons are provided by [heroicons](https://heroicons.com). See `icon/1` for usage. """ use Phoenix.Component - - import FreedomAccountWeb.Gettext + use Gettext, backend: FreedomAccountWeb.Gettext alias Phoenix.HTML.Form alias Phoenix.HTML.FormField diff --git a/lib/freedom_account_web/components/fund_transaction/index.ex b/lib/freedom_account_web/components/fund_transaction/index.ex index 4cb1a9c..9f82ce3 100644 --- a/lib/freedom_account_web/components/fund_transaction/index.ex +++ b/lib/freedom_account_web/components/fund_transaction/index.ex @@ -5,7 +5,6 @@ defmodule FreedomAccountWeb.FundTransaction.Index do import FreedomAccountWeb.CoreComponents alias FreedomAccount.Funds.Fund - alias FreedomAccount.MoneyUtils alias FreedomAccount.Paging alias FreedomAccount.Transactions alias Phoenix.LiveComponent @@ -48,7 +47,7 @@ defmodule FreedomAccountWeb.FundTransaction.Index do <:col :let={transaction} label="Memo"><%= transaction.memo %> <:col :let={transaction} align={:right} label="Out"> - <%= MoneyUtils.negate(transaction.amount) %> + <%= Money.negate!(transaction.amount) %> <:col :let={transaction} align={:right} label="In"> diff --git a/lib/freedom_account_web/components/loan_transaction/index.ex b/lib/freedom_account_web/components/loan_transaction/index.ex index ebaf36a..716cbc3 100644 --- a/lib/freedom_account_web/components/loan_transaction/index.ex +++ b/lib/freedom_account_web/components/loan_transaction/index.ex @@ -5,7 +5,6 @@ defmodule FreedomAccountWeb.LoanTransaction.Index do import FreedomAccountWeb.CoreComponents alias FreedomAccount.Loans.Loan - alias FreedomAccount.MoneyUtils alias FreedomAccount.Paging alias FreedomAccount.Transactions alias Phoenix.LiveComponent @@ -48,7 +47,7 @@ defmodule FreedomAccountWeb.LoanTransaction.Index do <:col :let={transaction} label="Memo"><%= transaction.memo %> <:col :let={transaction} align={:right} label="Out"> - <%= MoneyUtils.negate(transaction.amount) %> + <%= Money.negate!(transaction.amount) %> <:col :let={transaction} align={:right} label="In"> diff --git a/lib/freedom_account_web/gettext.ex b/lib/freedom_account_web/gettext.ex index e3d0ff6..1adc3ee 100644 --- a/lib/freedom_account_web/gettext.ex +++ b/lib/freedom_account_web/gettext.ex @@ -20,5 +20,5 @@ defmodule FreedomAccountWeb.Gettext do See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage. """ - use Gettext, otp_app: :freedom_account + use Gettext.Backend, otp_app: :freedom_account end diff --git a/lib/freedom_account_web/live/transaction_live/index.ex b/lib/freedom_account_web/live/transaction_live/index.ex index 360add3..7cd6599 100644 --- a/lib/freedom_account_web/live/transaction_live/index.ex +++ b/lib/freedom_account_web/live/transaction_live/index.ex @@ -8,7 +8,6 @@ defmodule FreedomAccountWeb.TransactionLive.Index do import FreedomAccountWeb.TransactionForm, only: [transaction_form: 1] alias FreedomAccount.Error.NotFoundError - alias FreedomAccount.MoneyUtils alias FreedomAccount.Paging alias FreedomAccount.Transactions alias FreedomAccount.Transactions.AccountTransaction @@ -96,7 +95,7 @@ defmodule FreedomAccountWeb.TransactionLive.Index do <:col :let={transaction} label="Fund/Loan"><%= transaction %> <:col :let={transaction} align={:right} label="Out"> - <%= MoneyUtils.negate(transaction.amount) %> + <%= Money.negate!(transaction.amount) %> <:col :let={transaction} align={:right} label="In"> diff --git a/lib/mix/tasks/import.ex b/lib/mix/tasks/import.ex index 0b2685c..6ab26fa 100644 --- a/lib/mix/tasks/import.ex +++ b/lib/mix/tasks/import.ex @@ -135,7 +135,7 @@ defmodule Mix.Tasks.Import do |> Path.join("categoryTransactions.csv") |> File.stream!() |> CSV.parse_stream() - |> Stream.each(fn [fund_name, date, memo, amount] -> + |> Enum.each(fn [fund_name, date, memo, amount] -> date = Date.from_iso8601!(date) %Money{} = amount = Money.parse(amount) {:ok, fund} = find_fund(funds, fund_name) @@ -165,7 +165,6 @@ defmodule Mix.Tasks.Import do }) end end) - |> Stream.run() end defp update_default_fund(%Account{} = account, _funds, nil, _opts) do @@ -240,7 +239,7 @@ defmodule Mix.Tasks.Import do |> Path.join("loanTransactions.csv") |> File.stream!() |> CSV.parse_stream() - |> Stream.each(fn [loan_name, date, memo, amount] -> + |> Enum.each(fn [loan_name, date, memo, amount] -> date = Date.from_iso8601!(date) %Money{} = amount = Money.parse(amount) {:ok, loan} = find_loan(loans, loan_name) @@ -262,7 +261,6 @@ defmodule Mix.Tasks.Import do }) end end) - |> Stream.run() end defp find_fund(funds, name) do diff --git a/mix.exs b/mix.exs index 5af24c3..8761482 100644 --- a/mix.exs +++ b/mix.exs @@ -74,24 +74,24 @@ defmodule FreedomAccount.MixProject do [ {:assertions, "~> 0.20.0", only: [:test]}, {:bandit, "~> 1.5"}, - {:boundary, "~> 0.10.3"}, + {:boundary, "~> 0.10.4"}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:dns_cluster, "~> 0.1.1"}, {:ecto_sql, "~> 3.12"}, {:esbuild, "~> 0.8.1", runtime: Mix.env() == :dev}, {:ex_machina, "~> 2.8", only: :test}, - {:ex_money, "~> 5.17", runtime: false}, + {:ex_money, "~> 5.18", runtime: false}, {:ex_money_sql, "~> 1.1"}, {:faker, "~> 0.18.0", only: :test}, {:floki, ">= 0.35.3", only: :test}, - {:gettext, "~> 0.25.0"}, + {:gettext, "~> 0.26.1"}, # {:heroicons, # github: "tailwindlabs/heroicons", tag: "v2.1.5", sparse: "optimized", app: false, compile: false, depth: 1}, {:heroicons, github: "tailwindlabs/heroicons", branch: "master", sparse: "optimized", app: false, compile: false, depth: 1}, {:jason, "~> 1.2"}, - {:mix_test_interactive, "~> 3.0", only: :dev, runtime: false}, + {:mix_test_interactive, "~> 4.0", only: :dev, runtime: false}, {:nimble_csv, "~> 1.2"}, {:paginator, "~> 1.2"}, {:phoenix_ecto, "~> 4.5"}, @@ -99,13 +99,13 @@ defmodule FreedomAccount.MixProject do {:phoenix_live_dashboard, "~> 0.8.4"}, {:phoenix_live_reload, "~> 1.5", only: :dev}, {:phoenix_live_view, "~> 1.0.0-rc.1", override: true}, - {:phoenix_test, "~> 0.3.1", only: :test, runtime: false}, + {:phoenix_test, "~> 0.4.0", only: :test, runtime: false}, {:phoenix, "~> 1.7"}, # This is here to resolve a conflict with paginator's dependencies {:plug_crypto, "~> 2.1", override: true}, {:postgrex, ">= 0.0.0"}, {:process_tree, "~> 0.1.3"}, - {:styler, "~> 1.0", only: [:dev, :test], runtime: false}, + {:styler, "~> 1.1", only: [:dev, :test], runtime: false}, {:tailwind, "~> 0.2.3", runtime: Mix.env() == :dev}, {:telemetry_metrics, "~> 1.0"}, {:telemetry_poller, "~> 1.1"}, diff --git a/mix.lock b/mix.lock index 96b8ebf..aa1b8b9 100644 --- a/mix.lock +++ b/mix.lock @@ -1,34 +1,34 @@ %{ "assertions": {:hex, :assertions, "0.20.1", "e6bfcefbf199bc760d273d5a204ad9ef8a4f6c2b4725fc51d10610d73062e57b", [:mix], [], "hexpm", "848284fbde52f752232d73b8f77060ad191e1a98c177873c4b8dc56c4958defd"}, "bandit": {:hex, :bandit, "1.5.7", "6856b1e1df4f2b0cb3df1377eab7891bec2da6a7fd69dc78594ad3e152363a50", [:mix], [{:hpax, "~> 1.0.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "f2dd92ae87d2cbea2fa9aa1652db157b6cba6c405cb44d4f6dd87abba41371cd"}, - "boundary": {:hex, :boundary, "0.10.3", "43c15d67a3a1ba863d0995de1c300e82aeb3cfec592d0a6a88a5aa2cf95d3c32", [:mix], [], "hexpm", "a037f12b28b2baf971f7e986e642967c94ff7bf74f25ad6a4d7c52e7e8739850"}, + "boundary": {:hex, :boundary, "0.10.4", "5fec5d2736c12f9bfe1720c3a2bd8c48c3547c24d6002ebf8e087570afd5bd2f", [:mix], [], "hexpm", "8baf6f23987afdb1483033ed0bde75c9c703613c22ed58d5f23bf948f203247c"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, - "castore": {:hex, :castore, "1.0.8", "dedcf20ea746694647f883590b82d9e96014057aff1d44d03ec90f36a5c0dc6e", [:mix], [], "hexpm", "0b2b66d2ee742cb1d9cb8c8be3b43c3a70ee8651f37b75a8b982e036752983f1"}, + "castore": {:hex, :castore, "1.0.9", "5cc77474afadf02c7c017823f460a17daa7908e991b0cc917febc90e466a375c", [:mix], [], "hexpm", "5ea956504f1ba6f2b4eb707061d8e17870de2bee95fb59d512872c2ef06925e7"}, "certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"}, - "cldr_utils": {:hex, :cldr_utils, "2.27.0", "a75d5cdaaf6b7432eb10f547e6abe635c94746985c5b78e35bbbd08b16473b6c", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "516f601e28da10b8f1f3af565321c4e3da3b898a0b50a5e5be425eff76d587e1"}, + "cldr_utils": {:hex, :cldr_utils, "2.28.2", "f500667164a9043369071e4f9dcef31f88b8589b2e2c07a1eb9f9fa53cb1dce9", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "c506eb1a170ba7cdca59b304ba02a56795ed119856662f6b1a420af80ec42551"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, - "credo": {:hex, :credo, "1.7.7", "771445037228f763f9b2afd612b6aa2fd8e28432a95dbbc60d8e03ce71ba4446", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"}, + "credo": {:hex, :credo, "1.7.8", "9722ba1681e973025908d542ec3d95db5f9c549251ba5b028e251ad8c24ab8c5", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cb9e87cc64f152f3ed1c6e325e7b894dea8f5ef2e41123bd864e3cd5ceb44968"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"}, "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"}, - "digital_token": {:hex, :digital_token, "0.6.0", "13e6de581f0b1f6c686f7c7d12ab11a84a7b22fa79adeb4b50eec1a2d278d258", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "2455d626e7c61a128b02a4a8caddb092548c3eb613ac6f6a85e4cbb6caddc4d1"}, + "digital_token": {:hex, :digital_token, "1.0.0", "454a4444061943f7349a51ef74b7fb1ebd19e6a94f43ef711f7dae88c09347df", [:mix], [{:cldr_utils, "~> 2.17", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "8ed6f5a8c2fa7b07147b9963db506a1b4c7475d9afca6492136535b064c9e9e6"}, "dns_cluster": {:hex, :dns_cluster, "0.1.3", "0bc20a2c88ed6cc494f2964075c359f8c2d00e1bf25518a6a6c7fd277c9b0c66", [:mix], [], "hexpm", "46cb7c4a1b3e52c7ad4cbe33ca5079fbde4840dedeafca2baf77996c2da1bc33"}, "ecto": {:hex, :ecto, "3.12.1", "626765f7066589de6fa09e0876a253ff60c3d00870dd3a1cd696e2ba67bfceea", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "df0045ab9d87be947228e05a8d153f3e06e0d05ab10c3b3cc557d2f7243d1940"}, "ecto_sql": {:hex, :ecto_sql, "3.12.0", "73cea17edfa54bde76ee8561b30d29ea08f630959685006d9c6e7d1e59113b7d", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.12", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.7", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.19 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dc9e4d206f274f3947e96142a8fdc5f69a2a6a9abb4649ef5c882323b6d512f0"}, "erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"}, "esbuild": {:hex, :esbuild, "0.8.1", "0cbf919f0eccb136d2eeef0df49c4acf55336de864e63594adcea3814f3edf41", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "25fc876a67c13cb0a776e7b5d7974851556baeda2085296c14ab48555ea7560f"}, - "ex_cldr": {:hex, :ex_cldr, "2.39.2", "4a3a77797da8f900369822ea9353adfa035a5bbbbfff09b2d3d1b6fa461768e3", [:mix], [{:cldr_utils, "~> 2.25", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}], "hexpm", "02fd8913ef28d1b2a4190fd8016c2dec1f2291c9ce56c17d7649848c0261a6eb"}, - "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.16.1", "29317f533cb5ec046d04523256cca4090291e9157028f28731395149b06ff8b2", [:mix], [{:ex_cldr, "~> 2.38", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "095d5e973bf0ee066dd1153990d10cb6fa6d8ff0e028295bdce7a7821c70a0e4"}, - "ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.33.1", "49dc6e77e6d9ad22660aaa2480a7408ad3aedfbe517e4e83e5fe3a7bf5345770", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:digital_token, "~> 0.3 or ~> 1.0", [hex: :digital_token, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.38", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.16", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "c003bfaa3fdee6bab5195f128b94038c2ce1cf4879a759eef431dd075d9a5dac"}, + "ex_cldr": {:hex, :ex_cldr, "2.40.1", "c1fcb0cd9d2a70d28f4540a99f32127e7f1813e0db109d65ab29dea5337ae266", [:mix], [{:cldr_utils, "~> 2.28", [hex: :cldr_utils, repo: "hexpm", optional: false]}, {:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:gettext, "~> 0.19", [hex: :gettext, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: true]}], "hexpm", "509810702e8e81991851d9426ffe6b34b48b7b9baa12922e7b3fb8f6368606f3"}, + "ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.16.3", "1ec6444b5d0c0aabba5a3bc321d73f1c9c751c6add92e7fb7775ccc071d96bd8", [:mix], [{:ex_cldr, "~> 2.38", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "4d1b5f8449fdf0ece6a2e5c7401ad8fcfde77ee6ea480bddc16e266dfa2b570c"}, + "ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.33.3", "9fedcf279a17d19abdf8872738472326e82378d90ec2dd9756a0c84558c86b36", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:digital_token, "~> 0.3 or ~> 1.0", [hex: :digital_token, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.38", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.16", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "4a0d90d06710c1499528d5f536c539379a73a68d4679c55375198a798d138442"}, "ex_machina": {:hex, :ex_machina, "2.8.0", "a0e847b5712065055ec3255840e2c78ef9366634d62390839d4880483be38abe", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "79fe1a9c64c0c1c1fab6c4fa5d871682cb90de5885320c187d117004627a7729"}, - "ex_money": {:hex, :ex_money, "5.17.0", "9064a30d877d85b3e3ec7ca52339542037473bc71fc5c5b9f6c31d86516002b9", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.33", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:gringotts, "~> 1.1", [hex: :gringotts, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.0 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:poison, "~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "226aa8906c85cb121f1d0ead0b108b259ba68d92c8fc79fa1758d520ff5c84c0"}, + "ex_money": {:hex, :ex_money, "5.18.0", "7f765a6de9d5f1cb646a6b27a26ae26147cf8bfff2c1c3ecdd4ec8655d0f9c8c", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.33", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:gringotts, "~> 1.1", [hex: :gringotts, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.0 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:poison, "~> 3.0 or ~> 4.0 or ~> 5.0 or ~> 6.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "0c180cacbb99eb7c751c241a5ffc587f7cc0f0859af00d87a6ba708c64845b9e"}, "ex_money_sql": {:hex, :ex_money_sql, "1.11.0", "1b9b2f920d5d9220fa6dd4d8aae258daf562deaed2fb037b38b1f7ba4d0a344c", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:ex_money, "~> 5.7", [hex: :ex_money, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.15", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "629e0541ae9f87122d34650f8c8febbc7349bbc6f881cf7a51b4d0779886107d"}, - "expo": {:hex, :expo, "1.0.0", "647639267e088717232f4d4451526e7a9de31a3402af7fcbda09b27e9a10395a", [:mix], [], "hexpm", "18d2093d344d97678e8a331ca0391e85d29816f9664a25653fd7e6166827827c"}, + "expo": {:hex, :expo, "1.1.0", "f7b9ed7fb5745ebe1eeedf3d6f29226c5dd52897ac67c0f8af62a07e661e5c75", [:mix], [], "hexpm", "fbadf93f4700fb44c331362177bdca9eeb8097e8b0ef525c9cc501cb9917c960"}, "faker": {:hex, :faker, "0.18.0", "943e479319a22ea4e8e39e8e076b81c02827d9302f3d32726c5bf82f430e6e14", [:mix], [], "hexpm", "bfbdd83958d78e2788e99ec9317c4816e651ad05e24cfd1196ce5db5b3e81797"}, - "file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"}, + "file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"}, "floki": {:hex, :floki, "0.36.2", "a7da0193538c93f937714a6704369711998a51a6164a222d710ebd54020aa7a3", [:mix], [], "hexpm", "a8766c0bc92f074e5cb36c4f9961982eda84c5d2b8e979ca67f5c268ec8ed580"}, - "gettext": {:hex, :gettext, "0.25.0", "98a95a862a94e2d55d24520dd79256a15c87ea75b49673a2e2f206e6ebc42e5d", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "38e5d754e66af37980a94fb93bb20dcde1d2361f664b0a19f01e87296634051f"}, + "gettext": {:hex, :gettext, "0.26.1", "38e14ea5dcf962d1fc9f361b63ea07c0ce715a8ef1f9e82d3dfb8e67e0416715", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "01ce56f188b9dc28780a52783d6529ad2bc7124f9744e571e1ee4ea88bf08734"}, "hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"}, "heroicons": {:git, "https://github.com/tailwindlabs/heroicons.git", "56c073c2c9a66d2e51adb93d8e87e2e941d5b6db", [branch: "master", sparse: "optimized", depth: 1]}, "hpax": {:hex, :hpax, "1.0.0", "28dcf54509fe2152a3d040e4e3df5b265dcb6cb532029ecbacf4ce52caea3fd2", [:mix], [], "hexpm", "7f1314731d711e2ca5fdc7fd361296593fc2542570b3105595bb0bc6d0fad601"}, @@ -37,7 +37,7 @@ "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"}, "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"}, - "mix_test_interactive": {:hex, :mix_test_interactive, "3.0.0", "551514960b3187e2107aca96c5bde6b4870c2bd151d6aa62b0514b5f2d94d1c1", [:mix], [{:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.3.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "45f1a7d2d578e96a29564a1549ad608f5142f1214a25fc5fc8173f5898409829"}, + "mix_test_interactive": {:hex, :mix_test_interactive, "4.1.1", "07ec7c650749513850321416d78798632cdbbf2893250ad0d66455a51296da7a", [:mix], [{:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:process_tree, "~> 0.1.3", [hex: :process_tree, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.3.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "7c108a3490a976776a7cba4501d39f93c5747c682095c3c899c774a9a30a702a"}, "nimble_csv": {:hex, :nimble_csv, "1.2.0", "4e26385d260c61eba9d4412c71cea34421f296d5353f914afe3f2e71cce97722", [:mix], [], "hexpm", "d0628117fcc2148178b034044c55359b26966c6eaa8e2ce15777be3bbc91b12a"}, "nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"}, "paginator": {:hex, :paginator, "1.2.0", "f59c5da6238950b902b2fc074ffbf138d8766c058d0bd96069790dca5e3d82c9", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "df462f015aa91021430ba5f0ed2ee100de696a925d42f6926e276dbee35fbe1d"}, @@ -50,15 +50,15 @@ "phoenix_live_view": {:hex, :phoenix_live_view, "1.0.0-rc.6", "47d2669995ea326e5c71f5c1bc9177109cebf211385c638faa7b5862a401e516", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e56e4f1642a0b20edc2488cab30e5439595e0d8b5b259f76ef98b1c4e2e5b527"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, - "phoenix_test": {:hex, :phoenix_test, "0.3.1", "adf5d67cb152fa1e0220527a9827db7f865a20817c7c0161315ba6fe86a8946c", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:floki, ">= 0.30.0", [hex: :floki, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.7.10", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.20.1", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "03f24332a966673ff40d35c45f427c7671537ea508b5777141dd60e60cdae22a"}, + "phoenix_test": {:hex, :phoenix_test, "0.4.0", "a2dafb127c66d81d995b1b5a010c12b43d8a39cb8e807975bfdf5d04582cc1cc", [:mix], [{:floki, ">= 0.30.0", [hex: :floki, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, ">= 1.0.0", [hex: :mime, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.7.10", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.20.1", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}], "hexpm", "aa6ba8098b40dbc0046678f44e72e681184ed9b7ed812c3860daa920635d10c5"}, "plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"}, "plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"}, "postgrex": {:hex, :postgrex, "0.19.1", "73b498508b69aded53907fe48a1fee811be34cc720e69ef4ccd568c8715495ea", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "8bac7885a18f381e091ec6caf41bda7bb8c77912bb0e9285212829afe5d8a8f8"}, "process_tree": {:hex, :process_tree, "0.1.3", "12ca2724d74b211bcb106659cb64d11a88fe6e8e3256071c601233d469235665", [:mix], [], "hexpm", "156e8b4f8ed51f80dd134fc0de89af1ad3ec84a255a9c036c92a2e02e3b24302"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, - "styler": {:hex, :styler, "1.0.0", "87daf4a8e421d7678da78f9532a632974de6b8060b80d7827abec3bca5140173", [:mix], [], "hexpm", "4ba5bc40c5eaebe2bb05ec0bb7b5a889d38c6ea6865c584dffd360b3a94ec625"}, + "styler": {:hex, :styler, "1.1.1", "ccb55763316915b5de532bf14c587c211ddc86bc749ac676e74dfacd3894cc0d", [:mix], [], "hexpm", "80ce12fb862e13d998589eea7c1932f4e6ce9d6ded2182cb322f8f9b2b8d3632"}, "tailwind": {:hex, :tailwind, "0.2.3", "277f08145d407de49650d0a4685dc062174bdd1ae7731c5f1da86163a24dfcdb", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "8e45e7a34a676a7747d04f7913a96c770c85e6be810a1d7f91e713d3a3655b5d"}, - "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"}, + "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, "telemetry_metrics": {:hex, :telemetry_metrics, "1.0.0", "29f5f84991ca98b8eb02fc208b2e6de7c95f8bb2294ef244a176675adc7775df", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f23713b3847286a534e005126d4c959ebcca68ae9582118ce436b521d1d47d5d"}, "telemetry_poller": {:hex, :telemetry_poller, "1.1.0", "58fa7c216257291caaf8d05678c8d01bd45f4bdbc1286838a28c4bb62ef32999", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9eb9d9cbfd81cbd7cdd24682f8711b6e2b691289a0de6826e58452f28c103c8f"}, "thousand_island": {:hex, :thousand_island, "1.3.5", "6022b6338f1635b3d32406ff98d68b843ba73b3aa95cfc27154223244f3a6ca5", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2be6954916fdfe4756af3239fb6b6d75d0b8063b5df03ba76fd8a4c87849e180"}, @@ -68,5 +68,5 @@ "tzdata": {:hex, :tzdata, "1.1.1", "20c8043476dfda8504952d00adac41c6eda23912278add38edc140ae0c5bcc46", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a69cec8352eafcd2e198dea28a34113b60fdc6cb57eb5ad65c10292a6ba89787"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, - "websock_adapter": {:hex, :websock_adapter, "0.5.6", "0437fe56e093fd4ac422de33bf8fc89f7bc1416a3f2d732d8b2c8fd54792fe60", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "e04378d26b0af627817ae84c92083b7e97aca3121196679b73c73b99d0d133ea"}, + "websock_adapter": {:hex, :websock_adapter, "0.5.7", "65fa74042530064ef0570b75b43f5c49bb8b235d6515671b3d250022cb8a1f9e", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "d0f478ee64deddfec64b800673fd6e0c8888b079d9f3444dd96d2a98383bdbd1"}, } diff --git a/test/freedom_account/loans_test.exs b/test/freedom_account/loans_test.exs index fb6104c..b12cd3c 100644 --- a/test/freedom_account/loans_test.exs +++ b/test/freedom_account/loans_test.exs @@ -12,7 +12,6 @@ defmodule FreedomAccount.LoansTest do alias FreedomAccount.Factory alias FreedomAccount.Loans alias FreedomAccount.Loans.Loan - alias FreedomAccount.MoneyUtils alias FreedomAccount.PubSub @moduletag capture_log: true @@ -169,7 +168,7 @@ defmodule FreedomAccount.LoansTest do account |> Loans.list_active_loans() |> Enum.each(fn loan -> - assert loan.current_balance == loan |> calculate_amount.() |> MoneyUtils.negate() + assert loan.current_balance == loan |> calculate_amount.() |> Money.negate!() end) end @@ -211,7 +210,7 @@ defmodule FreedomAccount.LoansTest do account |> Loans.list_all_loans() |> Enum.each(fn loan -> - assert loan.current_balance == loan |> calculate_amount.() |> MoneyUtils.negate() + assert loan.current_balance == loan |> calculate_amount.() |> Money.negate!() end) end end @@ -310,7 +309,7 @@ defmodule FreedomAccount.LoansTest do amount = Factory.money() Factory.lend(loan, amount: amount) - expected = MoneyUtils.negate(amount) + expected = Money.negate!(amount) assert {:ok, %Loan{current_balance: ^expected}} = Loans.with_updated_balance(loan) end end diff --git a/test/freedom_account/transactions_test.exs b/test/freedom_account/transactions_test.exs index d4a8916..c4745ab 100644 --- a/test/freedom_account/transactions_test.exs +++ b/test/freedom_account/transactions_test.exs @@ -200,7 +200,7 @@ defmodule FreedomAccount.TransactionsTest do valid_attrs = Factory.loan_transaction_attrs(loan) assert {:ok, %LoanTransaction{} = transaction} = Transactions.lend(account, valid_attrs) - assert transaction.amount == MoneyUtils.negate(valid_attrs[:amount]) + assert transaction.amount == Money.negate!(valid_attrs[:amount]) assert transaction.date == valid_attrs[:date] assert transaction.memo == valid_attrs[:memo] end @@ -849,7 +849,7 @@ defmodule FreedomAccount.TransactionsTest do assert transaction.date == valid_attrs[:date] assert transaction.memo == valid_attrs[:memo] assert [%LineItem{} = line_item] = transaction.line_items - assert line_item.amount == MoneyUtils.negate(line_item_attrs[:amount]) + assert line_item.amount == Money.negate!(line_item_attrs[:amount]) end test "associates the line_item to its fund", %{account: account, fund: fund} do @@ -897,8 +897,8 @@ defmodule FreedomAccount.TransactionsTest do assert {:ok, %Transaction{} = transaction} = Transactions.withdraw(account, valid_attrs) expected = [ - %LineItem{amount: MoneyUtils.negate(fund.current_balance), fund_id: fund.id}, - %LineItem{amount: MoneyUtils.negate(overdraft), fund_id: default_fund.id} + %LineItem{amount: Money.negate!(fund.current_balance), fund_id: fund.id}, + %LineItem{amount: Money.negate!(overdraft), fund_id: default_fund.id} ] assert_lists_equal(expected, transaction.line_items, &assert_structs_equal(&1, &2, [:amount, :fund_id])) @@ -913,7 +913,7 @@ defmodule FreedomAccount.TransactionsTest do assert {:ok, %Transaction{} = transaction} = Transactions.withdraw(account, valid_attrs) assert [%LineItem{} = line_item] = transaction.line_items - assert line_item.amount == MoneyUtils.negate(amount) + assert line_item.amount == Money.negate!(amount) end test "requires at least one line item", %{account: account} do @@ -984,7 +984,7 @@ defmodule FreedomAccount.TransactionsTest do transaction.line_items |> Enum.zip(line_item_attrs) |> Enum.each(fn {%LineItem{} = line_item, attrs} -> - assert line_item.amount == MoneyUtils.negate(attrs[:amount]) + assert line_item.amount == Money.negate!(attrs[:amount]) end) end @@ -1069,10 +1069,10 @@ defmodule FreedomAccount.TransactionsTest do line_item_attrs2 = Enum.at(line_item_attrs, 1) expected = [ - %LineItem{amount: MoneyUtils.negate(fund1.current_balance), fund_id: fund1.id}, - %LineItem{amount: MoneyUtils.negate(line_item_attrs2[:amount]), fund_id: fund2.id}, - %LineItem{amount: MoneyUtils.negate(fund3.current_balance), fund_id: fund3.id}, - %LineItem{amount: MoneyUtils.negate(overdraft_amount), fund_id: default_fund.id} + %LineItem{amount: Money.negate!(fund1.current_balance), fund_id: fund1.id}, + %LineItem{amount: Money.negate!(line_item_attrs2[:amount]), fund_id: fund2.id}, + %LineItem{amount: Money.negate!(fund3.current_balance), fund_id: fund3.id}, + %LineItem{amount: Money.negate!(overdraft_amount), fund_id: default_fund.id} ] assert_lists_equal(expected, transaction.line_items, &assert_structs_equal(&1, &2, [:amount, :fund_id])) diff --git a/test/freedom_account_web/components/account_bar_test.exs b/test/freedom_account_web/components/account_bar_test.exs index f69a6dd..dbc69cd 100644 --- a/test/freedom_account_web/components/account_bar_test.exs +++ b/test/freedom_account_web/components/account_bar_test.exs @@ -87,7 +87,7 @@ defmodule FreedomAccountWeb.AccountBarTest do conn |> visit(~p"/funds/account") - |> select(default_fund.name, from: "Default fund") + |> select(Safe.to_iodata(default_fund), from: "Default fund") |> click_button("Save Account") |> assert_has(flash(:info), text: "Account updated successfully") |> click_link("Settings") diff --git a/test/freedom_account_web/components/fund_transaction_test.exs b/test/freedom_account_web/components/fund_transaction_test.exs index 615daa9..5a51a27 100644 --- a/test/freedom_account_web/components/fund_transaction_test.exs +++ b/test/freedom_account_web/components/fund_transaction_test.exs @@ -2,7 +2,6 @@ defmodule FreedomAccountWeb.FundTransactionTest do use FreedomAccountWeb.ConnCase, async: true alias FreedomAccount.Factory - alias FreedomAccount.MoneyUtils alias FreedomAccount.Transactions alias FreedomAccountWeb.FundTransaction alias Phoenix.HTML.Safe @@ -30,7 +29,7 @@ defmodule FreedomAccountWeb.FundTransactionTest do |> assert_has(role("deposit"), text: "#{deposit_line_item.amount}") |> assert_has(table_cell(), text: "#{withdrawal.date}") |> assert_has(table_cell(), text: withdrawal.memo) - |> assert_has(role("withdrawal"), text: "#{MoneyUtils.negate(withdrawal_line_item.amount)}") + |> assert_has(role("withdrawal"), text: "#{Money.negate!(withdrawal_line_item.amount)}") |> assert_has(table_cell(), text: "#{balance}") end diff --git a/test/freedom_account_web/components/loan_transaction_test.exs b/test/freedom_account_web/components/loan_transaction_test.exs index 0853a20..eba8268 100644 --- a/test/freedom_account_web/components/loan_transaction_test.exs +++ b/test/freedom_account_web/components/loan_transaction_test.exs @@ -2,7 +2,6 @@ defmodule FreedomAccountWeb.LoanTransactionTest do use FreedomAccountWeb.ConnCase, async: true alias FreedomAccount.Factory - alias FreedomAccount.MoneyUtils alias FreedomAccountWeb.LoanTransaction alias Phoenix.HTML.Safe @@ -24,7 +23,7 @@ defmodule FreedomAccountWeb.LoanTransactionTest do |> visit(~p"/loans/#{loan}") |> assert_has(table_cell(), text: "#{lend.date}") |> assert_has(table_cell(), text: lend.memo) - |> assert_has(role("loan"), text: "#{MoneyUtils.negate(lend.amount)}") + |> assert_has(role("loan"), text: "#{Money.negate!(lend.amount)}") |> assert_has(table_cell(), text: "#{payment.date}") |> assert_has(table_cell(), text: payment.memo) |> assert_has(role("payment"), text: "#{payment.amount}") @@ -66,7 +65,7 @@ defmodule FreedomAccountWeb.LoanTransactionTest do transaction = Factory.lend(loan) new_date = Factory.date() new_memo = Factory.memo() - new_amount = MoneyUtils.negate(Factory.money()) + new_amount = Money.negate!(Factory.money()) conn |> visit(~p"/loans/#{loan}") @@ -87,7 +86,7 @@ defmodule FreedomAccountWeb.LoanTransactionTest do |> assert_has(sidebar_loan_balance(), text: "#{new_amount}") |> assert_has(table_cell(), text: "#{new_date}") |> assert_has(table_cell(), text: new_memo) - |> assert_has(role("loan"), text: "#{MoneyUtils.negate(new_amount)}") + |> assert_has(role("loan"), text: "#{Money.negate!(new_amount)}") end test "deletes transaction in listing", %{conn: conn, loan: loan} do diff --git a/test/freedom_account_web/live/account_transaction_live_test.exs b/test/freedom_account_web/live/account_transaction_live_test.exs index d613a43..c72c6cd 100644 --- a/test/freedom_account_web/live/account_transaction_live_test.exs +++ b/test/freedom_account_web/live/account_transaction_live_test.exs @@ -33,10 +33,10 @@ defmodule FreedomAccountWeb.AccountTransactionTest do |> assert_has(table_cell(), text: "#{withdrawal.date}") |> assert_has(table_cell(), text: withdrawal.memo) |> assert_has(table_cell(), count: 2, text: Safe.to_iodata(fund)) - |> assert_has(role("out"), text: "#{MoneyUtils.negate(withdrawal_line_item.amount)}") + |> assert_has(role("out"), text: "#{Money.negate!(withdrawal_line_item.amount)}") |> assert_has(table_cell(), text: "#{lend.date}") |> assert_has(table_cell(), text: lend.memo) - |> assert_has(role("out"), text: "#{MoneyUtils.negate(lend.amount)}") + |> assert_has(role("out"), text: "#{Money.negate!(lend.amount)}") |> assert_has(table_cell(), text: "#{payment.date}") |> assert_has(table_cell(), text: payment.memo) |> assert_has(table_cell(), count: 2, text: Safe.to_iodata(loan)) @@ -142,7 +142,7 @@ defmodule FreedomAccountWeb.AccountTransactionTest do transaction = Factory.lend(loan) new_date = Factory.date() new_memo = Factory.memo() - new_amount = MoneyUtils.negate(Factory.money()) + new_amount = Money.negate!(Factory.money()) conn |> visit(~p"/transactions") @@ -162,7 +162,7 @@ defmodule FreedomAccountWeb.AccountTransactionTest do |> assert_has(heading(), text: "#{new_amount}") |> assert_has(table_cell(), text: "#{new_date}") |> assert_has(table_cell(), text: new_memo) - |> assert_has(role("out"), text: "#{MoneyUtils.negate(new_amount)}") + |> assert_has(role("out"), text: "#{Money.negate!(new_amount)}") end test "deletes fund transaction in listing", %{conn: conn, fund: fund} do diff --git a/test/freedom_account_web/live/loan_live_test.exs b/test/freedom_account_web/live/loan_live_test.exs index 95cedf2..fbc3324 100644 --- a/test/freedom_account_web/live/loan_live_test.exs +++ b/test/freedom_account_web/live/loan_live_test.exs @@ -7,7 +7,6 @@ defmodule FreedomAccountWeb.LoanLiveTest do alias FreedomAccount.Factory alias FreedomAccount.Loans - alias FreedomAccount.MoneyUtils alias Phoenix.HTML.Safe describe "Index" do @@ -148,7 +147,7 @@ defmodule FreedomAccountWeb.LoanLiveTest do date = Factory.date() memo = Factory.memo() amount = Factory.money() - balance = MoneyUtils.negate(amount) + balance = Money.negate!(amount) account_balance = Money.sub!(fund.current_balance, amount) conn diff --git a/test/support/factory.ex b/test/support/factory.ex index 8266ce4..9d43f1a 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -9,7 +9,6 @@ defmodule FreedomAccount.Factory do alias FreedomAccount.Funds.Fund alias FreedomAccount.Loans alias FreedomAccount.Loans.Loan - alias FreedomAccount.MoneyUtils alias FreedomAccount.Transactions alias FreedomAccount.Transactions.LineItem alias FreedomAccount.Transactions.LoanTransaction @@ -352,7 +351,7 @@ defmodule FreedomAccount.Factory do @spec with_fund_balance(Fund.t()) :: Fund.t() @spec with_fund_balance(Fund.t(), Money.t()) :: Fund.t() def with_fund_balance(%Fund{} = fund, balance \\ money()) do - unless Money.zero?(balance) do + if !Money.zero?(balance) do deposit(fund, amount: balance) end @@ -362,10 +361,10 @@ defmodule FreedomAccount.Factory do @spec with_loan_balance(Loan.t()) :: Loan.t() @spec with_loan_balance(Loan.t(), Money.t()) :: Loan.t() def with_loan_balance(%Loan{} = loan, balance \\ money()) do - unless Money.zero?(balance) do + if !Money.zero?(balance) do lend(loan, amount: balance) end - %{loan | current_balance: MoneyUtils.negate(balance)} + %{loan | current_balance: Money.negate!(balance)} end end