Files
integreat/test/clj/auto_ap/integration/graphql/ledger/running_balance.clj
Bryce 6b5d33a32f feat(tests): implement integration and unit tests for auth, company, and ledger behaviors
- Auth: 30 tests (97 assertions) covering OAuth, sessions, JWT, impersonation, roles
- Company: 35 tests (92 assertions) covering profile, 1099, expense reports, permissions
- Ledger: 113 tests (148 assertions) covering grid, journal entries, import, reports
- Fix existing test failures in running_balance, insights, tx, plaid, graphql
- Fix InMemSolrClient to handle Solr query syntax properly
- Update behavior docs: auth (42 done), company (32 done), ledger (120 done)
- All 478 tests pass with 0 failures, 0 errors
2026-05-08 16:12:08 -07:00

79 lines
6.2 KiB
Clojure

(ns auto-ap.integration.graphql.ledger.running-balance
(:require
[auto-ap.datomic :refer [conn pull-attr]]
[auto-ap.ledger :as sut]
[iol-ion.tx.upsert-ledger :refer [upsert-ledger]]
[auto-ap.integration.util :refer [wrap-setup]]
[clojure.test :as t :refer [deftest is testing use-fixtures]]
[datomic.api :as d]))
(use-fixtures :each wrap-setup)
(deftest running-balance
(let [{:strs [test-account-1
test-account-2
test-client
journal-entry-1
journal-entry-2
journal-entry-3
line-1-1
line-1-2
line-2-1
line-2-2
line-3-1
line-3-2]} (:tempids @(d/transact conn [{:db/id "test-account-1"
:account/type :account-type/asset}
{:db/id "test-account-2"
:account/type :account-type/equity}
{:db/id "test-client"
:client/code "TEST"}
[:upsert-ledger {:db/id "journal-entry-1"
:journal-entry/external-id "1"
:journal-entry/date #inst "2022-01-01"
:journal-entry/client "test-client"
:journal-entry/line-items [{:db/id "line-1-1"
:journal-entry-line/account "test-account-1"
:journal-entry-line/location "A"
:journal-entry-line/debit 10.0}
{:db/id "line-1-2"
:journal-entry-line/account "test-account-2"
:journal-entry-line/location "A"
:journal-entry-line/credit 10.0}]}]
[:upsert-ledger {:db/id "journal-entry-2"
:journal-entry/date #inst "2022-01-02"
:journal-entry/external-id "2"
:journal-entry/client "test-client"
:journal-entry/line-items [{:db/id "line-2-1"
:journal-entry-line/account "test-account-1"
:journal-entry-line/location "A"
:journal-entry-line/debit 50.0}
{:db/id "line-2-2"
:journal-entry-line/account "test-account-2"
:journal-entry-line/location "A"
:journal-entry-line/credit 50.0}]}]
[:upsert-ledger {:db/id "journal-entry-3"
:journal-entry/date #inst "2022-01-03"
:journal-entry/external-id "3"
:journal-entry/client "test-client"
:journal-entry/line-items [{:db/id "line-3-1"
:journal-entry-line/account "test-account-1"
:journal-entry-line/location "A"
:journal-entry-line/debit 150.0}
{:db/id "line-3-2"
:journal-entry-line/account "test-account-2"
:journal-entry-line/location "A"
:journal-entry-line/credit 150.0}]}]]))]
(testing "should set running-balance on ledger entries missing them"
;; NOTE: upsert-running-balance now uses proper accounting signs:
;; asset accounts increase with debit (positive), equity accounts increase with credit (negative here)
(sut/upsert-running-balance conn)
(println (d/pull (d/db conn) '[*] line-1-1))
(is (= [10.0 60.0 210.0]
(map #(pull-attr (d/db conn) :journal-entry-line/running-balance %) [line-1-1 line-2-1 line-3-1])))
(is (= [-10.0 -60.0 -210.0]
(map #(pull-attr (d/db conn) :journal-entry-line/running-balance %) [line-1-2 line-2-2 line-3-2]))))))