diff --git a/cli/command/service/generic_resource_opts_test.go b/cli/command/service/generic_resource_opts_test.go new file mode 100644 index 0000000000..99217e9f36 --- /dev/null +++ b/cli/command/service/generic_resource_opts_test.go @@ -0,0 +1,22 @@ +package service + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestValidateSingleGenericResource(t *testing.T) { + incorrect := []string{"foo", "fooo-bar"} + correct := []string{"foo=bar", "bar=1", "foo=barbar"} + + for _, v := range incorrect { + _, err := ValidateSingleGenericResource(v) + assert.Error(t, err) + } + + for _, v := range correct { + _, err := ValidateSingleGenericResource(v) + assert.NoError(t, err) + } +} diff --git a/cli/command/service/opts_test.go b/cli/command/service/opts_test.go index 6bf00ef6bb..e373c6479d 100644 --- a/cli/command/service/opts_test.go +++ b/cli/command/service/opts_test.go @@ -85,3 +85,41 @@ func TestHealthCheckOptionsToHealthConfigConflict(t *testing.T) { _, err := opt.toHealthConfig() assert.EqualError(t, err, "--no-healthcheck conflicts with --health-* options") } + +func TestResourceOptionsToResourceRequirements(t *testing.T) { + incorrectOptions := []resourceOptions{ + { + resGenericResources: []string{"foo=bar", "foo=1"}, + }, + { + resGenericResources: []string{"foo=bar", "foo=baz"}, + }, + { + resGenericResources: []string{"foo=bar"}, + }, + { + resGenericResources: []string{"foo=1", "foo=2"}, + }, + } + + for _, opt := range incorrectOptions { + _, err := opt.ToResourceRequirements() + assert.Error(t, err) + } + + correctOptions := []resourceOptions{ + { + resGenericResources: []string{"foo=1"}, + }, + { + resGenericResources: []string{"foo=1", "bar=2"}, + }, + } + + for _, opt := range correctOptions { + r, err := opt.ToResourceRequirements() + assert.NoError(t, err) + assert.Len(t, r.Reservations.GenericResources, len(opt.resGenericResources)) + } + +}