Skip to content

Commit

Permalink
chore: add controller tests and fetcher stubs
Browse files Browse the repository at this point in the history
  • Loading branch information
freak12techno committed Jan 7, 2025
1 parent 64be568 commit 5666a07
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 48 deletions.
2 changes: 2 additions & 0 deletions pkg/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ const (
FetcherNameNodeInfo FetcherName = "node_info"
FetcherNameInflation FetcherName = "inflation"
FetcherNameSupply FetcherName = "supply"
FetcherNameStub1 FetcherName = "stub1"
FetcherNameStub2 FetcherName = "stub2"

MetricsPrefix string = "cosmos_validators_exporter_"

Expand Down
54 changes: 6 additions & 48 deletions pkg/controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,65 +2,23 @@ package controller

import (
"context"
"main/assets"
configPkg "main/pkg/config"
fetchersPkg "main/pkg/fetchers"
loggerPkg "main/pkg/logger"
"main/pkg/tendermint"
"main/pkg/tracing"
"testing"

"github.com/jarcoal/httpmock"
"github.com/stretchr/testify/assert"
)

//nolint:paralleltest // disabled due to httpmock usage
func TestControllerFetcherEnabled(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
t.Parallel()

httpmock.RegisterResponder(
"GET",
"https://api.cosmos.quokkastake.io/cosmos/base/tendermint/v1beta1/node_info",
httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("node-info.json")),
)

httpmock.RegisterResponder(
"GET",
"https://api.cosmos.quokkastake.io/cosmos/distribution/v1beta1/delegators/cosmos1xqz9pemz5e5zycaa89kys5aw6m8rhgsvtp9lt2/rewards/cosmosvaloper1xqz9pemz5e5zycaa89kys5aw6m8rhgsvw4328e",
httpmock.NewBytesResponder(200, assets.GetBytesOrPanic("rewards.json")),
)

chains := []*configPkg.Chain{{
Name: "chain",
LCDEndpoint: "https://api.cosmos.quokkastake.io",
BechWalletPrefix: "cosmos",
Validators: []configPkg.Validator{{Address: "cosmosvaloper1xqz9pemz5e5zycaa89kys5aw6m8rhgsvw4328e"}},
}}
rpcs := map[string]*tendermint.RPCWithConsumers{
"chain": tendermint.RPCWithConsumersFromChain(
chains[0],
10,
*loggerPkg.GetNopLogger(),
tracing.InitNoopTracer(),
),
}
fetcher1 := fetchersPkg.NewNodeInfoFetcher(
loggerPkg.GetNopLogger(),
chains,
rpcs,
tracing.InitNoopTracer(),
)
fetcher2 := fetchersPkg.NewRewardsFetcher(
loggerPkg.GetNopLogger(),
chains,
rpcs,
tracing.InitNoopTracer(),
)
logger := loggerPkg.GetNopLogger()
controller := NewController(fetchersPkg.Fetchers{fetcher1, fetcher2}, logger)
controller := NewController(fetchersPkg.Fetchers{
&fetchersPkg.StubFetcher1{},
&fetchersPkg.StubFetcher2{},
}, logger)

data, queryInfos := controller.Fetch(context.Background())
assert.Len(t, queryInfos, 2)
assert.Empty(t, queryInfos)
assert.Len(t, data, 2)
}
41 changes: 41 additions & 0 deletions pkg/fetchers/stub.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package fetchers

import (
"context"
"main/pkg/constants"
"main/pkg/types"
)

type StubFetcher1 struct{}

func (f *StubFetcher1) Name() constants.FetcherName {
return constants.FetcherNameStub1
}

func (f *StubFetcher1) Dependencies() []constants.FetcherName {
return []constants.FetcherName{}
}

func (f *StubFetcher1) Fetch(
ctx context.Context,
data ...interface{},
) (interface{}, []*types.QueryInfo) {
return nil, []*types.QueryInfo{}
}

type StubFetcher2 struct{}

func (f *StubFetcher2) Name() constants.FetcherName {
return constants.FetcherNameStub2
}

func (f *StubFetcher2) Dependencies() []constants.FetcherName {
return []constants.FetcherName{constants.FetcherNameStub1}
}

func (f *StubFetcher2) Fetch(
ctx context.Context,
data ...interface{},
) (interface{}, []*types.QueryInfo) {
return nil, []*types.QueryInfo{}
}

0 comments on commit 5666a07

Please sign in to comment.