Add test for mutiple current token balances insertion

pull/3902/head
Viktor Baranov 4 years ago
parent 3fd1e91763
commit 1a134b5902
  1. 123
      apps/explorer/test/explorer/chain/import/runner/address/current_token_balances_test.exs

@ -65,6 +65,129 @@ defmodule Explorer.Chain.Import.Runner.Address.CurrentTokenBalancesTest do
assert current_token_balances == 1
end
test "inserts values for multiple token IDs in the current token balances", %{
address: %Address{hash: address_hash},
token: %Token{contract_address_hash: token_contract_address_hash},
options: options
} do
value_1 = Decimal.new(111)
token_id_1 = Decimal.new(1)
value_2 = Decimal.new(222)
token_id_2 = Decimal.new(2)
token_erc_20 = insert(:token, holder_count: 0)
token_erc_20_contract_address_hash = token_erc_20.contract_address_hash
value_3 = Decimal.new(333)
token_id_3 = nil
token_erc_721 = insert(:token, holder_count: 0)
token_erc_721_contract_address_hash = token_erc_721.contract_address_hash
value_4 = Decimal.new(1)
token_id_4 = Decimal.new(1)
block_number = 1
assert {:ok,
%{
address_current_token_balances: [
%Explorer.Chain.Address.CurrentTokenBalance{
address_hash: ^address_hash,
block_number: ^block_number,
token_contract_address_hash: ^token_erc_20_contract_address_hash,
value: ^value_3,
token_id: ^token_id_3
},
%Explorer.Chain.Address.CurrentTokenBalance{
address_hash: ^address_hash,
block_number: ^block_number,
token_contract_address_hash: ^token_contract_address_hash,
value: ^value_2,
token_id: ^token_id_2
},
%Explorer.Chain.Address.CurrentTokenBalance{
address_hash: ^address_hash,
block_number: ^block_number,
token_contract_address_hash: ^token_contract_address_hash,
value: ^value_1,
token_id: ^token_id_1
},
%Explorer.Chain.Address.CurrentTokenBalance{
address_hash: ^address_hash,
block_number: ^block_number,
token_contract_address_hash: ^token_erc_721_contract_address_hash,
value: ^value_4,
token_id: ^token_id_4
}
],
address_current_token_balances_update_token_holder_counts: [
%{
contract_address_hash: ^token_contract_address_hash,
holder_count: 2
},
%{
contract_address_hash: ^token_erc_20_contract_address_hash,
holder_count: 1
},
%{
contract_address_hash: ^token_erc_721_contract_address_hash,
holder_count: 1
}
]
}} =
run_changes_list(
[
%{
address_hash: address_hash,
block_number: block_number,
token_contract_address_hash: token_contract_address_hash,
value: value_1,
value_fetched_at: DateTime.utc_now(),
token_id: token_id_1,
token_type: "ERC-1155"
},
%{
address_hash: address_hash,
block_number: block_number,
token_contract_address_hash: token_contract_address_hash,
value: value_2,
value_fetched_at: DateTime.utc_now(),
token_id: token_id_2,
token_type: "ERC-1155"
},
%{
address_hash: address_hash,
block_number: block_number,
token_contract_address_hash: token_erc_20.contract_address_hash,
value: value_3,
value_fetched_at: DateTime.utc_now(),
token_id: token_id_3,
token_type: "ERC-20"
},
%{
address_hash: address_hash,
block_number: block_number,
token_contract_address_hash: token_erc_721.contract_address_hash,
value: value_4,
value_fetched_at: DateTime.utc_now(),
token_id: token_id_4,
token_type: "ERC-721"
}
],
options
)
current_token_balances =
CurrentTokenBalance
|> Repo.all()
current_token_balances_count =
current_token_balances
|> Enum.count()
assert current_token_balances_count == 4
end
test "updates when the new block number is greater", %{
address: address,
token: token,

Loading…
Cancel
Save