mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-27 23:16:51 +00:00
Config: Refactor version packages (#1887)
* Config: Move config versions to separate pacakges * Config: Move version tests to blackbox texts * Config: Protect registerVersion from overflow * Config: Protect against version already registered
This commit is contained in:
@@ -2,12 +2,17 @@ package versions
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"math"
|
||||
"testing"
|
||||
|
||||
"github.com/buger/jsonparser"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/thrasher-corp/gocryptotrader/common"
|
||||
v0 "github.com/thrasher-corp/gocryptotrader/config/versions/v0"
|
||||
v1 "github.com/thrasher-corp/gocryptotrader/config/versions/v1"
|
||||
v2 "github.com/thrasher-corp/gocryptotrader/config/versions/v2"
|
||||
)
|
||||
|
||||
func TestDeploy(t *testing.T) {
|
||||
@@ -22,8 +27,8 @@ func TestDeploy(t *testing.T) {
|
||||
|
||||
m = manager{}
|
||||
|
||||
m.registerVersion(0, &Version0{})
|
||||
m.registerVersion(1, &Version1{})
|
||||
m.registerVersion(0, &v0.Version{})
|
||||
m.registerVersion(1, &v1.Version{})
|
||||
_, err = m.Deploy(context.Background(), []byte(`not an object`), UseLatestVersion)
|
||||
require.ErrorIs(t, err, jsonparser.KeyPathNotFoundError, "Must throw the correct error trying to add version to bad json")
|
||||
require.ErrorIs(t, err, common.ErrSettingField, "Must throw the correct error trying to add version to bad json")
|
||||
@@ -95,7 +100,7 @@ func TestRegisterVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
m := manager{}
|
||||
|
||||
m.registerVersion(0, &Version0{})
|
||||
m.registerVersion(0, &v0.Version{})
|
||||
assert.NotEmpty(t, m.versions)
|
||||
|
||||
m.registerVersion(2, &TestVersion2{})
|
||||
@@ -106,6 +111,10 @@ func TestRegisterVersion(t *testing.T) {
|
||||
m.registerVersion(1, &TestVersion1{})
|
||||
require.Equal(t, 3, len(m.versions), "Must leave len alone when registering out-of-sequence")
|
||||
require.NotNil(t, m.versions[1], "Must put Version 1 in the correct slot")
|
||||
|
||||
assert.PanicsWithError(t, fmt.Sprintf("%s: %d", errAlreadyRegistered, 2), func() {
|
||||
m.registerVersion(2, &TestVersion2{})
|
||||
}, "registeringVersion must panic registering an existing version")
|
||||
}
|
||||
|
||||
func TestLatest(t *testing.T) {
|
||||
@@ -114,14 +123,25 @@ func TestLatest(t *testing.T) {
|
||||
_, err := m.latest()
|
||||
require.ErrorIs(t, err, errNoVersions)
|
||||
|
||||
m.registerVersion(0, &Version0{})
|
||||
m.registerVersion(1, &Version1{})
|
||||
m.registerVersion(0, &v0.Version{})
|
||||
m.registerVersion(1, &v1.Version{})
|
||||
v, err := m.latest()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, uint16(1), v)
|
||||
|
||||
m.registerVersion(2, &Version2{})
|
||||
m.registerVersion(2, &v2.Version{})
|
||||
v, err = m.latest()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, uint16(2), v)
|
||||
}
|
||||
|
||||
func TestVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
m := manager{}
|
||||
m.registerVersion(0, &v0.Version{})
|
||||
l, err := m.latest()
|
||||
require.NoError(t, err, "latest must not error")
|
||||
assert.Nil(t, m.Version(l-1))
|
||||
assert.NotNil(t, m.Version(l))
|
||||
assert.Nil(t, m.Version(math.MaxUint16))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user