Skip to content

Commit bf306ca

Browse files
committed
add unit test for major minor func
1 parent 24acb78 commit bf306ca

File tree

2 files changed

+54
-5
lines changed

2 files changed

+54
-5
lines changed

internal/services/k8s/k8s_version_data_source.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import (
44
"context"
55
"errors"
66
"fmt"
7+
"strings"
78

89
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1011
"github.com/scaleway/scaleway-sdk-go/api/k8s/v1"
1112
"github.com/scaleway/scaleway-sdk-go/scw"
1213
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
13-
"golang.org/x/mod/semver"
1414
)
1515

1616
func DataSourceVersion() *schema.Resource {
@@ -94,13 +94,27 @@ func DataSourceK8SVersionRead(ctx context.Context, d *schema.ResourceData, m any
9494
version = res
9595
}
9696

97+
majorMinor, err := VersionNameWithoutPatch(version.Name)
98+
if err != nil {
99+
return diag.FromErr(err)
100+
}
101+
97102
d.SetId(fmt.Sprintf("%s/%s", region, version.Name))
98103
_ = d.Set("name", version.Name)
99-
_ = d.Set("major_minor_only", semver.MajorMinor(version.Name))
104+
_ = d.Set("major_minor_only", majorMinor)
100105
_ = d.Set("available_cnis", version.AvailableCnis)
101106
_ = d.Set("available_container_runtimes", version.AvailableContainerRuntimes)
102107
_ = d.Set("available_feature_gates", version.AvailableFeatureGates)
103108
_ = d.Set("region", region)
104109

105110
return nil
106111
}
112+
113+
func VersionNameWithoutPatch(version string) (string, error) {
114+
versionSplit := strings.Split(version, ".")
115+
if len(versionSplit) != 3 {
116+
return "", fmt.Errorf("version name must contain 3 parts, got %q", version)
117+
}
118+
119+
return strings.Join(versionSplit[:2], "."), nil
120+
}

internal/services/k8s/k8s_version_data_source_test.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@ import (
66

77
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
88
"github.com/hashicorp/terraform-plugin-testing/terraform"
9-
"github.com/scaleway/scaleway-sdk-go/api/k8s/v1"
9+
k8sSDK "github.com/scaleway/scaleway-sdk-go/api/k8s/v1"
1010
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
1111
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
12+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/k8s"
13+
"github.com/stretchr/testify/assert"
14+
"github.com/stretchr/testify/require"
1215
"golang.org/x/mod/semver"
1316
)
1417

@@ -125,9 +128,9 @@ func testAccCheckK8SVersionExists(tt *acctest.TestTools, n string) resource.Test
125128
return err
126129
}
127130

128-
k8sAPI := k8s.NewAPI(tt.Meta.ScwClient())
131+
k8sAPI := k8sSDK.NewAPI(tt.Meta.ScwClient())
129132

130-
_, err = k8sAPI.GetVersion(&k8s.GetVersionRequest{
133+
_, err = k8sAPI.GetVersion(&k8sSDK.GetVersionRequest{
131134
Region: region,
132135
VersionName: name,
133136
})
@@ -138,3 +141,35 @@ func testAccCheckK8SVersionExists(tt *acctest.TestTools, n string) resource.Test
138141
return nil
139142
}
140143
}
144+
145+
func TestVersionNameWithoutPatch(t *testing.T) {
146+
tt := acctest.NewTestTools(t)
147+
defer tt.Cleanup()
148+
149+
t.Run("ok-without-prefix", func(t *testing.T) {
150+
version := "1.32.3"
151+
expected := "1.32"
152+
actual, err := k8s.VersionNameWithoutPatch(version)
153+
require.NoError(t, err)
154+
assert.Equal(t, expected, actual)
155+
})
156+
t.Run("ok-with-prefix", func(t *testing.T) {
157+
version := "v2.57.9"
158+
expected := "v2.57"
159+
actual, err := k8s.VersionNameWithoutPatch(version)
160+
require.NoError(t, err)
161+
assert.Equal(t, expected, actual)
162+
})
163+
t.Run("errors", func(t *testing.T) {
164+
versionsToTest := []string{
165+
"1.32.3.4",
166+
"1.32",
167+
"",
168+
}
169+
for _, version := range versionsToTest {
170+
expectedError := "version name must contain 3 parts"
171+
_, err := k8s.VersionNameWithoutPatch(version)
172+
assert.ErrorContains(t, err, expectedError)
173+
}
174+
})
175+
}

0 commit comments

Comments
 (0)