Skip to content

Commit 24bacf8

Browse files
authored
Action Test Reusing Store (#1700)
1 parent 1ce6ad8 commit 24bacf8

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

examples/morpheusvm/actions/transfer_test.go

+58
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,64 @@ func TestTransferAction(t *testing.T) {
130130
}
131131
}
132132

133+
// TestMultiTransfer shows an example of reusing the same store for multiple sequential action invocations.
134+
func TestMultiTransfer(t *testing.T) {
135+
addrAlice := codectest.NewRandomAddress()
136+
addrBob := codectest.NewRandomAddress()
137+
138+
store := chaintest.NewInMemoryStore()
139+
require.NoError(t, storage.SetBalance(context.Background(), store, addrAlice, 1))
140+
141+
tests := []chaintest.ActionTest{
142+
{
143+
Name: "TransferToBob",
144+
Actor: addrAlice,
145+
Action: &Transfer{
146+
To: addrBob,
147+
Value: 1,
148+
},
149+
State: store,
150+
Assertion: func(ctx context.Context, t *testing.T, store state.Mutable) {
151+
receiverBalance, err := storage.GetBalance(ctx, store, addrBob)
152+
require.NoError(t, err)
153+
require.Equal(t, receiverBalance, uint64(1))
154+
senderBalance, err := storage.GetBalance(ctx, store, addrAlice)
155+
require.NoError(t, err)
156+
require.Equal(t, senderBalance, uint64(0))
157+
},
158+
ExpectedOutputs: &TransferResult{
159+
SenderBalance: 0,
160+
ReceiverBalance: 1,
161+
},
162+
},
163+
{
164+
Name: "TransferToAlice",
165+
Actor: addrBob,
166+
Action: &Transfer{
167+
To: addrAlice,
168+
Value: 1,
169+
},
170+
State: store,
171+
Assertion: func(ctx context.Context, t *testing.T, store state.Mutable) {
172+
receiverBalance, err := storage.GetBalance(ctx, store, addrAlice)
173+
require.NoError(t, err)
174+
require.Equal(t, receiverBalance, uint64(1))
175+
senderBalance, err := storage.GetBalance(ctx, store, addrBob)
176+
require.NoError(t, err)
177+
require.Equal(t, senderBalance, uint64(0))
178+
},
179+
ExpectedOutputs: &TransferResult{
180+
SenderBalance: 0,
181+
ReceiverBalance: 1,
182+
},
183+
},
184+
}
185+
186+
for _, tt := range tests {
187+
tt.Run(context.Background(), t)
188+
}
189+
}
190+
133191
func BenchmarkSimpleTransfer(b *testing.B) {
134192
setupRequire := require.New(b)
135193
to := codec.CreateAddress(0, ids.GenerateTestID())

0 commit comments

Comments
 (0)