// RegisterAll registers all romulus commands with the // provided command registry. func RegisterAll(r commandRegister) { r.Register(agree.NewAgreeCommand()) r.Register(allocate.NewAllocateCommand()) r.Register(createbudget.NewCreateBudgetCommand()) r.Register(listbudgets.NewListBudgetsCommand()) r.Register(listplans.NewListPlansCommand()) r.Register(setbudget.NewSetBudgetCommand()) r.Register(setplan.NewSetPlanCommand()) r.Register(showbudget.NewShowBudgetCommand()) r.Register(updateallocation.NewUpdateAllocationCommand()) }
func (s *showBudgetSuite) TestShowBudgetCommand(c *gc.C) { tests := []struct { about string args []string err string budget string apierr string }{{ about: "missing argument", err: `missing arguments`, }, { about: "unknown arguments", args: []string{"my-special-budget", "extra", "arguments"}, err: `unrecognized args: \["extra" "arguments"\]`, }, { about: "api error", args: []string{"personal"}, apierr: "well, this is embarrassing", err: "failed to retrieve the budget: well, this is embarrassing", }, { about: "all ok", args: []string{"personal"}, budget: "personal", }, } for i, test := range tests { c.Logf("running test %d: %v", i, test.about) s.mockAPI.ResetCalls() if test.apierr != "" { s.mockAPI.SetErrors(errors.New(test.apierr)) } showBudget := showbudget.NewShowBudgetCommand() _, err := cmdtesting.RunCommand(c, showBudget, test.args...) if test.err == "" { c.Assert(err, jc.ErrorIsNil) s.stub.CheckCalls(c, []testing.StubCall{{"GetBudget", []interface{}{test.budget}}}) } else { c.Assert(err, gc.ErrorMatches, test.err) } } }
// RegisterAll registers all romulus commands with the // provided command registry. func RegisterAll(r commandRegister) { register := func(c cmd.Command) { switch c := c.(type) { case modelcmd.ModelCommand: r.Register(modelcmd.Wrap(c)) case modelcmd.CommandBase: r.Register(modelcmd.WrapBase(c)) default: r.Register(c) } } register(agree.NewAgreeCommand()) register(listagreements.NewListAgreementsCommand()) register(allocate.NewAllocateCommand()) register(listbudgets.NewListBudgetsCommand()) register(createbudget.NewCreateBudgetCommand()) register(listplans.NewListPlansCommand()) register(setbudget.NewSetBudgetCommand()) register(setplan.NewSetPlanCommand()) register(showbudget.NewShowBudgetCommand()) register(updateallocation.NewUpdateAllocationCommand()) }
func (s *showBudgetSuite) TestShowBudgetCommand(c *gc.C) { tests := []struct { about string args []string err string budget string apierr string resolveerr string output string }{{ about: "missing argument", err: `missing arguments`, }, { about: "unknown arguments", args: []string{"my-special-budget", "extra", "arguments"}, err: `unrecognized args: \["extra" "arguments"\]`, }, { about: "api error", args: []string{"personal"}, apierr: "well, this is embarrassing", err: "failed to retrieve the budget: well, this is embarrassing", }, { about: "all ok", args: []string{"personal"}, budget: "personal", output: "" + "MODEL \tSERVICES \tSPENT\tALLOCATED\tBY \tUSAGE\n" + "model.joe \tmysql \t 200\t 1200\tuser.joe \t 42%\n" + " \twordpress\t 300\t \t \n" + "model.jess \tlandscape\t 600\t 1000\tuser.jess\t 60%\n" + "uuid3 \tmysql \t 10\t 100\tuser.bob \t 10%\n" + " \t \t \t \t \n" + "TOTAL \t \t 1110\t 2300\t \t 48%\n" + "BUDGET \t \t \t 4000\t \n" + "UNALLOCATED\t \t \t 1700\t \n", }, { about: "all ok", args: []string{"personal"}, budget: "personal", resolveerr: "test error", output: "" + "MODEL \tSERVICES \tSPENT\tALLOCATED\tBY \tUSAGE\n" + "uuid1 \tmysql \t 200\t 1200\tuser.joe \t 42%\n" + " \twordpress\t 300\t \t \n" + "uuid2 \tlandscape\t 600\t 1000\tuser.jess\t 60%\n" + "uuid3 \tmysql \t 10\t 100\tuser.bob \t 10%\n" + " \t \t \t \t \n" + "TOTAL \t \t 1110\t 2300\t \t 48%\n" + "BUDGET \t \t \t 4000\t \n" + "UNALLOCATED\t \t \t 1700\t \n", }, } for i, test := range tests { c.Logf("running test %d: %v", i, test.about) s.mockAPI.ResetCalls() errs := []error{} if test.apierr != "" { errs = append(errs, errors.New(test.apierr)) } else { errs = append(errs, nil) } if test.resolveerr != "" { errs = append(errs, errors.New(test.resolveerr)) } else { errs = append(errs, nil) } s.mockAPI.SetErrors(errs...) showBudget := showbudget.NewShowBudgetCommand() ctx, err := cmdtesting.RunCommand(c, showBudget, test.args...) if test.err == "" { c.Assert(err, jc.ErrorIsNil) s.stub.CheckCalls(c, []testing.StubCall{ {"GetBudget", []interface{}{test.budget}}, {"ModelInfo", []interface{}{[]names.ModelTag{names.NewModelTag("uuid1"), names.NewModelTag("uuid2"), names.NewModelTag("uuid3")}}}, }) output := cmdtesting.Stdout(ctx) c.Assert(output, gc.Equals, test.output) } else { c.Assert(err, gc.ErrorMatches, test.err) } } }