@@ -7,9 +7,11 @@ import (
77 "github.com/google/go-cmp/cmp"
88 "github.com/google/go-cmp/cmp/cmpopts"
99 "github.com/google/uuid"
10+ "github.com/spf13/cobra"
1011 "github.com/stackitcloud/stackit-cli/internal/cmd/params"
1112 "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
1213 "github.com/stackitcloud/stackit-cli/internal/pkg/print"
14+ "github.com/stackitcloud/stackit-cli/internal/pkg/testutils"
1315 "github.com/stackitcloud/stackit-cli/internal/pkg/utils"
1416 "github.com/stackitcloud/stackit-sdk-go/services/intake"
1517)
@@ -101,6 +103,7 @@ func fixtureRequest(mods ...func(request *intake.ApiCreateIntakeRunnerRequest))
101103func TestParseInput (t * testing.T ) {
102104 tests := []struct {
103105 description string
106+ argValues []string
104107 flagValues map [string ]string
105108 isValid bool
106109 expectedModel * inputModel
@@ -170,46 +173,10 @@ func TestParseInput(t *testing.T) {
170173
171174 for _ , tt := range tests {
172175 t .Run (tt .description , func (t * testing.T ) {
173- p := print .NewPrinter ()
174- cmd := NewCreateCmd (& params.CmdParams {Printer : p })
175- err := globalflags .Configure (cmd .Flags ())
176- if err != nil {
177- t .Fatalf ("configure global flags: %v" , err )
178- }
179-
180- for flag , value := range tt .flagValues {
181- err := cmd .Flags ().Set (flag , value )
182- if err != nil {
183- if ! tt .isValid {
184- return
185- }
186- t .Fatalf ("setting flag --%s=%s: %v" , flag , value , err )
187- }
188- }
189-
190- err = cmd .ValidateRequiredFlags ()
191- if err != nil {
192- if ! tt .isValid {
193- return
194- }
195- t .Fatalf ("error validating flags: %v" , err )
196- }
197-
198- model , err := parseInput (p , cmd )
199- if err != nil {
200- if ! tt .isValid {
201- return
202- }
203- t .Fatalf ("error parsing flags: %v" , err )
204- }
205-
206- if ! tt .isValid {
207- t .Fatalf ("did not fail on invalid input" )
208- }
209- diff := cmp .Diff (model , tt .expectedModel )
210- if diff != "" {
211- t .Fatalf ("Data does not match: %s" , diff )
176+ parseInputWrapper := func (p * print.Printer , cmd * cobra.Command , arg []string ) (* inputModel , error ) {
177+ return parseInput (p , cmd )
212178 }
179+ testutils .TestParseInput (t , NewCreateCmd , parseInputWrapper , tt .expectedModel , tt .argValues , tt .flagValues , tt .isValid )
213180 })
214181 }
215182}
0 commit comments