made cloud tests work again.

This commit is contained in:
2023-05-01 20:21:58 -07:00
parent 721596d6f9
commit f2025c2e65
14 changed files with 62 additions and 47 deletions

View File

@@ -68,6 +68,7 @@
)
(defn upsert-invoice [db invoice]
(println invoice)
(let [upserted-entity [[:upsert-entity invoice]]
with-invoice (dc/with db upserted-entity)
invoice-id (or (-> with-invoice :tempids (get (:db/id invoice)))

View File

@@ -10,7 +10,7 @@
(update-in [:query :where] conj where))]
(reduce #(update-in %1 [:query :where] conj %2) query rest)))
(def default-read '(pull ?e [* {:client/_bank-accounts [:db/id]}]))
(def default-read '[* {:client/_bank-accounts [:db/id]}])
(defn <-datomic [x]
(->> x
@@ -20,7 +20,7 @@
(defn get-by-id [id]
(->> [(dc/pull (dc/db conn default-read id))]
(->> [(dc/pull (dc/db conn ) default-read id)]
(<-datomic)
(first)))

View File

@@ -311,7 +311,7 @@
:invoice/total 0.0
:invoice/outstanding-balance 0.0
:invoice/status :invoice-status/voided
:invoice/expense-accounts (map
:invoice/expense-accounts (mapv
(fn [iea]
{:db/id (:db/id iea)
:invoice-expense-account/amount 0.0})
@@ -342,7 +342,7 @@
:invoice/total total
:invoice/status original-status
:invoice/outstanding-balance original-outstanding)
(update :invoice/expense-accounts conj {:db/id expense-account :invoice-expense-account/amount expense-account-amount})))
(update :invoice/expense-accounts (fnil conj []) {:db/id expense-account :invoice-expense-account/amount expense-account-amount})))
{}))]]
(:id context))

View File

@@ -19,6 +19,7 @@
(def known-order
{:uuid "9ab05fee-a9c5-483b-a7f2-14debde4b7a8",
:client-code "ABC", :client-location "DT"
:orderNumber "ZX7156"
:orderSourceType "MARKETPLACE",
:caterer
{:name "Nick The Greek",

View File

@@ -77,7 +77,7 @@
(t/deftest transaction->txs
(t/testing "Should import and code transactions"
(t/testing "Should import one transaction"
(let [{:strs [bank-account-id client-id]} (:tempids (dc/transact conn
(let [{:strs [bank-account-id client-id]} (:tempids @(dc/transact conn
[{:db/id "bank-account-id"
:bank-account/code "TEST-1"}
{:db/id "client-id"
@@ -107,6 +107,7 @@
:db/id "client-id"
:bank-accounts ["bank-account-id"]}]
(dc/transact conn)
deref
:tempids)]
(let [transaction-result (sut/transaction->txs (assoc base-transaction
@@ -132,7 +133,7 @@
(:transaction/payment transaction-result)))))
(t/testing "Should not match an already matched check"
(dc/transact conn [{:db/id payment-id :payment/status :payment-status/cleared}])
@(dc/transact conn [{:db/id payment-id :payment/status :payment-status/cleared}])
(let [result (sut/transaction->txs (assoc base-transaction
:transaction/description-original "CHECK 10001"
:transaction/amount -30.0)
@@ -158,6 +159,7 @@
:locations ["MF"]
:bank-accounts ["bank-account-id"]}]
(dc/transact conn)
deref
:tempids)]
@@ -255,6 +257,7 @@
#:vendor {:name "Autopay vendor 2"
:db/id "vendor2-id"}]
(dc/transact conn)
deref
:tempids)]
(t/testing "Should find a single invoice that matches exactly"
(let [{:strs [client-id]} (->> [#:invoice {:status :invoice-status/paid
@@ -266,6 +269,7 @@
:db/id "invoice-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0 client-id)]
(t/is (= 1 (count invoices-matches)))
@@ -280,6 +284,7 @@
:db/id "invoice-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0 client-id)]
@@ -295,6 +300,7 @@
:db/id "invoice-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0 client-id)]
@@ -313,6 +319,7 @@
#:client {:name "Client"
:db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0
client-id)]
@@ -334,6 +341,7 @@
:db/id "invoice2-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0 client-id)]
(t/is (= 2 (count invoices-matches))
@@ -355,6 +363,7 @@
:db/id "invoice2-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0 client-id)]
(t/is (= 0 (count invoices-matches))
@@ -377,6 +386,7 @@
:db/id "invoice2-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)
invoices-matches (sut/match-transaction-to-single-unfulfilled-autopayments -30.0 client-id)]
(t/is (= 0 (count invoices-matches))
@@ -406,6 +416,7 @@
:db/id "invoice3-id"}
#:client {:name "Client" :db/id "client-id"}]
(dc/transact conn)
deref
:tempids)]
(t/is (= 2 (count (sut/match-transaction-to-single-unfulfilled-autopayments -40.0 client-id)))
(str "Expected to match with the chronologically adjacent invoice-1 and invoice-3."))

View File

@@ -28,7 +28,7 @@
(use-fixtures :each wrap-setup)
(deftest transaction-page
(testing "transaction page"
(dc/transact conn
@(dc/transact conn
[(new-client {:db/id "client"})
(new-transaction {:transaction/client "client"})])
@@ -47,7 +47,7 @@
(deftest invoice-page
(testing "invoice page"
(dc/transact conn
@(dc/transact conn
[(new-client {:db/id "client"})
(new-invoice {:invoice/client "client"
:invoice/status :invoice-status/paid})])
@@ -91,7 +91,7 @@
(deftest upsert-transaction-rule
(let [{:strs [vendor-id account-id yodlee-merchant-id]} (->
(dc/transact
@(dc/transact
conn
[{:vendor/name "Bryce's Meat Co"
:db/id "vendor-id"}
@@ -190,7 +190,7 @@
(deftest test-transaction-rule
(testing "it should match rules"
(let [matching-transaction (dc/transact conn
(let [matching-transaction @(dc/transact conn
[{:transaction/description-original "matching-desc"
:transaction/date #inst "2019-01-05T00:00:00.000-08:00"
:transaction/client {:client/name "1"
@@ -248,7 +248,7 @@
(deftest test-match-transaction-rule
(testing "it should apply a rules"
(let [{:strs [transaction-id transaction-rule-id uneven-transaction-rule-id]} (-> (dc/transact conn
(let [{:strs [transaction-id transaction-rule-id uneven-transaction-rule-id]} (-> @(dc/transact conn
[{:transaction/description-original "matching-desc"
:transaction/date #inst "2019-01-05T00:00:00.000-08:00"
:transaction/client {:client/name "1"

View File

@@ -10,7 +10,7 @@
(deftest test-account-search
(testing "It should find matching account names"
(dc/transact conn [{:account/name "Food Research"
@(dc/transact conn [{:account/name "Food Research"
:db/ident :client-specific-account
:account/numeric-code 51100
:account/search-terms "Food Research"
@@ -29,7 +29,7 @@
))
1)))
(testing "It should filter out accounts that are not allowed for clients"
(dc/transact conn [{:account/name "CLIENT SPECIFIC"
@(dc/transact conn [{:account/name "CLIENT SPECIFIC"
:db/ident :client-specific-account
:account/numeric-code 99999
:account/search-terms "CLIENTSPECIFIC"
@@ -42,7 +42,7 @@
)))
(testing "It should show up for the client specific version"
(let [client-id (-> (dc/transact conn [{:client/name "CLIENT"
(let [client-id (-> @(dc/transact conn [{:client/name "CLIENT"
:db/id "client"}
{:db/ident :client-specific-account
:account/client-overrides [{:account-client-override/client "client"
@@ -57,7 +57,7 @@
nil))))))
(testing "It should hide accounts that arent applicable"
(dc/transact conn [{:account/name "DENIED"
@(dc/transact conn [{:account/name "DENIED"
:db/ident :denied-account
:account/numeric-code 99998
:account/search-terms "DENIED"
@@ -78,7 +78,7 @@
nil)))))
(testing "It should warn when using a warn account"
(dc/transact conn [{:account/name "WARNING"
@(dc/transact conn [{:account/name "WARNING"
:db/ident :warn-account
:account/numeric-code 99997
:account/search-terms "WARNING"
@@ -100,7 +100,7 @@
:allowance :vendor}
nil))))))
(testing "It should only include admin accounts for admins"
(dc/transact conn [{:account/name "ADMINONLY"
@(dc/transact conn [{:account/name "ADMINONLY"
:db/ident :warn-account
:account/numeric-code 99997
:account/search-terms "ADMINONLY"
@@ -117,7 +117,7 @@
nil)))))
(testing "It should allow searching for vendor accounts for invoices"
(let [vendor-id (-> (dc/transact conn [{:account/name "VENDORONLY"
(let [vendor-id (-> @(dc/transact conn [{:account/name "VENDORONLY"
:db/id "vendor-only"
:db/ident :vendor-only
:account/numeric-code 99996
@@ -145,7 +145,7 @@
(deftest get-graphql
(testing "should retrieve a single account"
(dc/transact conn [{:account/numeric-code 1
@(dc/transact conn [{:account/numeric-code 1
:account/default-allowance :allowance/allowed
:account/type :account-type/asset
:account/location "A"

View File

@@ -31,7 +31,7 @@
(deftest get-payment-page
(testing "Should list payments"
(let [{{:strs [bank-id check-id client-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [bank-id check-id client-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client"
:db/id "client-id"}
@@ -86,7 +86,7 @@
(deftest void-payment
(testing "Should void payments"
(let [{{:strs [bank-id check-id client-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [bank-id check-id client-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client"
:db/id "client-id"}
@@ -97,7 +97,7 @@
:db/ident)))))
(testing "Should not void payments if account is locked"
(let [{{:strs [check-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [check-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client"
:db/id "client-id"
@@ -110,7 +110,7 @@
(deftest void-payments
(testing "bulk void"
(testing "Should bulk void payments if account is not locked"
(let [{{:strs [check-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [check-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client-new"
:db/id "client-id"}
@@ -123,7 +123,7 @@
:db/ident)))))
(testing "Should only void a payment if it matches filter criteria"
(let [{{:strs [check-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [check-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client-new"
:db/id "client-id"}
@@ -136,7 +136,7 @@
:db/ident)))))
(testing "Should not bulk void payments if account is locked"
(let [{{:strs [check-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [check-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client"
:db/id "client-id"
@@ -150,7 +150,7 @@
:db/ident)))))
(testing "Only admins should be able to bulk void"
(let [{{:strs [check-id]} :tempids} (d/transact conn [{:bank-account/code "bank"
(let [{{:strs [check-id]} :tempids} @(d/transact conn [{:bank-account/code "bank"
:db/id "bank-id"}
{:client/code "client"
:db/id "client-id"}
@@ -163,7 +163,7 @@
(deftest print-checks
(testing "Print checks"
(testing "Should allow 'printing' cash checks"
(let [{{:strs [invoice-id client-id bank-id]} :tempids} (d/transact conn [{:client/code "client"
(let [{{:strs [invoice-id client-id bank-id]} :tempids} @(d/transact conn [{:client/code "client"
:db/id "client-id"
:client/locked-until #inst "2030-01-01"
:client/bank-accounts [{:bank-account/code "bank"
@@ -211,7 +211,7 @@
:id))))))))
(testing "Should allow 'printing' debit checks"
(let [{{:strs [invoice-id client-id bank-id]} :tempids} (d/transact conn [{:client/code "client"
(let [{{:strs [invoice-id client-id bank-id]} :tempids} @(d/transact conn [{:client/code "client"
:db/id "client-id"
:client/bank-accounts [{:bank-account/code "bank"
:db/id "bank-id"}]}
@@ -258,7 +258,7 @@
:id)))))))))
(testing "Should allow printing checks"
(let [{{:strs [invoice-id client-id bank-id]} :tempids} (d/transact conn [{:client/code "client"
(let [{{:strs [invoice-id client-id bank-id]} :tempids} @(d/transact conn [{:client/code "client"
:db/id "client-id"
:client/bank-accounts [{:bank-account/code "bank"
:bank-account/type :bank-account-type/check

View File

@@ -22,7 +22,7 @@
line-2-1
line-2-2
line-3-1
line-3-2]} (:tempids (d/transact conn [{:db/id "test-account-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}

View File

@@ -15,12 +15,12 @@
(testing "should allow editing a user"
(let [{{:strs [user-id] } :tempids} (d/transact conn [{:db/id "user-id" :user/name "Bryce"}])
(let [{{:strs [user-id] } :tempids} @(d/transact conn [{:db/id "user-id" :user/name "Bryce"}])
result (sut/edit-user {:id (admin-token)} {:edit_user {:role :power_user :id user-id}} nil)]
(is (some? (:id result))
(= :power_user (:role result)))
(testing "Should allow adding clients"
(let [{{:strs [client-id] } :tempids} (d/transact conn [{:db/id "client-id" :client/name "Bryce"}])
(let [{{:strs [client-id] } :tempids} @(d/transact conn [{:db/id "client-id" :client/name "Bryce"}])
result (sut/edit-user {:id (admin-token)} {:edit_user {:role :power_user
:id user-id
:clients [(str client-id)]}} nil)]

View File

@@ -28,7 +28,7 @@
:invoice/outstanding-balance 39.88
}]
(map #(dissoc % :invoice/expense-accounts :db/id)
(sut/extract-invoice-details "ntg-invoices/Cintas/123"
(sut/extract-invoice-details "ntg-invoices/Cintas/123.zcic"
(io/input-stream (io/resource "test-cintas/o.zcic.230310093903"))
[client]))))))

View File

@@ -1,14 +1,15 @@
(ns auto-ap.integration.util
(:require [datomic.api :as dc]
[auto-ap.datomic :refer [conn transact-schema]]
[auto-ap.datomic :refer [conn transact-schema install-functions]]
[clj-time.core :as time]))
(defn wrap-setup
[f]
(with-redefs [auto-ap.datomic/uri "datomic:mem://test"]
(dc/create-database auto-ap.datomic/uri)
(with-redefs [auto-ap.datomic/conn auto-ap.datomic/uri]
(with-redefs [auto-ap.datomic/conn (dc/connect auto-ap.datomic/uri)]
(transact-schema conn)
(install-functions)
(f)
(dc/delete-database auto-ap.datomic/uri))))
@@ -100,7 +101,7 @@
(dissoc x :id))
(defn setup-test-data [data]
(:tempids (dc/transact conn (into data
(:tempids @(dc/transact conn (into data
[(test-account :db/id "test-account-id")
(test-client :db/id "test-client-id"
:client/bank-accounts [(test-bank-account :db/id "test-bank-account-id")])
@@ -112,4 +113,4 @@
:account/account-set "default"}]))))
(defn apply-tx [data]
(:db-after (dc/transact conn data)))
(:db-after @(dc/transact conn data)))

View File

@@ -39,7 +39,7 @@
(t/deftest import-uploaded-invoices
(t/testing "It should import one"
(dc/transact conn [client expense-account vendor])
@(dc/transact conn [client expense-account vendor])
(rebuild-search-index)
(t/is (= 0 (invoice-count-for-client [:client/code "ABC"])))
@@ -60,14 +60,14 @@
:location-override "DE"
:customer-identifier "ABC"
:invoice-number "789")])
(t/is (= [["DE"]] (dc/q '[:find ?l
(t/is (= #{["DE"]} (dc/q '[:find ?l
:where [?i :invoice/invoice-number "789"]
[?i :invoice/expense-accounts ?ea]
[?ea :invoice-expense-account/location ?l]]
(dc/db conn)))))
(t/testing "Should code invoice"
(let [{{:strs [my-default-account coded-vendor]} :tempids} (dc/transact conn
(let [{{:strs [my-default-account coded-vendor]} :tempids} @(dc/transact conn
[{:vendor/name "Coded"
:db/id "coded-vendor"
:vendor/terms 12

View File

@@ -5,7 +5,8 @@
:refer [apply-tx setup-test-data test-invoice test-transaction wrap-setup]]
[clojure.test :as t :refer [deftest is testing use-fixtures]]
[datomic.api :as dc]
[iol-ion.tx :as sut]))
[iol-ion.tx.upsert-invoice :as sut-i]
[iol-ion.tx.upsert-transaction :as sut-t]))
(use-fixtures :each wrap-setup)
@@ -36,8 +37,8 @@
(is (nil? (:db/id (dc/pull (dc/db conn) journal-pull
[:journal-entry/original-entity invoice-id]))))
(let [db-after (apply-tx (sut/upsert-invoice
(dc/with-db conn)
(let [db-after (apply-tx (sut-i/upsert-invoice
(dc/db conn)
{:db/id invoice-id
:invoice/import-status :import-status/imported}))]
@@ -64,8 +65,8 @@
[:journal-entry/original-entity invoice-id])))
(testing "voiding an invoice should remove the journal entry"
(let [db-after (apply-tx (sut/upsert-invoice
(dc/with-db conn)
(let [db-after (apply-tx (sut-i/upsert-invoice
(dc/db conn)
{:db/id invoice-id
:invoice/status :invoice-status/voided}))]
@@ -73,7 +74,7 @@
(dc/pull db-after journal-pull
[:journal-entry/original-entity invoice-id])))))
(testing "invoice should remove the journal entry"
(let [db-after (apply-tx (sut/upsert-invoice
(let [db-after (apply-tx (sut-i/upsert-invoice
(dc/db conn)
{:db/id invoice-id
:invoice/status :invoice-status/unpaid
@@ -96,7 +97,7 @@
)
{:db/id "test-import-batch-id"
:import-batch/date #inst "2022-01-01"}])
update (sut/upsert-transaction (dc/db conn) {:db/id test-transaction-id
update (sut-t/upsert-transaction (dc/db conn) {:db/id test-transaction-id
:transaction/id "hello"
:transaction/bank-account test-bank-account-id
:transaction/amount 500.00