Don’t render pending transaction beyond page one

pull/816/head
Stamates 6 years ago
parent 44f330763e
commit b9f233fd85
  1. 8
      apps/block_scout_web/lib/block_scout_web/controllers/address_transaction_controller.ex
  2. 29
      apps/block_scout_web/test/block_scout_web/controllers/address_transaction_controller_test.exs

@ -31,6 +31,12 @@ defmodule BlockScoutWeb.AddressTransactionController do
transactions_plus_one = Chain.address_to_transactions(address, full_options)
{transactions, next_page} = split_list_by_page(transactions_plus_one)
pending_transactions =
case Map.has_key?(params, "block_number") do
true -> []
false -> Chain.address_to_pending_transactions(address, pending_options)
end
render(
conn,
"index.html",
@ -38,7 +44,7 @@ defmodule BlockScoutWeb.AddressTransactionController do
next_page_params: next_page_params(next_page, transactions, params),
exchange_rate: Market.get_exchange_rate(Explorer.coin()) || Token.null(),
filter: params["filter"],
pending_transactions: Chain.address_to_pending_transactions(address, pending_options),
pending_transactions: pending_transactions,
transactions: transactions,
transaction_count: transaction_count(address),
validation_count: validation_count(address)

@ -97,6 +97,35 @@ defmodule BlockScoutWeb.AddressTransactionControllerTest do
assert second_page_hashes == actual_hashes
end
test "does not return pending transactions if beyond page one", %{conn: conn} do
address = insert(:address)
50
|> insert_list(:transaction, from_address: address)
|> with_block()
|> Enum.map(& &1.hash)
%Transaction{block_number: block_number, index: index} =
:transaction
|> insert(from_address: address)
|> with_block()
pending = insert(:transaction, from_address: address, to_address: address)
conn =
get(conn, address_transaction_path(BlockScoutWeb.Endpoint, :index, address.hash), %{
"block_number" => Integer.to_string(block_number),
"index" => Integer.to_string(index)
})
actual_pending_hashes =
conn.assigns.pending_transactions
|> Enum.map(& &1.hash)
|> Enum.reverse()
refute Enum.member?(actual_pending_hashes, pending.hash)
end
test "next_page_params exist if not on last page", %{conn: conn} do
address = insert(:address)
block = %Block{number: number} = insert(:block)

Loading…
Cancel
Save