cosmos-sdk/core/testing/environment.go
Alex | Interchain Labs b4e88cc517
test: v2 services helpers and demo using x/bank (#23057)
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
2025-01-14 00:45:41 +00:00

66 lines
1.7 KiB
Go

package coretesting
import (
"context"
appmodulev2 "cosmossdk.io/core/appmodule/v2"
corecontext "cosmossdk.io/core/context"
corelog "cosmossdk.io/core/log"
"cosmossdk.io/core/router"
"cosmossdk.io/core/store"
)
type TestEnvironmentConfig struct {
ModuleName string
Logger corelog.Logger
MsgRouter router.Service
QueryRouter router.Service
}
type TestEnvironment struct {
appmodulev2.Environment
testEventService TestEventService
testHeaderService TestHeaderService
}
func NewTestEnvironment(cfg TestEnvironmentConfig) (TestContext, TestEnvironment) {
ctx := Context()
testEventService := NewTestEventService(ctx, cfg.ModuleName)
testHeaderService := TestHeaderService{}
env := TestEnvironment{
Environment: appmodulev2.Environment{
Logger: cfg.Logger,
BranchService: nil,
EventService: testEventService,
GasService: TestGasService{},
HeaderService: testHeaderService,
QueryRouterService: cfg.QueryRouter,
MsgRouterService: cfg.MsgRouter,
TransactionService: TestTransactionService{},
KVStoreService: KVStoreService(ctx, cfg.ModuleName),
MemStoreService: nil,
},
testEventService: testEventService,
testHeaderService: testHeaderService,
}
// set internal context to point to environment
ctx.Context = context.WithValue(ctx.Context, corecontext.EnvironmentContextKey, env.Environment)
return ctx, env
}
func (env TestEnvironment) EventService() TestEventService {
return env.testEventService
}
func (env TestEnvironment) KVStoreService() store.KVStoreService {
return env.Environment.KVStoreService
}
func (env TestEnvironment) HeaderService() TestHeaderService {
return env.testHeaderService
}