forked from CosmWasm/wasmd
-
Notifications
You must be signed in to change notification settings - Fork 9
/
keeper_test.go
79 lines (61 loc) · 2.55 KB
/
keeper_test.go
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
69
70
71
72
73
74
75
76
77
78
79
package keeper
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
sdk "github.com/line/lbm-sdk/types"
)
func TestActivateContract(t *testing.T) {
ctx, keepers := CreateTestInput(t, false, AvailableCapabilities)
k := keepers.WasmKeeper
example := InstantiateHackatomExampleContract(t, ctx, keepers)
em := sdk.NewEventManager()
// request no contract address -> fail
err := k.activateContract(ctx, example.CreatorAddr)
require.Error(t, err, fmt.Sprintf("no contract %s", example.CreatorAddr))
// try to activate an activated contract -> fail
err = k.activateContract(ctx.WithEventManager(em), example.Contract)
require.Error(t, err, fmt.Sprintf("no inactivate contract %s", example.Contract))
// add to inactive contract
err = k.deactivateContract(ctx, example.Contract)
require.NoError(t, err)
// try to activate an inactivated contract -> success
err = k.activateContract(ctx, example.Contract)
require.NoError(t, err)
}
func TestDeactivateContract(t *testing.T) {
ctx, keepers := CreateTestInput(t, false, AvailableCapabilities)
k := keepers.WasmKeeper
example := InstantiateHackatomExampleContract(t, ctx, keepers)
em := sdk.NewEventManager()
// request no contract address -> fail
err := k.deactivateContract(ctx, example.CreatorAddr)
require.Error(t, err, fmt.Sprintf("no contract %s", example.CreatorAddr))
// success case
err = k.deactivateContract(ctx, example.Contract)
require.NoError(t, err)
// already inactivate contract -> fail
err = k.deactivateContract(ctx.WithEventManager(em), example.Contract)
require.Error(t, err, fmt.Sprintf("already inactivate contract %s", example.Contract))
}
func TestIterateInactiveContracts(t *testing.T) {
ctx, keepers := CreateTestInput(t, false, AvailableCapabilities)
k := keepers.WasmKeeper
example1 := InstantiateHackatomExampleContract(t, ctx, keepers)
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)
example2 := InstantiateHackatomExampleContract(t, ctx, keepers)
ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1)
err := k.deactivateContract(ctx, example1.Contract)
require.NoError(t, err)
err = k.deactivateContract(ctx, example2.Contract)
require.NoError(t, err)
var inactiveContracts []sdk.AccAddress
k.IterateInactiveContracts(ctx, func(contractAddress sdk.AccAddress) (stop bool) {
inactiveContracts = append(inactiveContracts, contractAddress)
return false
})
assert.Equal(t, 2, len(inactiveContracts))
expectList := []sdk.AccAddress{example1.Contract, example2.Contract}
assert.ElementsMatch(t, expectList, inactiveContracts)
}