First step in coding sales.

This commit is contained in:
Bryce Covert
2021-12-26 09:24:11 -08:00
parent f7bec7a86c
commit 97fe81c773
5 changed files with 129 additions and 7 deletions

View File

@@ -171,6 +171,17 @@
:expected-deposit/status :expected-deposit-status/cleared}
(:transaction/expected-deposit transaction-result)))))
(t/testing "Should credit CCP"
(let [[transaction-result] (sut/transaction->txs (assoc base-transaction
:transaction/date #inst "2021-07-03T00:00:00-08:00"
:transaction/amount 100.0)
(d/entity (d/db conn) bank-account-id)
noop-rule)]
(t/is (= [{:transaction-account/account :account/ccp
:transaction-account/amount 100.0
:transaction-account/location "A"}]
(:transaction/accounts transaction-result)))))
(t/testing "Should not match old expected deposits"
(let [[transaction-result] (sut/transaction->txs (assoc base-transaction
:transaction/date #inst "2021-07-13"

View File

@@ -0,0 +1,56 @@
(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))))))))