added start date.

This commit is contained in:
Bryce Covert
2020-08-26 06:31:49 -07:00
parent 4ac3e31e91
commit 1832aad335
8 changed files with 293 additions and 242 deletions

View File

@@ -32,7 +32,7 @@
:merchant {:id "123"
:name "456"}
:baseType "DEBIT"
:status "PENDING"
:status "POSTED"
:bank-account {:db/id 456
:client/_bank-accounts {:db/id 123
@@ -49,14 +49,22 @@
:post-date #inst "2014-01-04T08:00:00.000-00:00"
:account-id 1234
:description-original "original-description"
:yodlee-merchant #:yodlee-merchant {:yodlee-id "123"
:name "456"}
:status "PENDING"
:status "POSTED"
:id "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b"
:approval-status :transaction-approval-status/unapproved
:description-simple "simple-description"}]
result))))
(t/testing "Should exclude a transaction before start date"
(let [result (sut/transactions->txs [(assoc-in base-transaction
[:bank-account :start-date]
(clj-time.coerce/to-date-time #inst "2020-01-01"))]
:bank-account
noop-rule
#{})]
(t/is (= []
result))))
(t/testing "Should not reimport an existing transaction"
(let [result (sut/transactions->txs [base-transaction]
:bank-account
@@ -207,23 +215,28 @@
:transaction-rule/transaction-approval-status :transaction-approval-status/approved
:transaction-rule/vendor {:db/id 123}}])]
(t/is (= 123
(-> {:transaction/date #inst "2019-01-04T00:00:00.000-08:00"}
(-> {:transaction/date #inst "2019-01-04T00:00:00.000-08:00"
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))
(t/is (= 123
(-> {:transaction/date #inst "2019-01-03T00:00:00.000-08:00"}
(-> {:transaction/date #inst "2019-01-03T00:00:00.000-08:00"
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))
(t/is (= 123
(-> {:transaction/date #inst "2019-01-09T00:00:00.000-08:00"}
(-> {:transaction/date #inst "2019-01-09T00:00:00.000-08:00"
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))
(t/is (nil?
(-> {:transaction/date #inst "2019-01-01T00:00:00.000-08:00"}
(-> {:transaction/date #inst "2019-01-01T00:00:00.000-08:00"
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))
(t/is (nil?
(-> {:transaction/date #inst "2019-01-10T00:00:00.000-08:00"}
(-> {:transaction/date #inst "2019-01-10T00:00:00.000-08:00"
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))))
@@ -232,6 +245,8 @@
:transaction-rule/amount-gte 3.0
:transaction-rule/amount-lte 9.0
:transaction-rule/transaction-approval-status :transaction-approval-status/approved
:transaction-rule/accounts [#:transaction-rule-account {:percentage 1.0
:locatoin "HQ"}]
:transaction-rule/vendor {:db/id 123}}])]
(t/is (= 123
(-> {:transaction/amount 4.0}
@@ -258,22 +273,26 @@
(let [apply-rules (rm/rule-applying-fn [{:db/id 123
:transaction-rule/client {:db/id 456}}])]
(t/is (= 123
(-> {:transaction/client 456}
(-> {:transaction/client 456
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))
(t/is (nil?
(-> {:transaction/client 89}
(-> {:transaction/client 89
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))))
(t/testing "Should match if bank-account matches"
(let [apply-rules (rm/rule-applying-fn [{:db/id 123
:transaction-rule/bank-account {:db/id 456}}])]
(t/is (= 123
(-> {:transaction/bank-account 456}
(-> {:transaction/bank-account 456
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))
(t/is (nil?
(-> {:transaction/bank-account 89}
(-> {:transaction/bank-account 89
:transaction/amount 1.0}
(apply-rules [])
:transaction/matched-rule)))))