Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions cli/cmd/bulk_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ func setupBulkTestCmd(t *testing.T, apiURL string) *bytes.Buffer {
func sampleBulkResponse() types.BulkResponse {
return types.BulkResponse{
Results: []types.BulkOperationResult{
{ID: 1, Success: true},
{ID: 2, Success: true},
{ID: 3, Success: false, Error: "not found"},
{ID: "1", Success: true},
{ID: "2", Success: true},
{ID: "3", Success: false, Error: "not found"},
},
}
}
Expand All @@ -41,7 +41,7 @@ func TestBulkDeployCmd_TableOutput(t *testing.T) {

var body types.BulkRequest
require.NoError(t, json.NewDecoder(r.Body).Decode(&body))
assert.Equal(t, []uint{1, 2, 3}, body.IDs)
assert.Equal(t, []string{"1", "2", "3"}, body.IDs)

w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
Expand Down Expand Up @@ -318,7 +318,7 @@ func TestParseBulkIDs_Valid(t *testing.T) {

ids, err := parseBulkIDs(cmd, nil)
require.NoError(t, err)
assert.Equal(t, []uint{1, 2, 3}, ids)
assert.Equal(t, []string{"1", "2", "3"}, ids)
}

func TestParseBulkIDs_InvalidID(t *testing.T) {
Expand Down Expand Up @@ -402,7 +402,7 @@ func TestBulkDeployCmd_YAMLOutput(t *testing.T) {
require.NoError(t, err)

out := buf.String()
assert.Contains(t, out, "id: 1")
assert.Contains(t, out, "id: \"1\"")
assert.Contains(t, out, "success: true")
assert.Contains(t, out, "error: not found")
}
Expand Down Expand Up @@ -452,7 +452,7 @@ func TestBulkStopCmd_YAMLOutput(t *testing.T) {
require.NoError(t, err)

out := buf.String()
assert.Contains(t, out, "id: 1")
assert.Contains(t, out, "id: \"1\"")
assert.Contains(t, out, "success: true")
}

Expand Down Expand Up @@ -521,7 +521,7 @@ func TestBulkCleanCmd_YAMLOutput(t *testing.T) {
require.NoError(t, err)

out := buf.String()
assert.Contains(t, out, "id: 1")
assert.Contains(t, out, "id: \"1\"")
assert.Contains(t, out, "success: true")
}

Expand Down Expand Up @@ -550,7 +550,7 @@ func TestBulkDeleteCmd_YAMLOutput(t *testing.T) {
require.NoError(t, err)

out := buf.String()
assert.Contains(t, out, "id: 1")
assert.Contains(t, out, "id: \"1\"")
assert.Contains(t, out, "success: true")
}

Expand All @@ -573,7 +573,7 @@ func TestParseBulkIDs_WhitespaceHandling(t *testing.T) {

ids, err := parseBulkIDs(cmd, nil)
require.NoError(t, err)
assert.Equal(t, []uint{1, 2, 3}, ids)
assert.Equal(t, []string{"1", "2", "3"}, ids)
}

func TestParseBulkIDs_NegativeID(t *testing.T) {
Expand All @@ -594,7 +594,7 @@ func TestParseBulkIDs_PositionalArgs(t *testing.T) {

ids, err := parseBulkIDs(cmd, []string{"1", "2", "3"})
require.NoError(t, err)
assert.Equal(t, []uint{1, 2, 3}, ids)
assert.Equal(t, []string{"1", "2", "3"}, ids)
}

func TestParseBulkIDs_MixedFlagAndPositional(t *testing.T) {
Expand All @@ -604,7 +604,7 @@ func TestParseBulkIDs_MixedFlagAndPositional(t *testing.T) {

ids, err := parseBulkIDs(cmd, []string{"3"})
require.NoError(t, err)
assert.Equal(t, []uint{1, 2, 3}, ids)
assert.Equal(t, []string{"1", "2", "3"}, ids)
}

func TestParseBulkIDs_MixedDedup(t *testing.T) {
Expand All @@ -614,7 +614,7 @@ func TestParseBulkIDs_MixedDedup(t *testing.T) {

ids, err := parseBulkIDs(cmd, []string{"2", "3"})
require.NoError(t, err)
assert.Equal(t, []uint{1, 2, 3}, ids)
assert.Equal(t, []string{"1", "2", "3"}, ids)
}

func TestBulkDeployCmd_PositionalArgs(t *testing.T) {
Expand All @@ -624,7 +624,7 @@ func TestBulkDeployCmd_PositionalArgs(t *testing.T) {

var body types.BulkRequest
require.NoError(t, json.NewDecoder(r.Body).Decode(&body))
assert.Equal(t, []uint{1, 2, 3}, body.IDs)
assert.Equal(t, []string{"1", "2", "3"}, body.IDs)

w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
Expand All @@ -647,7 +647,7 @@ func TestBulkDeployCmd_MixedArgs(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var body types.BulkRequest
require.NoError(t, json.NewDecoder(r.Body).Decode(&body))
assert.Equal(t, []uint{1, 2, 3}, body.IDs)
assert.Equal(t, []string{"1", "2", "3"}, body.IDs)

w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
Expand Down
43 changes: 10 additions & 33 deletions cli/cmd/cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func setupClusterTestCmd(t *testing.T, apiURL string) *bytes.Buffer {
func sampleCluster() types.Cluster {
now := time.Date(2025, 6, 15, 10, 0, 0, 0, time.UTC)
return types.Cluster{
Base: types.Base{ID: 1, CreatedAt: now, UpdatedAt: now, Version: 1},
Base: types.Base{ID: "1", CreatedAt: now, UpdatedAt: now, Version: "1"},
Name: "dev-cluster",
Description: "Development cluster",
Status: "online",
Expand Down Expand Up @@ -51,9 +51,7 @@ func TestClusterListCmd_TableOutput(t *testing.T) {
require.Equal(t, http.MethodGet, r.Method)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(types.ListResponse[types.Cluster]{
Data: []types.Cluster{cl}, Total: 1, Page: 1, PageSize: 20, TotalPages: 1,
})
json.NewEncoder(w).Encode([]types.Cluster{cl})
}))
defer server.Close()

Expand All @@ -80,9 +78,7 @@ func TestClusterListCmd_JSONOutput(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(types.ListResponse[types.Cluster]{
Data: []types.Cluster{cl}, Total: 1, Page: 1, PageSize: 20, TotalPages: 1,
})
json.NewEncoder(w).Encode([]types.Cluster{cl})
}))
defer server.Close()

Expand All @@ -92,23 +88,21 @@ func TestClusterListCmd_JSONOutput(t *testing.T) {
err := clusterListCmd.RunE(clusterListCmd, []string{})
require.NoError(t, err)

var result types.ListResponse[types.Cluster]
var result []types.Cluster
require.NoError(t, json.Unmarshal(buf.Bytes(), &result))
assert.Equal(t, 1, result.Total)
assert.Equal(t, "dev-cluster", result.Data[0].Name)
assert.Len(t, result, 1)
assert.Equal(t, "dev-cluster", result[0].Name)
}

func TestClusterListCmd_QuietOutput(t *testing.T) {
c1 := sampleCluster()
c2 := sampleCluster()
c2.ID = 2
c2.ID = "2"
c2.Name = "prod-cluster"
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(types.ListResponse[types.Cluster]{
Data: []types.Cluster{c1, c2}, Total: 2, Page: 1, PageSize: 20, TotalPages: 1,
})
json.NewEncoder(w).Encode([]types.Cluster{c1, c2})
}))
defer server.Close()

Expand All @@ -126,9 +120,7 @@ func TestClusterListCmd_YAMLOutput(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(types.ListResponse[types.Cluster]{
Data: []types.Cluster{cl}, Total: 1, Page: 1, PageSize: 20, TotalPages: 1,
})
json.NewEncoder(w).Encode([]types.Cluster{cl})
}))
defer server.Close()

Expand All @@ -147,9 +139,7 @@ func TestClusterListCmd_EmptyResult(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(types.ListResponse[types.Cluster]{
Data: []types.Cluster{}, Total: 0, Page: 1, PageSize: 20, TotalPages: 0,
})
json.NewEncoder(w).Encode([]types.Cluster{})
}))
defer server.Close()

Expand Down Expand Up @@ -336,19 +326,6 @@ func TestClusterGetCmd_JSONOutput_HealthUnavailable(t *testing.T) {
assert.False(t, hasHealth, "health key should not be present when unavailable")
}

func TestClusterGetCmd_InvalidID(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
t.Fatal("API should not be called for invalid ID")
}))
defer server.Close()

_ = setupClusterTestCmd(t, server.URL)

err := clusterGetCmd.RunE(clusterGetCmd, []string{"abc"})
require.Error(t, err)
assert.Contains(t, err.Error(), "invalid ID")
}

func TestClusterGetCmd_NotFound(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
Expand Down
Loading
Loading