feat: runtime manager
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
package engineimage_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"galaxy/lobby/internal/domain/engineimage"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewResolverAcceptsValidTemplate(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
resolver, err := engineimage.NewResolver("galaxy/game:{engine_version}")
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, resolver)
|
||||
assert.Equal(t, "galaxy/game:{engine_version}", resolver.Template())
|
||||
}
|
||||
|
||||
func TestNewResolverRejectsEmptyTemplate(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
cases := []string{"", " "}
|
||||
for _, candidate := range cases {
|
||||
_, err := engineimage.NewResolver(candidate)
|
||||
require.Error(t, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewResolverRejectsTemplateWithoutPlaceholder(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
_, err := engineimage.NewResolver("galaxy/game:1.0.0")
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestResolveSubstitutesVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
resolver, err := engineimage.NewResolver("registry.example.com/galaxy/game:{engine_version}")
|
||||
require.NoError(t, err)
|
||||
|
||||
got, err := resolver.Resolve("v1.4.7")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "registry.example.com/galaxy/game:v1.4.7", got)
|
||||
}
|
||||
|
||||
func TestResolveSubstitutesEveryPlaceholderOccurrence(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
resolver, err := engineimage.NewResolver(
|
||||
"registry.example.com/{engine_version}/game:{engine_version}",
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
got, err := resolver.Resolve("v2.0.1")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "registry.example.com/v2.0.1/game:v2.0.1", got)
|
||||
}
|
||||
|
||||
func TestResolveRejectsEmptyVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
resolver, err := engineimage.NewResolver("galaxy/game:{engine_version}")
|
||||
require.NoError(t, err)
|
||||
|
||||
cases := []string{"", " "}
|
||||
for _, candidate := range cases {
|
||||
_, err := resolver.Resolve(candidate)
|
||||
require.Error(t, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveReusesValidatedTemplate(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
resolver, err := engineimage.NewResolver("galaxy/game:{engine_version}")
|
||||
require.NoError(t, err)
|
||||
|
||||
first, err := resolver.Resolve("v1.0.0")
|
||||
require.NoError(t, err)
|
||||
second, err := resolver.Resolve("v2.0.0")
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, "galaxy/game:v1.0.0", first)
|
||||
assert.Equal(t, "galaxy/game:v2.0.0", second)
|
||||
}
|
||||
|
||||
func TestNilResolverResolveReturnsError(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
var resolver *engineimage.Resolver
|
||||
_, err := resolver.Resolve("v1.0.0")
|
||||
require.Error(t, err)
|
||||
}
|
||||
Reference in New Issue
Block a user