makes sure rounding happens.

This commit is contained in:
Bryce Covert
2019-06-05 22:49:51 -07:00
parent 16e1ce998e
commit 7f6abf8a88
2 changed files with 71 additions and 33 deletions

View File

@@ -211,7 +211,7 @@
(deftest test-match-transaction-rule
(testing "it should apply a rules"
(let [{:strs [transaction-id transaction-rule-id]} (-> @(d/transact (d/connect uri)
(let [{:strs [transaction-id transaction-rule-id uneven-transaction-rule-id]} (-> @(d/transact (d/connect uri)
[{:transaction/description-original "matching-desc"
:transaction/date #inst "2019-01-05T00:00:00.000-08:00"
:transaction/client {:client/name "1"
@@ -226,29 +226,55 @@
:transaction-rule/description "matching-desc"
:transaction-rule/accounts [{:transaction-rule-account/location "A"
:transaction-rule-account/account {:account/numeric-code 123 :db/id "123"}
:transaction-rule-account/percentage 1.0}]}])
:transaction-rule-account/percentage 1.0}]}
{:db/id "uneven-transaction-rule-id"
:transaction-rule/note "transaction rule note"
:transaction-rule/description "matching-desc"
:transaction-rule/accounts [{:transaction-rule-account/location "A"
:transaction-rule-account/account {:account/numeric-code 123 :db/id "123"}
:transaction-rule-account/percentage 0.3333333}
{:transaction-rule-account/location "B"
:transaction-rule-account/account {:account/numeric-code 123 :db/id "123"}
:transaction-rule-account/percentage 0.33333333}
{:transaction-rule-account/location "c"
:transaction-rule-account/account {:account/numeric-code 123 :db/id "123"}
:transaction-rule-account/percentage 0.333333}]}])
:tempids)
rule-test (-> (sut/query (admin-token) (v/graphql-query {:venia/operation {:operation/type :mutation
:operation/name "MatchTransactionRule"}
:venia/queries [{:query/data (sut/->graphql [:match-transaction-rule
:operation/name "MatchTransactionRules"}
:venia/queries [{:query/data (sut/->graphql [:match-transaction-rules
{:transaction-rule-id transaction-rule-id
:transaction-id transaction-id}
:transaction-ids [transaction-id]}
[[:matched-rule [:id :note]] [:accounts [:id]] ]])}]}))
:data
:match-transaction-rule)]
:match-transaction-rules)]
(is (= "transaction rule note" (-> rule-test :matched-rule :note)))
(is (= 1 (-> rule-test :accounts count)))
(is (= "transaction rule note" (-> rule-test first :matched-rule :note)))
(is (= 1 (-> rule-test first :accounts count)))
(testing "Should replace accounts when matching a second time"
(let [rule-test (-> (sut/query (admin-token) (v/graphql-query {:venia/operation {:operation/type :mutation
:operation/name "MatchTransactionRule"}
:venia/queries [{:query/data (sut/->graphql [:match-transaction-rule
:operation/name "MatchTransactionRules"}
:venia/queries [{:query/data (sut/->graphql [:match-transaction-rules
{:transaction-rule-id transaction-rule-id
:transaction-id transaction-id}
:transaction-ids [transaction-id]}
[[:matched-rule [:id :note]] [:accounts [:id]] ]])}]}))
:data
:match-transaction-rule)]
(is (= 1 (-> rule-test :accounts count))))))))
:match-transaction-rules)]
(is (= 1 (-> rule-test first :accounts count)))))
(testing "Should round when the transaction can't be divided eventy"
(let [rule-test (-> (sut/query (admin-token) (v/graphql-query {:venia/operation {:operation/type :mutation
:operation/name "MatchTransactionRules"}
:venia/queries [{:query/data (sut/->graphql [:match-transaction-rules
{:transaction-rule-id uneven-transaction-rule-id
:transaction-ids [transaction-id]}
[[:matched-rule [:id :note]] [:accounts [:id :amount]] ]])}]}))
:data
:match-transaction-rules)]
(is (= 3 (-> rule-test first :accounts count)))
(is (= "0.33" (-> rule-test first :accounts (nth 0) :amount)))
(is (= "0.33" (-> rule-test first :accounts (nth 1) :amount)))
(is (= "0.34" (-> rule-test first :accounts (nth 2) :amount))))))))