Skip to content

Commit 2744541

Browse files
authored
Merge pull request #12 from combor/claude/analyze-test-coverage-sIs3M
Add new unit tests
2 parents c3e5ce6 + 54d8083 commit 2744541

1 file changed

Lines changed: 105 additions & 0 deletions

File tree

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package provider
2+
3+
import (
4+
"encoding/json"
5+
"testing"
6+
7+
gitpod "github.com/gitpod-io/gitpod-sdk-go"
8+
"github.com/hashicorp/terraform-plugin-framework/types"
9+
"github.com/stretchr/testify/assert"
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func TestMapRunnerToDataSourceModel_MapsAllFields(t *testing.T) {
14+
var cfg gitpod.RunnerConfiguration
15+
require.NoError(t, json.Unmarshal([]byte(`{"autoUpdate":true,"devcontainerImageCacheEnabled":true,"region":"us-east-1","releaseChannel":"RUNNER_RELEASE_CHANNEL_STABLE","logLevel":"LOG_LEVEL_INFO","metrics":{"enabled":true,"managedMetricsEnabled":true,"url":"https://metrics.example","username":"metrics-user"},"updateWindow":{"startHour":8,"endHour":12}}`), &cfg))
16+
17+
runner := gitpod.Runner{
18+
RunnerID: "runner-123",
19+
Name: "Test Runner",
20+
Provider: gitpod.RunnerProviderAwsEc2,
21+
RunnerManagerID: "mgr-456",
22+
Spec: gitpod.RunnerSpec{
23+
DesiredPhase: gitpod.RunnerPhaseActive,
24+
Variant: gitpod.RunnerVariantStandard,
25+
Configuration: cfg,
26+
},
27+
Status: gitpod.RunnerStatus{
28+
Phase: gitpod.RunnerPhaseDegraded,
29+
Message: "degraded",
30+
Version: "1.2.3",
31+
Region: "eu-central-1",
32+
},
33+
}
34+
35+
got := mapRunnerToDataSourceModel(runner)
36+
37+
assert.Equal(t, "runner-123", got.ID.ValueString())
38+
assert.Equal(t, "Test Runner", got.Name.ValueString())
39+
assert.Equal(t, string(gitpod.RunnerProviderAwsEc2), got.ProviderType.ValueString())
40+
assert.Equal(t, "mgr-456", got.RunnerManagerID.ValueString())
41+
42+
require.NotNil(t, got.Spec)
43+
assert.Equal(t, string(gitpod.RunnerPhaseActive), got.Spec.DesiredPhase.ValueString())
44+
assert.Equal(t, string(gitpod.RunnerVariantStandard), got.Spec.Variant.ValueString())
45+
46+
require.NotNil(t, got.Spec.Configuration)
47+
assert.True(t, got.Spec.Configuration.AutoUpdate.ValueBool())
48+
assert.True(t, got.Spec.Configuration.DevcontainerImageCacheEnabled.ValueBool())
49+
assert.Equal(t, "us-east-1", got.Spec.Configuration.Region.ValueString())
50+
assert.Equal(t, string(gitpod.RunnerReleaseChannelStable), got.Spec.Configuration.ReleaseChannel.ValueString())
51+
assert.Equal(t, string(gitpod.LogLevelInfo), got.Spec.Configuration.LogLevel.ValueString())
52+
53+
require.NotNil(t, got.Spec.Configuration.Metrics)
54+
assert.True(t, got.Spec.Configuration.Metrics.Enabled.ValueBool())
55+
assert.True(t, got.Spec.Configuration.Metrics.ManagedMetricsEnabled.ValueBool())
56+
assert.Equal(t, "https://metrics.example", got.Spec.Configuration.Metrics.URL.ValueString())
57+
assert.Equal(t, "metrics-user", got.Spec.Configuration.Metrics.Username.ValueString())
58+
59+
require.NotNil(t, got.Spec.Configuration.UpdateWindow)
60+
assert.Equal(t, int64(8), got.Spec.Configuration.UpdateWindow.StartHour.ValueInt64())
61+
assert.Equal(t, int64(12), got.Spec.Configuration.UpdateWindow.EndHour.ValueInt64())
62+
63+
statusAttrs := got.Status.Attributes()
64+
phase, ok := statusAttrs["phase"].(types.String)
65+
require.True(t, ok)
66+
assert.Equal(t, string(gitpod.RunnerPhaseDegraded), phase.ValueString())
67+
message, ok := statusAttrs["message"].(types.String)
68+
require.True(t, ok)
69+
assert.Equal(t, "degraded", message.ValueString())
70+
version, ok := statusAttrs["version"].(types.String)
71+
require.True(t, ok)
72+
assert.Equal(t, "1.2.3", version.ValueString())
73+
region, ok := statusAttrs["region"].(types.String)
74+
require.True(t, ok)
75+
assert.Equal(t, "eu-central-1", region.ValueString())
76+
}
77+
78+
func TestMapRunnerToDataSourceModel_NullOptionalFields(t *testing.T) {
79+
runner := gitpod.Runner{
80+
RunnerID: "runner-456",
81+
Name: "Minimal Runner",
82+
Provider: gitpod.RunnerProviderLinuxHost,
83+
Spec: gitpod.RunnerSpec{
84+
Configuration: gitpod.RunnerConfiguration{},
85+
},
86+
}
87+
88+
got := mapRunnerToDataSourceModel(runner)
89+
90+
assert.True(t, got.RunnerManagerID.IsNull())
91+
92+
require.NotNil(t, got.Spec)
93+
assert.True(t, got.Spec.DesiredPhase.IsNull())
94+
assert.True(t, got.Spec.Variant.IsNull())
95+
96+
require.NotNil(t, got.Spec.Configuration)
97+
assert.True(t, got.Spec.Configuration.Region.IsNull())
98+
assert.True(t, got.Spec.Configuration.ReleaseChannel.IsNull())
99+
assert.True(t, got.Spec.Configuration.LogLevel.IsNull())
100+
assert.Nil(t, got.Spec.Configuration.UpdateWindow)
101+
102+
require.NotNil(t, got.Spec.Configuration.Metrics)
103+
assert.True(t, got.Spec.Configuration.Metrics.URL.IsNull())
104+
assert.True(t, got.Spec.Configuration.Metrics.Username.IsNull())
105+
}

0 commit comments

Comments
 (0)