Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
blockscout/test/explorer_web/controllers/transaction_controller_test...

70 lines
3.0 KiB

defmodule ExplorerWeb.TransactionControllerTest do
use ExplorerWeb.ConnCase
describe "GET index/2" do
test "returns a transaction with a receipt", %{conn: conn} do
transaction = insert(:transaction)
block = insert(:block)
address = insert(:address)
insert(:transaction_receipt, transaction: transaction)
insert(:block_transaction, transaction: transaction, block: block)
insert(:to_address, transaction: transaction, address: address)
insert(:from_address, transaction: transaction, address: address)
conn = get(conn, "/en/transactions")
assert List.first(conn.assigns.transactions.entries).id == transaction.id
end
test "returns a count of transactions", %{conn: conn} do
transaction = insert(:transaction)
block = insert(:block)
address = insert(:address)
insert(:transaction_receipt, transaction: transaction)
insert(:block_transaction, transaction: transaction, block: block)
insert(:to_address, transaction: transaction, address: address)
insert(:from_address, transaction: transaction, address: address)
conn = get(conn, "/en/transactions")
assert conn.assigns.transactions.total_entries === 1
end
test "returns no pending transactions", %{conn: conn} do
insert(:transaction)
conn = get(conn, "/en/transactions")
assert conn.assigns.transactions.entries == []
end
test "returns a zero count when there are only pending transactions", %{conn: conn} do
insert(:transaction)
conn = get(conn, "/en/transactions")
assert conn.assigns.transactions.total_entries === 0
end
test "paginates transactions using the last seen transaction", %{conn: conn} do
transaction = insert(:transaction)
block = insert(:block)
address = insert(:address)
insert(:transaction_receipt, transaction: transaction)
insert(:block_transaction, transaction: transaction, block: block)
insert(:to_address, transaction: transaction, address: address)
insert(:from_address, transaction: transaction, address: address)
conn = get(conn, "/en/transactions", last_seen: transaction.id)
assert conn.assigns.transactions.entries == []
end
end
describe "GET show/3" do
test "when there is an associated block, it returns a transaction with block data", %{conn: conn} do
block = insert(:block, %{number: 777})
transaction = insert(:transaction, hash: "0x8") |> with_block(block) |> with_addresses
conn = get(conn, "/en/transactions/0x8")
assert conn.assigns.transaction.id == transaction.id
assert conn.assigns.transaction.block_number == block.number
end
test "returns a transaction without associated block data", %{conn: conn} do
transaction = insert(:transaction, hash: "0x8") |> with_addresses
conn = get(conn, "/en/transactions/0x8")
assert conn.assigns.transaction.id == transaction.id
assert conn.assigns.transaction.block_number == ""
end
end
end