forked from ethereum/web3.py
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_attach_modules.py
68 lines (56 loc) · 1.89 KB
/
test_attach_modules.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from eth_utils import (
is_integer,
)
def test_attach_modules(web3, module1, module2, module3, module4):
web3.attach_modules({
'module1': module1,
'module2': (module2, {
'submodule1': (module3, {
'submodule2': module4,
}),
})
})
# assert module1 attached
assert hasattr(web3, 'module1')
assert web3.module1.a == 'a'
assert web3.module1.b == 'b'
# assert module2 + submodules attached
assert hasattr(web3, 'module2')
assert web3.module2.c == 'c'
assert web3.module2.d() == 'd'
assert hasattr(web3.module2, 'submodule1')
assert web3.module2.submodule1.e == 'e'
assert hasattr(web3.module2.submodule1, 'submodule2')
assert web3.module2.submodule1.submodule2.f == 'f'
# assert default modules intact
assert hasattr(web3, 'geth')
assert hasattr(web3, 'eth')
assert is_integer(web3.eth.chain_id)
def test_attach_modules_that_do_not_inherit_from_module_class(
web3, module1_unique, module2_unique, module3_unique, module4_unique,
):
web3.attach_modules(
{
'module1': module1_unique,
'module2': (module2_unique, {
'submodule1': (module3_unique, {
'submodule2': module4_unique,
}),
})
}
)
# assert module1 attached
assert hasattr(web3, 'module1')
assert web3.module1.a == 'a'
# assert module2 + submodules attached
assert hasattr(web3, 'module2')
assert web3.module2.b == 'b'
assert web3.module2.c() == 'c'
assert hasattr(web3.module2, 'submodule1')
assert web3.module2.submodule1.d == 'd'
assert hasattr(web3.module2.submodule1, 'submodule2')
assert web3.module2.submodule1.submodule2.e == 'e'
# assert default modules intact
assert hasattr(web3, 'geth')
assert hasattr(web3, 'eth')
assert is_integer(web3.eth.chain_id)