Skip to content

Commit

Permalink
chore: add data fetcher tests
Browse files Browse the repository at this point in the history
  • Loading branch information
freak12techno committed Jul 13, 2024
1 parent f114f7f commit 5ff5eab
Show file tree
Hide file tree
Showing 13 changed files with 608 additions and 103 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ lint:
golangci-lint run --fix ./...

test:
go test -coverpkg=./... -coverprofile cover.out ./...

test-verbose:
go test -coverpkg=./... -coverprofile cover.out -v ./...


coverage:
go tool cover -html=cover.out
10 changes: 10 additions & 0 deletions assets/commission.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"commission": {
"commission": [
{
"denom": "uatom",
"amount": "12345"
}
]
}
}
104 changes: 104 additions & 0 deletions assets/cosmos-directory.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{
"repository": {
"url": "https://github.com/cosmos/chain-registry",
"branch": "master",
"commit": "c6cfe11be261b20ce5881ea9ba38d855130c22a5",
"timestamp": 1720810736
},
"chains": [
{
"name": "8ball",
"path": "8ball",
"chain_name": "8ball",
"network_type": "mainnet",
"pretty_name": "8ball",
"chain_id": "eightball-1",
"status": "live",
"bech32_prefix": "8ball",
"slip44": 118,
"symbol": "EBL",
"display": "ebl",
"denom": "uebl",
"decimals": 6,
"image": "https://raw.githubusercontent.com/cosmos/chain-registry/master/8ball/images/8ball.svg",
"website": "https://8ball.info/",
"height": null,
"best_apis": {
"rest": [],
"rpc": []
},
"proxy_status": {
"rest": false,
"rpc": false
},
"versions": {
"application_version": "v1",
"cosmos_sdk_version": "0.46.7"
},
"cosmwasm_enabled": true,
"explorers": [
{
"url": "https://explorer.8ball.info/",
"tx_page": "https://explorer.8ball.info/8ball/tx/${txHash}"
},
{
"kind": "ping.pub",
"url": "https://ping.pub/8ball",
"tx_page": "https://ping.pub/8ball/tx/${txHash}"
},
{
"kind": "NodeStake Explorer",
"url": "https://explorer.nodestake.top/8ball/",
"tx_page": "https://explorer.nodestake.top/8ball/tx/${txHash}"
},
{
"kind": "TC Network",
"url": "https://explorer.tcnetwork.io/8ball",
"tx_page": "https://explorer.tcnetwork.io/8ball/transaction/${txHash}"
},
{
"kind": "TC Network",
"url": "https://explorer.co.id/8ball",
"tx_page": "https://explorer.co.id/8ball/tx/${txHash}"
},
{
"kind": "NODEXPLORER",
"url": "https://explorer.nodexcapital.com/8ball",
"tx_page": "https://explorer.nodexcapital.com/8ball/tx/${txHash}"
}
],
"assets": [
{
"name": "8ball",
"description": "The native staking token of 8ball.",
"symbol": "EBL",
"denom": "uebl",
"decimals": 6,
"base": {
"denom": "uebl",
"exponent": 0
},
"display": {
"denom": "ebl",
"exponent": 6
},
"denom_units": [
{
"denom": "uebl",
"exponent": 0
},
{
"denom": "ebl",
"exponent": 6
}
],
"logo_URIs": {
"png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/8ball/images/8ball.png",
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/8ball/images/8ball.svg"
},
"image": "https://raw.githubusercontent.com/cosmos/chain-registry/master/8ball/images/8ball.svg"
}
]
}
]
}
6 changes: 6 additions & 0 deletions assets/denom-trace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"denom_trace": {
"path": "transfer/channel-569",
"base_denom": "untrn"
}
}
100 changes: 26 additions & 74 deletions pkg/alias_manager/alias_manager_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package alias_manager_test

import (
"errors"
"main/assets"
"main/pkg/alias_manager"
configPkg "main/pkg/config"
configTypes "main/pkg/config/types"
Expand All @@ -13,70 +11,24 @@ import (
"github.com/stretchr/testify/require"
)

type MockFile struct {
FailWrite bool
FailClose bool
}

func (file *MockFile) Write(p []byte) (int, error) {
if file.FailWrite {
return 1, errors.New("not yet supported")
}

return len(p), nil
}

func (file *MockFile) Close() error {
if file.FailClose {
return errors.New("not yet supported")
}

return nil
}

type MockAliasesFS struct {
FailCreate bool
FailWrite bool
FailClose bool
}

func (filesystem *MockAliasesFS) ReadFile(name string) ([]byte, error) {
return assets.EmbedFS.ReadFile(name)
}

func (filesystem *MockAliasesFS) Create(path string) (fs.File, error) {
if filesystem.FailCreate {
return nil, errors.New("not yet supported")
}

return &MockFile{
FailWrite: filesystem.FailWrite,
FailClose: filesystem.FailClose,
}, nil
}

func (filesystem *MockAliasesFS) Write(p []byte) (int, error) {
return 0, errors.New("not yet supported")
}

func TestAliasManagerEnabled(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{
AliasesPath: "path",
}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
require.True(t, aliasManager.Enabled())
}

func TestAliasManagerLoadDisabled(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
aliasManager.Load()
require.Empty(t, aliasManager.Aliases)
Expand All @@ -85,9 +37,9 @@ func TestAliasManagerLoadDisabled(t *testing.T) {
func TestAliasManagerLoadFailed(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{AliasesPath: "nonexistent.toml"}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
aliasManager.Load()
require.Empty(t, aliasManager.Aliases)
Expand All @@ -96,9 +48,9 @@ func TestAliasManagerLoadFailed(t *testing.T) {
func TestAliasManagerLoadInvalidToml(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{AliasesPath: "invalid-toml.toml"}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
aliasManager.Load()
require.Empty(t, aliasManager.Aliases)
Expand All @@ -107,14 +59,14 @@ func TestAliasManagerLoadInvalidToml(t *testing.T) {
func TestAliasManagerLoadSuccess(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{
AliasesPath: "valid-aliases.toml",
Chains: configTypes.Chains{
{Name: "chain"},
},
}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
aliasManager.Load()
require.NotEmpty(t, aliasManager.Aliases)
Expand All @@ -124,9 +76,9 @@ func TestAliasManagerLoadSuccess(t *testing.T) {
func TestAliasManagerSaveDisabled(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
err := aliasManager.Save()
require.NoError(t, err)
Expand All @@ -135,9 +87,9 @@ func TestAliasManagerSaveDisabled(t *testing.T) {
func TestAliasManagerSaveErrorOpening(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{AliasesPath: "savefile.toml"}
filesystem := &MockAliasesFS{FailCreate: true}
filesystem := &fs.MockFs{FailCreate: true}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
err := aliasManager.Save()
require.Error(t, err)
Expand All @@ -146,49 +98,49 @@ func TestAliasManagerSaveErrorOpening(t *testing.T) {
func TestAliasManagerSaveErrorWriting(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{
AliasesPath: "savefile.toml",
Chains: configTypes.Chains{
{Name: "chain"},
},
}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
err := aliasManager.Set("subscription", "chain", "wallet", "alias")
require.NoError(t, err)

aliasManager.FS = &MockAliasesFS{FailWrite: true}
aliasManager.FS = &fs.MockFs{FailWrite: true}
err = aliasManager.Save()
require.Error(t, err)
}

func TestAliasManagerSaveErrorClosing(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{
AliasesPath: "savefile.toml",
Chains: configTypes.Chains{
{Name: "chain"},
},
}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
err := aliasManager.Set("subscription", "chain", "wallet", "alias")
require.NoError(t, err)

aliasManager.FS = &MockAliasesFS{FailClose: true}
aliasManager.FS = &fs.MockFs{FailClose: true}
err = aliasManager.Save()
require.Error(t, err)
}

func TestAliasManagerSetDisabled(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
err := aliasManager.Set("subscription", "chain", "wallet", "alias")
require.NoError(t, err)
Expand All @@ -203,27 +155,27 @@ func TestAliasManagerSetNoChain(t *testing.T) {
}
}()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{
AliasesPath: "savefile.toml",
Chains: configTypes.Chains{},
}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
_ = aliasManager.Set("subscription", "chain", "wallet", "alias")
}

func TestAliasManagerGetLinks(t *testing.T) {
t.Parallel()

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
config := &configPkg.AppConfig{
AliasesPath: "savefile.toml",
Chains: configTypes.Chains{
{Name: "chain"},
},
}
filesystem := &MockAliasesFS{}
filesystem := &fs.MockFs{}
aliasManager := alias_manager.NewAliasManager(logger, config, filesystem)
err := aliasManager.Set("subscription", "chain", "wallet", "alias")
require.NoError(t, err)
Expand Down
4 changes: 2 additions & 2 deletions pkg/alias_manager/toml_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func TestToAliasesValid(t *testing.T) {
},
}

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
chains := configTypes.Chains{
{Name: "chain"},
}
Expand All @@ -47,7 +47,7 @@ func TestToAliasesNoChain(t *testing.T) {
},
}

logger := loggerPkg.GetDefaultLogger()
logger := loggerPkg.GetNopLogger()
chains := configTypes.Chains{}

defer func() {
Expand Down
Loading

0 comments on commit 5ff5eab

Please sign in to comment.