Skip to content

Commit

Permalink
unit tests for utils functions
Browse files Browse the repository at this point in the history
  • Loading branch information
briansztamfater committed Apr 25, 2024
1 parent 131b574 commit 84bc5d8
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 96 deletions.
19 changes: 0 additions & 19 deletions src/status_im/contexts/wallet/common/utils/send.cljs

This file was deleted.

75 changes: 0 additions & 75 deletions src/status_im/contexts/wallet/common/utils/send_test.cljs

This file was deleted.

4 changes: 2 additions & 2 deletions src/status_im/contexts/wallet/send/utils.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,11 @@
(conj {:type :add}))))

(defn loading-network-amounts
[affordable-networks disabled-chain-ids receiver-networks to?]
[valid-networks disabled-chain-ids receiver-networks to?]
(let [disabled-set (set disabled-chain-ids)
receiver-networks-set (set receiver-networks)
receiver-networks-count (count receiver-networks)
valid-networks (concat affordable-networks disabled-chain-ids)]
valid-networks (concat valid-networks disabled-chain-ids)]
(cond-> (->> valid-networks
(map (fn [k]
(cond-> {:chain-id k
Expand Down
88 changes: 88 additions & 0 deletions src/status_im/contexts/wallet/send/utils_test.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -203,3 +203,91 @@
(is (= expected
(utils/token-valid-networks {:balances-per-chain balances-per-chain
:disabled-chain-ids disabled-chain-ids}))))))

(deftest test-clean-network-amounts
(testing "Correctly resets loading network amounts to zero and changes type to default"
(let [network-amounts [{:chain-id "1" :total-amount (money/bignumber "100") :type :loading}
{:chain-id "2" :total-amount (money/bignumber "200") :type :default}]
expected [{:chain-id "1" :total-amount (money/bignumber "0") :type :default}
{:chain-id "2" :total-amount (money/bignumber "200") :type :default}]]
(is (= expected (utils/clean-network-amounts network-amounts)))))

(testing "Leaves non-loading types unchanged"
(let [network-amounts [{:chain-id "1" :total-amount (money/bignumber "100") :type :default}
{:chain-id "2" :total-amount (money/bignumber "0") :type :disabled}]
expected [{:chain-id "1" :total-amount (money/bignumber "100") :type :default}
{:chain-id "2" :total-amount (money/bignumber "0") :type :disabled}]]
(is (= expected (utils/clean-network-amounts network-amounts)))))

(testing "Processes an empty list without error"
(let [network-amounts []
expected []]
(is (= expected (utils/clean-network-amounts network-amounts)))))

(testing "Applies transformations to multiple loading entries"
(let [network-amounts [{:chain-id "1" :total-amount (money/bignumber "100") :type :loading}
{:chain-id "2" :total-amount (money/bignumber "200") :type :loading}]
expected [{:chain-id "1" :total-amount (money/bignumber "0") :type :default}
{:chain-id "2" :total-amount (money/bignumber "0") :type :default}]]
(is (= expected (utils/clean-network-amounts network-amounts)))))

(testing "Mix of loading and non-loading types"
(let [network-amounts [{:chain-id "1" :total-amount (money/bignumber "100") :type :loading}
{:chain-id "2" :total-amount (money/bignumber "200") :type :default}
{:chain-id "3" :total-amount (money/bignumber "300") :type :loading}
{:chain-id "4" :total-amount (money/bignumber "0") :type :disabled}]
expected [{:chain-id "1" :total-amount (money/bignumber "0") :type :default}
{:chain-id "2" :total-amount (money/bignumber "200") :type :default}
{:chain-id "3" :total-amount (money/bignumber "0") :type :default}
{:chain-id "4" :total-amount (money/bignumber "0") :type :disabled}]]
(is (= expected (utils/clean-network-amounts network-amounts))))))

(deftest test-loading-network-amounts
(testing "Assigns :loading type to affordable networks except for disabled ones"
(let [valid-networks ["1" "2" "3"]
disabled-chain-ids ["3"]
receiver-networks ["1" "2"]
to? true
expected [{:chain-id "1" :type :loading}
{:chain-id "2" :type :loading}]]
(is
(=
expected
(utils/loading-network-amounts valid-networks disabled-chain-ids receiver-networks to?)))))

(testing "Assigns :disabled type with zero total-amount to disabled networks when to? is false"
(let [valid-networks ["1" "2" "3"]
disabled-chain-ids ["2" "3"]
receiver-networks ["1"]
to? false
expected [{:chain-id "1" :type :loading}
{:chain-id "2" :type :disabled :total-amount (money/bignumber "0")}
{:chain-id "3" :type :disabled :total-amount (money/bignumber "0")}]]
(is
(=
expected
(utils/loading-network-amounts valid-networks disabled-chain-ids receiver-networks to?)))))

(testing "Filters out networks not in receiver networks when to? is true"
(let [valid-networks ["1" "2" "3" "4"]
disabled-chain-ids ["2"]
receiver-networks ["1" "3"]
to? true
expected [{:chain-id "1" :type :loading}
{:chain-id "3" :type :loading}]]
(is
(=
expected
(utils/loading-network-amounts valid-networks disabled-chain-ids receiver-networks to?)))))

(testing "Appends :add type if receiver network count is less than available networks and to? is true"
(let [valid-networks ["1" "2" "3"]
disabled-chain-ids ["2"]
receiver-networks ["1"]
to? true
expected [{:chain-id "1" :type :loading}
{:type :add}]]
(is
(=
expected
(utils/loading-network-amounts valid-networks disabled-chain-ids receiver-networks to?))))))

0 comments on commit 84bc5d8

Please sign in to comment.