@ -70,7 +70,7 @@ defmodule Explorer.ChainTest do
describe " address_to_logs/2 " do
test " fetches logs " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction1 =
:transaction
@ -86,11 +86,11 @@ defmodule Explorer.ChainTest do
insert ( :log , transaction : transaction2 , index : 2 , address : address )
assert Enum . count ( Chain . address_to_logs ( address ) ) == 2
assert Enum . count ( Chain . address_to_logs ( address_hash ) ) == 2
end
test " paginates logs " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -105,15 +105,15 @@ defmodule Explorer.ChainTest do
paging_options1 = % PagingOptions { page_size : 1 }
[ _log ] = Chain . address_to_logs ( address , paging_options : paging_options1 )
[ _log ] = Chain . address_to_logs ( address_hash , paging_options : paging_options1 )
paging_options2 = % PagingOptions { page_size : 60 , key : { transaction . block_number , transaction . index , log1 . index } }
assert Enum . count ( Chain . address_to_logs ( address , paging_options : paging_options2 ) ) == 50
assert Enum . count ( Chain . address_to_logs ( address_hash , paging_options : paging_options2 ) ) == 50
end
test " searches logs by topic when the first topic matches " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction1 =
:transaction
@ -129,13 +129,13 @@ defmodule Explorer.ChainTest do
insert ( :log , transaction : transaction2 , index : 2 , address : address , first_topic : " test " )
[ found_log ] = Chain . address_to_logs ( address , topic : " test " )
[ found_log ] = Chain . address_to_logs ( address_hash , topic : " test " )
assert found_log . transaction . hash == transaction2 . hash
end
test " searches logs by topic when the fourth topic matches " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction1 =
:transaction
@ -151,7 +151,7 @@ defmodule Explorer.ChainTest do
insert ( :log , transaction : transaction2 , index : 2 , address : address )
[ found_log ] = Chain . address_to_logs ( address , topic : " test " )
[ found_log ] = Chain . address_to_logs ( address_hash , topic : " test " )
assert found_log . transaction . hash == transaction1 . hash
end
@ -159,15 +159,15 @@ defmodule Explorer.ChainTest do
describe " address_to_transactions_with_rewards/2 " do
test " without transactions " do
address = insert ( :address )
% Address { hash : address_hash } = insert ( :address )
assert Repo . aggregate ( Transaction , :count , :hash ) == 0
assert [ ] == Chain . address_to_transactions_with_rewards ( address )
assert [ ] == Chain . address_to_transactions_with_rewards ( address_hash )
end
test " with from transactions " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -176,12 +176,12 @@ defmodule Explorer.ChainTest do
|> Repo . preload ( :token_transfers )
assert [ transaction ] ==
Chain . address_to_transactions_with_rewards ( address , direction : :from )
Chain . address_to_transactions_with_rewards ( address_hash , direction : :from )
|> Repo . preload ( [ :block , :to_address , :from_address ] )
end
test " with to transactions " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -190,12 +190,12 @@ defmodule Explorer.ChainTest do
|> Repo . preload ( :token_transfers )
assert [ transaction ] ==
Chain . address_to_transactions_with_rewards ( address , direction : :to )
Chain . address_to_transactions_with_rewards ( address_hash , direction : :to )
|> Repo . preload ( [ :block , :to_address , :from_address ] )
end
test " with to and from transactions and direction: :from " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -205,12 +205,12 @@ defmodule Explorer.ChainTest do
# only contains "from" transaction
assert [ transaction ] ==
Chain . address_to_transactions_with_rewards ( address , direction : :from )
Chain . address_to_transactions_with_rewards ( address_hash , direction : :from )
|> Repo . preload ( [ :block , :to_address , :from_address ] )
end
test " with to and from transactions and direction: :to " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -219,12 +219,12 @@ defmodule Explorer.ChainTest do
|> Repo . preload ( :token_transfers )
assert [ transaction ] ==
Chain . address_to_transactions_with_rewards ( address , direction : :to )
Chain . address_to_transactions_with_rewards ( address_hash , direction : :to )
|> Repo . preload ( [ :block , :to_address , :from_address ] )
end
test " with to and from transactions and no :direction option " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
block = insert ( :block )
transaction1 =
@ -240,7 +240,7 @@ defmodule Explorer.ChainTest do
|> Repo . preload ( :token_transfers )
assert [ transaction2 , transaction1 ] ==
Chain . address_to_transactions_with_rewards ( address )
Chain . address_to_transactions_with_rewards ( address_hash )
|> Repo . preload ( [ :block , :to_address , :from_address ] )
end
@ -259,11 +259,11 @@ defmodule Explorer.ChainTest do
transaction_index : transaction . index
)
assert [ ] == Chain . address_to_transactions_with_rewards ( address )
assert [ ] == Chain . address_to_transactions_with_rewards ( address . hash )
end
test " returns transactions that have token transfers for the given to_address " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -277,12 +277,12 @@ defmodule Explorer.ChainTest do
)
assert [ transaction . hash ] ==
Chain . address_to_transactions_with_rewards ( address )
Chain . address_to_transactions_with_rewards ( address_hash )
|> Enum . map ( & &1 . hash )
end
test " returns just the token transfers related to the given address " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -303,7 +303,7 @@ defmodule Explorer.ChainTest do
)
transaction =
address
address_hash
|> Chain . address_to_transactions_with_rewards ( )
|> List . first ( )
@ -344,7 +344,7 @@ defmodule Explorer.ChainTest do
)
transaction =
contract_address
contract_address . hash
|> Chain . address_to_transactions_with_rewards ( )
|> List . first ( )
@ -360,6 +360,7 @@ defmodule Explorer.ChainTest do
end
test " returns all token transfers when the given address is the token contract address " do
% Address { hash : contract_address_hash } =
contract_address = insert ( :address , contract_code : Factory . data ( " contract_code " ) )
transaction =
@ -381,7 +382,7 @@ defmodule Explorer.ChainTest do
transaction : transaction
)
transaction = Chain . address_to_transactions_with_rewards ( contract_address ) |> List . first ( )
transaction = Chain . address_to_transactions_with_rewards ( contract_address_hash ) |> List . first ( )
assert Enum . count ( transaction . token_transfers ) == 2
end
@ -427,7 +428,7 @@ defmodule Explorer.ChainTest do
)
transactions_hashes =
paul
paul . hash
|> Chain . address_to_transactions_with_rewards ( )
|> Enum . map ( & &1 . hash )
@ -436,7 +437,7 @@ defmodule Explorer.ChainTest do
end
test " with transactions can be paginated " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
second_page_hashes =
2
@ -450,7 +451,7 @@ defmodule Explorer.ChainTest do
|> with_block ( )
assert second_page_hashes ==
address
address_hash
|> Chain . address_to_transactions_with_rewards (
paging_options : % PagingOptions {
key : { block_number , index } ,
@ -462,7 +463,7 @@ defmodule Explorer.ChainTest do
end
test " returns results in reverse chronological order by block number and transaction index " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
a_block = insert ( :block , number : 6000 )
@ -499,7 +500,7 @@ defmodule Explorer.ChainTest do
|> with_block ( b_block )
result =
address
address_hash
|> Chain . address_to_transactions_with_rewards ( )
|> Enum . map ( & &1 . hash )
@ -525,7 +526,7 @@ defmodule Explorer.ChainTest do
address_type : :emission_funds
)
assert [ { _ , _ } ] = Chain . address_to_transactions_with_rewards ( block . miner )
assert [ { _ , _ } ] = Chain . address_to_transactions_with_rewards ( block . miner . hash )
Application . put_env ( :block_scout_web , BlockScoutWeb.Chain , has_emission_funds : false )
end
@ -554,7 +555,7 @@ defmodule Explorer.ChainTest do
|> with_block ( )
|> Repo . preload ( :token_transfers )
assert [ _ , { _ , _ } ] = Chain . address_to_transactions_with_rewards ( block . miner , direction : :from )
assert [ _ , { _ , _ } ] = Chain . address_to_transactions_with_rewards ( block . miner . hash , direction : :from )
Application . put_env ( :block_scout_web , BlockScoutWeb.Chain , has_emission_funds : false )
end
@ -578,7 +579,7 @@ defmodule Explorer.ChainTest do
address_type : :emission_funds
)
assert [ ] == Chain . address_to_transactions_with_rewards ( block . miner )
assert [ ] == Chain . address_to_transactions_with_rewards ( block . miner . hash )
end
end
@ -590,7 +591,7 @@ defmodule Explorer.ChainTest do
|> insert ( nonce : 100 , from_address : address )
|> with_block ( insert ( :block , number : 1000 ) )
assert Chain . total_transactions_sent_by_address ( address ) == 101
assert Chain . total_transactions_sent_by_address ( address . hash ) == 101
end
test " returns 0 when the address did not send transactions " do
@ -600,7 +601,7 @@ defmodule Explorer.ChainTest do
|> insert ( nonce : 100 , to_address : address )
|> with_block ( insert ( :block , number : 1000 ) )
assert Chain . total_transactions_sent_by_address ( address ) == 0
assert Chain . total_transactions_sent_by_address ( address . hash ) == 0
end
end
@ -707,15 +708,15 @@ defmodule Explorer.ChainTest do
describe " address_to_incoming_transaction_count/1 " do
test " without transactions " do
address = insert ( :address )
% Address { hash : address_hash } = insert ( :address )
assert Chain . address_to_incoming_transaction_count ( address ) == 0
assert Chain . address_to_incoming_transaction_count ( address_hash ) == 0
end
test " with transactions " do
% Transaction { to_address : to_address } = insert ( :transaction )
assert Chain . address_to_incoming_transaction_count ( to_address ) == 1
assert Chain . address_to_incoming_transaction_count ( to_address . hash ) == 1
end
end
@ -1575,20 +1576,20 @@ defmodule Explorer.ChainTest do
describe " get_blocks_validated_by_address/2 " do
test " returns nothing when there are no blocks " do
address = insert ( :address )
% Address { hash : address_hash } = insert ( :address )
assert [ ] = Chain . get_blocks_validated_by_address ( address )
assert [ ] = Chain . get_blocks_validated_by_address ( address_hash )
end
test " returns the blocks validated by a specified address " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
another_address = insert ( :address )
block = insert ( :block , miner : address , miner_hash : address . hash )
insert ( :block , miner : another_address , miner_hash : another_address . hash )
results =
address
address_hash
|> Chain . get_blocks_validated_by_address ( )
|> Enum . map ( & &1 . hash )
@ -1596,20 +1597,20 @@ defmodule Explorer.ChainTest do
end
test " with blocks can be paginated " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
first_page_block = insert ( :block , miner : address , miner_hash : address . hash , number : 0 )
second_page_block = insert ( :block , miner : address , miner_hash : address . hash , number : 2 )
assert [ first_page_block . number ] ==
[ paging_options : % PagingOptions { key : { 1 } , page_size : 1 } ]
|> Chain . get_blocks_validated_by_address ( address )
|> Chain . get_blocks_validated_by_address ( address_hash )
|> Enum . map ( & &1 . number )
|> Enum . reverse ( )
assert [ second_page_block . number ] ==
[ paging_options : % PagingOptions { key : { 3 } , page_size : 1 } ]
|> Chain . get_blocks_validated_by_address ( address )
|> Chain . get_blocks_validated_by_address ( address_hash )
|> Enum . map ( & &1 . number )
|> Enum . reverse ( )
end
@ -1674,7 +1675,7 @@ defmodule Explorer.ChainTest do
)
result =
address
address . hash
|> Chain . address_to_internal_transactions ( )
|> Enum . map ( & { &1 . transaction_hash , &1 . index } )
@ -1683,7 +1684,7 @@ defmodule Explorer.ChainTest do
end
test " loads associations in necessity_by_association " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
block = insert ( :block , number : 2000 )
transaction =
@ -1714,7 +1715,7 @@ defmodule Explorer.ChainTest do
transaction : % Transaction { }
}
| _
] = Chain . address_to_internal_transactions ( address )
] = Chain . address_to_internal_transactions ( address_hash )
assert [
% InternalTransaction {
@ -1725,7 +1726,7 @@ defmodule Explorer.ChainTest do
| _
] =
Chain . address_to_internal_transactions (
address ,
address_hash ,
necessity_by_association : %{
[ from_address : :names ] = > :optional ,
[ to_address : :names ] = > :optional ,
@ -1844,7 +1845,7 @@ defmodule Explorer.ChainTest do
)
result =
address
address . hash
|> Chain . address_to_internal_transactions ( )
|> Enum . map ( & { &1 . transaction_hash , &1 . index } )
@ -1968,7 +1969,7 @@ defmodule Explorer.ChainTest do
{ second_transaction_hash , second_index } ,
{ first_transaction_hash , first_index }
] ==
address
address . hash
|> Chain . address_to_internal_transactions (
paging_options : % PagingOptions { key : { 6001 , 3 , 2 } , page_size : 8 }
)
@ -1981,7 +1982,7 @@ defmodule Explorer.ChainTest do
{ second_transaction_hash , second_index } ,
{ first_transaction_hash , first_index }
] ==
address
address . hash
|> Chain . address_to_internal_transactions (
paging_options : % PagingOptions { key : { 6000 , 0 , 1 } , page_size : 8 }
)
@ -1994,7 +1995,7 @@ defmodule Explorer.ChainTest do
{ second_transaction_hash , second_index } ,
{ first_transaction_hash , first_index }
] ==
address
address . hash
|> Chain . address_to_internal_transactions (
paging_options : % PagingOptions { key : { 6000 , - 1 , - 1 } , page_size : 8 }
)
@ -2002,7 +2003,7 @@ defmodule Explorer.ChainTest do
# block number <
assert [ ] ==
address
address . hash
|> Chain . address_to_internal_transactions (
paging_options : % PagingOptions { key : { 2000 , - 1 , - 1 } , page_size : 8 }
)
@ -2010,7 +2011,7 @@ defmodule Explorer.ChainTest do
end
test " excludes internal transactions of type `call` when they are alone in the parent transaction " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -2025,11 +2026,11 @@ defmodule Explorer.ChainTest do
transaction_index : transaction . index
)
assert Enum . empty? ( Chain . address_to_internal_transactions ( address ) )
assert Enum . empty? ( Chain . address_to_internal_transactions ( address_hash ) )
end
test " includes internal transactions of type `create` even when they are alone in the parent transaction " do
address = insert ( :address )
% Address { hash : address_hash } = address = insert ( :address )
transaction =
:transaction
@ -2046,7 +2047,7 @@ defmodule Explorer.ChainTest do
transaction_index : transaction . index
)
actual = Enum . at ( Chain . address_to_internal_transactions ( address ) , 0 )
actual = Enum . at ( Chain . address_to_internal_transactions ( address_hash ) , 0 )
assert { actual . transaction_hash , actual . index } == { expected . transaction_hash , expected . index }
end