@ -1,109 +1,90 @@
defmodule ExplorerWeb.AddressPageTest do
defmodule ExplorerWeb.AddressPageTest do
use ExplorerWeb.FeatureCase , async : true
use ExplorerWeb.FeatureCase , async : true
import Wallaby.Query , only : [ css : 2 ]
alias Explorer.Chain . { Credit , Debit }
alias ExplorerWeb.AddressPage
alias ExplorerWeb.AddressPage
setup do
setup do
block =
block = insert ( :block )
insert ( :block , %{
number : 555 ,
lincoln = insert ( :address )
timestamp : Timex . now ( ) |> Timex . shift ( hours : - 2 ) ,
taft = insert ( :address )
gas_used : 123_987
} )
from_taft =
:transaction
for _ <- 0 . . 3 , do : insert ( :transaction ) |> with_block ( block )
|> insert ( from_address_id : taft . id , to_address_id : lincoln . id )
insert ( :transaction , hash : " 0xC001 " , gas : 5891 ) |> with_block
|> with_block ( block )
|> with_receipt ( )
lincoln = insert ( :address , hash : " 0xlincoln " )
taft = insert ( :address , hash : " 0xhowardtaft " )
from_lincoln =
:transaction
transaction =
|> insert ( from_address_id : lincoln . id , to_address_id : taft . id )
insert (
|> with_block ( block )
:transaction ,
|> with_receipt ( )
hash : " 0xSk8 " ,
value : Explorer.Chain.Wei . from ( Decimal . new ( 5656 ) , :ether ) ,
{ :ok ,
gas : Decimal . new ( 1_230_000_000_000_123_123 ) ,
%{
gas_price : Decimal . new ( 7_890_000_000_898_912_300_045 ) ,
transactions : %{ from_lincoln : from_lincoln , from_taft : from_taft } ,
input : " 0x00012 " ,
addresses : %{ lincoln : lincoln , taft : taft }
nonce : 99045 ,
} }
inserted_at : Timex . parse! ( " 1970-01-01T00:00:18-00:00 " , " {ISO:Extended} " ) ,
updated_at : Timex . parse! ( " 1980-01-01T00:00:18-00:00 " , " {ISO:Extended} " ) ,
from_address_id : taft . id ,
to_address_id : lincoln . id
)
insert ( :block_transaction , block : block , transaction : transaction )
receipt = insert ( :receipt , transaction : transaction , status : 1 )
insert ( :log , address_id : lincoln . id , receipt : receipt )
# From Lincoln to Taft.
txn_from_lincoln =
insert (
:transaction ,
hash : " 0xrazerscooter " ,
from_address_id : lincoln . id ,
to_address_id : taft . id
)
insert ( :block_transaction , block : block , transaction : txn_from_lincoln )
insert ( :receipt , transaction : txn_from_lincoln )
Credit . refresh ( )
Debit . refresh ( )
{ :ok , %{ address : lincoln , transaction : transaction } }
end
end
test " viewing address overview information " , %{ session : session } do
test " viewing address overview information " , %{ session : session } do
insert ( :address , hash : " 0xthinmints " , balance : 500 )
address = insert ( :address , balance : 500 )
session
session
|> visit ( " /en/addresses/0xthinmints " )
|> AddressPage . visit_page ( address )
|> assert_has ( css ( " .address__balance " , text : " 0.000,000,000,000,000,500 POA " ) )
|> assert_text ( AddressPage . balance ( ) , " 0.000,000,000,000,000,500 POA " )
end
end
describe " viewing transactions " do
describe " viewing transactions " do
test " sees all addresses transactions by default " , %{ address : address , session : session } do
test " sees all addresses transactions by default " , %{
addresses : addresses ,
session : session ,
transactions : transactions
} do
session
session
|> AddressPage . visit_page ( address . hash )
|> AddressPage . visit_page ( addresses . lincoln )
|> assert_has ( AddressPage . transaction ( " 0xSk8 " ) )
|> assert_has ( AddressPage . transaction ( transactions . from_taft ) )
|> assert_has ( AddressPage . transaction ( " 0xrazerscooter " ) )
|> assert_has ( AddressPage . transaction ( transactions . from_lincoln ) )
end
end
test " can filter to only see transactions to an address " , %{ address : address , session : session } do
test " can filter to only see transactions from an address " , %{
addresses : addresses ,
session : session ,
transactions : transactions
} do
session
session
|> visit ( " /en/addresses/ #{ address . hash } " )
|> AddressPage . visit_page ( addresses . lincoln )
|> click ( css ( " [data-test='filter_dropdown'] " , text : " Filter: All " ) )
|> AddressPage . apply_filter ( " From " )
|> click ( css ( " .address__link " , text : " To " ) )
|> assert_has ( AddressPage . transaction ( transactions . from_lincoln ) )
|> assert_has ( css ( " .transactions__link--long-hash " , text : " 0xSk8 " ) )
|> refute_has ( AddressPage . transaction ( transactions . from_taft ) )
|> refute_has ( css ( " .transactions__link--long-hash " , text : " 0xrazerscooter " ) )
end
end
test " can filter to only see transactions from an address " , %{ address : address , session : session } do
test " can filter to only see transactions to an address " , %{
addresses : addresses ,
session : session ,
transactions : transactions
} do
session
session
|> visit ( " /en/addresses/ #{ address . hash } " )
|> AddressPage . visit_page ( addresses . lincoln )
|> click ( css ( " [data-test='filter_dropdown'] " , text : " Filter: All " ) )
|> AddressPage . apply_filter ( " To " )
|> click ( css ( " .address__link " , text : " From " ) )
|> refute_has ( AddressPage . transaction ( transactions . from_lincoln ) )
|> assert_has ( css ( " .transactions__link--long-hash " , text : " 0xrazerscooter " ) )
|> assert_has ( AddressPage . transaction ( transactions . from_taft ) )
|> refute_has ( css ( " .transactions__link--long-hash " , text : " 0xSk8 " ) )
end
end
end
end
describe " viewing internal transactions " do
describe " viewing internal transactions " do
setup %{ address : address , transaction : transaction } do
setup %{ addresses : addresses , transactions : transactions } do
insert ( :internal_transaction , transaction_id : transaction . id , to_address_id : address . id )
address_id = addresses . lincoln . id
insert ( :internal_transaction , transaction_id : transaction . id , from_address_id : address . id )
transaction_id = transactions . from_lincoln . id
insert ( :internal_transaction , transaction_id : transaction_id , to_address_id : address_id , index : 0 )
insert ( :internal_transaction , transaction_id : transaction_id , from_address_id : address_id , index : 1 )
:ok
:ok
end
end
test " can see internal transactions for an address " , %{ address : address , session : session } do
test " can see internal transactions for an address " , %{ addresses : addresse s , session : session } do
session
session
|> AddressPage . visit_page ( address . hash )
|> AddressPage . visit_page ( addresses . lincoln )
|> AddressPage . click_internal_transactions ( )
|> AddressPage . click_internal_transactions ( )
|> assert_has ( AddressPage . internal_transactions ( count : 2 ) )
|> assert_has ( AddressPage . internal_transactions ( count : 2 ) )
end
end
@ -118,7 +99,7 @@ defmodule ExplorerWeb.AddressPageTest do
test " can filter to only see internal transactions to an address " , %{ addresses : addresses , session : session } do
test " can filter to only see internal transactions to an address " , %{ addresses : addresses , session : session } do
session
session
|> AddressPage . visit_page ( address . hash )
|> AddressPage . visit_page ( addresses . lincoln )
|> AddressPage . click_internal_transactions ( )
|> AddressPage . click_internal_transactions ( )
|> AddressPage . apply_filter ( " To " )
|> AddressPage . apply_filter ( " To " )
|> assert_has ( AddressPage . internal_transactions ( count : 1 ) )
|> assert_has ( AddressPage . internal_transactions ( count : 1 ) )