@@ -3,39 +3,67 @@ defmodule Ethers.EventTest do
3
3
alias Ethers.Event
4
4
doctest Event
5
5
6
- test "decode log with no data returns empty list" do
7
- selector = % ABI.FunctionSelector {
8
- function: "Approval" ,
9
- method_id: << 140 , 91 , 225 , 229 >> ,
10
- type: :event ,
11
- inputs_indexed: [ true , true , false ] ,
12
- state_mutability: nil ,
13
- input_names: [ "owner" , "spender" , "value" ] ,
14
- types: [ :address , :address , { :uint , 256 } ] ,
15
- returns: [ uint: 256 ]
16
- }
6
+ describe "decode/2" do
7
+ test "decode log with no data returns empty list" do
8
+ selector = % ABI.FunctionSelector {
9
+ function: "Approval" ,
10
+ method_id: << 140 , 91 , 225 , 229 >> ,
11
+ type: :event ,
12
+ inputs_indexed: [ true , true , true ] ,
13
+ state_mutability: nil ,
14
+ input_names: [ "owner" , "spender" , "value" ] ,
15
+ types: [ :address , :address , { :uint , 256 } ] ,
16
+ returns: [ uint: 256 ]
17
+ }
17
18
18
- assert % Ethers.Event { data: [ ] } =
19
- Event . decode (
20
- % {
21
- "address" => "0xaa107ccfe230a29c345fd97bc6eb9bd2fccd0750" ,
22
- "blockHash" =>
23
- "0xe8885761ec559c5e267c48f44b4b12e4169f7d3a116f5e8f43314147722f0d83" ,
24
- "blockNumber" => "0x1138b39" ,
25
- "data" => "0x" ,
26
- "logIndex" => "0x1a1" ,
27
- "removed" => false ,
28
- "topics" => [
29
- "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" ,
30
- "0x00000000000000000000000023c5d7a16cf2e14a00f1c81be9443259f3cbc4ce" ,
31
- "0x0000000000000000000000000000000000000000000000000000000000000000" ,
32
- "0x0000000000000000000000000000000000000000000000000000000000000ef7"
33
- ] ,
34
- "transactionHash" =>
35
- "0xf6e06e4f3fbd67088e8278843e55862957537760c63bae7b682a0e39da75b45d" ,
36
- "transactionIndex" => "0x83"
37
- } ,
38
- selector
39
- )
19
+ assert % Ethers.Event { data: [ ] } =
20
+ Event . decode (
21
+ % {
22
+ "address" => "0xaa107ccfe230a29c345fd97bc6eb9bd2fccd0750" ,
23
+ "blockHash" =>
24
+ "0xe8885761ec559c5e267c48f44b4b12e4169f7d3a116f5e8f43314147722f0d83" ,
25
+ "blockNumber" => "0x1138b39" ,
26
+ "data" => "0x" ,
27
+ "logIndex" => "0x1a1" ,
28
+ "removed" => false ,
29
+ "topics" => [
30
+ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" ,
31
+ "0x00000000000000000000000023c5d7a16cf2e14a00f1c81be9443259f3cbc4ce" ,
32
+ "0x0000000000000000000000000000000000000000000000000000000000000000" ,
33
+ "0x0000000000000000000000000000000000000000000000000000000000000ef7"
34
+ ] ,
35
+ "transactionHash" =>
36
+ "0xf6e06e4f3fbd67088e8278843e55862957537760c63bae7b682a0e39da75b45d" ,
37
+ "transactionIndex" => "0x83"
38
+ } ,
39
+ selector
40
+ )
41
+ end
42
+ end
43
+
44
+ describe "find_and_decode/2" do
45
+ test "finds correct selector and decodes log" do
46
+ assert { :ok , % Ethers.Event { data: [ 3831 ] } } =
47
+ Event . find_and_decode (
48
+ % {
49
+ "address" => "0xaa107ccfe230a29c345fd97bc6eb9bd2fccd0750" ,
50
+ "blockHash" =>
51
+ "0xe8885761ec559c5e267c48f44b4b12e4169f7d3a116f5e8f43314147722f0d83" ,
52
+ "blockNumber" => "0x1138b39" ,
53
+ "data" => "0x0000000000000000000000000000000000000000000000000000000000000ef7" ,
54
+ "logIndex" => "0x1a1" ,
55
+ "removed" => false ,
56
+ "topics" => [
57
+ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" ,
58
+ "0x00000000000000000000000023c5d7a16cf2e14a00f1c81be9443259f3cbc4ce" ,
59
+ "0x0000000000000000000000000000000000000000000000000000000000000000"
60
+ ] ,
61
+ "transactionHash" =>
62
+ "0xf6e06e4f3fbd67088e8278843e55862957537760c63bae7b682a0e39da75b45d" ,
63
+ "transactionIndex" => "0x83"
64
+ } ,
65
+ Ethers.Contracts.ERC20.EventFilters
66
+ )
67
+ end
40
68
end
41
69
end
0 commit comments