57 lines
2.4 KiB
Clojure
57 lines
2.4 KiB
Clojure
(ns auto-ap.ledger-test
|
|
(:require [auto-ap.datomic :refer [conn uri]]
|
|
[auto-ap.datomic.migrate :as m]
|
|
[auto-ap.ledger :as sut]
|
|
[clojure.test :as t]
|
|
[datomic.api :as d]))
|
|
|
|
(defn wrap-setup
|
|
[f]
|
|
(with-redefs [auto-ap.datomic/uri "datomic:mem://datomic-transactor:4334/invoice"]
|
|
(d/create-database uri)
|
|
(with-redefs [auto-ap.datomic/conn (d/connect uri)]
|
|
(m/migrate auto-ap.datomic/conn)
|
|
(f)
|
|
(d/release auto-ap.datomic/conn)
|
|
(d/delete-database uri))))
|
|
|
|
(t/use-fixtures :each wrap-setup)
|
|
|
|
|
|
(t/deftest entity-change->ledger
|
|
(t/testing "Should code an expected deposit"
|
|
(let [{:strs [ed ccp receipts-split client]}
|
|
(:tempids @(d/transact conn [#:expected-deposit {:status :expected-deposit-status/pending
|
|
:client {:db/id "client"
|
|
:client/code "BRYCE"
|
|
:client/locations ["M"]}
|
|
:total 4.0
|
|
:fee 1.0
|
|
:date #inst "2021-01-01T00:00:00-08:00"
|
|
:location "M"
|
|
:db/id "ed"}]))
|
|
result (sut/entity-change->ledger (d/db conn) [:expected-deposit ed])]
|
|
(t/is (= #:journal-entry
|
|
{:source "expected-deposit"
|
|
:client {:db/id client}
|
|
:date #inst "2021-01-01T00:00:00-08:00"
|
|
:original-entity ed
|
|
:vendor :vendor/ccp-square
|
|
:amount 4.0
|
|
}
|
|
(dissoc result :journal-entry/line-items)))
|
|
|
|
(t/testing "should debit ccp"
|
|
(t/is (= [#:journal-entry-line
|
|
{:debit 4.0
|
|
:location "A"
|
|
:account :account/ccp}]
|
|
(filter :journal-entry-line/debit (:journal-entry/line-items result))))
|
|
)
|
|
(t/testing "should credit receipts split ccp"
|
|
(t/is (= [#:journal-entry-line
|
|
{:credit 4.0
|
|
:location "A"
|
|
:account :account/receipts-split}]
|
|
(filter :journal-entry-line/credit (:journal-entry/line-items result))))))))
|