package sqlserverflexalphaFlavor import ( "context" "testing" "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/v3alpha1api" ) var mockResp = func(page int64) (*v3alpha1api.GetFlavorsResponse, error) { if page == 1 { return &v3alpha1api.GetFlavorsResponse{ Flavors: []v3alpha1api.ListFlavors{ {Id: "flavor-1", Description: "first"}, {Id: "flavor-2", Description: "second"}, }, }, nil } if page == 2 { return &v3alpha1api.GetFlavorsResponse{ Flavors: []v3alpha1api.ListFlavors{ {Id: "flavor-3", Description: "three"}, }, }, nil } return &v3alpha1api.GetFlavorsResponse{ Flavors: []v3alpha1api.ListFlavors{}, }, nil } func TestGetFlavorsByFilter(t *testing.T) { tests := []struct { description string projectID string region string mockErr error filter func(v3alpha1api.ListFlavors) bool wantCount int wantErr bool }{ { description: "Success - Get all flavors (2 pages)", projectID: "pid", region: "reg", filter: func(_ v3alpha1api.ListFlavors) bool { return true }, wantCount: 3, wantErr: false, }, { description: "Success - Filter flavors by description", projectID: "pid", region: "reg", filter: func(f v3alpha1api.ListFlavors) bool { return f.Description == "first" }, wantCount: 1, wantErr: false, }, { description: "Error - Missing parameters", projectID: "", region: "reg", wantErr: true, }, } for _, tt := range tests { t.Run( tt.description, func(t *testing.T) { var currentPage int64 getFlavorsMock := func(_ v3alpha1api.ApiGetFlavorsRequestRequest) (*v3alpha1api.GetFlavorsResponse, error) { currentPage++ return mockResp(currentPage) } client := v3alpha1api.DefaultAPIServiceMock{ GetFlavorsRequestExecuteMock: &getFlavorsMock, } actual, err := getFlavorsByFilter(context.Background(), client, tt.projectID, tt.region, tt.filter) if (err != nil) != tt.wantErr { t.Errorf("getFlavorsByFilter() error = %v, wantErr %v", err, tt.wantErr) return } if !tt.wantErr && len(actual) != tt.wantCount { t.Errorf("getFlavorsByFilter() got %d flavors, want %d", len(actual), tt.wantCount) } }, ) } } func TestGetAllFlavors(t *testing.T) { var currentPage int64 getFlavorsMock := func(_ v3alpha1api.ApiGetFlavorsRequestRequest) (*v3alpha1api.GetFlavorsResponse, error) { currentPage++ return mockResp(currentPage) } client := v3alpha1api.DefaultAPIServiceMock{ GetFlavorsRequestExecuteMock: &getFlavorsMock, } res, err := getAllFlavors(context.Background(), client, "pid", "reg") if err != nil { t.Errorf("getAllFlavors() unexpected error: %v", err) } if len(res) != 3 { t.Errorf("getAllFlavors() expected 3 flavor, got %d", len(res)) } }