func (s *RunActionSuite) TestPrepareErrorBadActionAndFailErrors(c *gc.C) { errBadAction := runner.NewBadActionError("some-action-id", "foof") runnerFactory := &MockRunnerFactory{ MockNewActionRunner: &MockNewActionRunner{err: errBadAction}, } callbacks := &RunActionCallbacks{ MockFailAction: &MockFailAction{}, } factory := operation.NewFactory(nil, runnerFactory, callbacks, nil, nil) op, err := factory.NewAction(someActionId) c.Assert(err, jc.ErrorIsNil) newState, err := op.Prepare(operation.State{}) c.Assert(newState, gc.IsNil) c.Assert(err, gc.Equals, operation.ErrSkipExecute) c.Assert(*runnerFactory.MockNewActionRunner.gotActionId, gc.Equals, someActionId) c.Assert(*callbacks.MockFailAction.gotActionId, gc.Equals, someActionId) c.Assert(*callbacks.MockFailAction.gotMessage, gc.Equals, errBadAction.Error()) }
func (s *RunActionSuite) TestPrepareErrorBadActionAndFailSucceeds(c *gc.C) { errBadAction := runner.NewBadActionError("some-action-id", "splat") runnerFactory := &MockRunnerFactory{ MockNewActionRunner: &MockNewActionRunner{err: errBadAction}, } callbacks := &RunActionCallbacks{ MockFailAction: &MockFailAction{err: errors.New("squelch")}, } factory := operation.NewFactory(operation.FactoryParams{ RunnerFactory: runnerFactory, Callbacks: callbacks, }) op, err := factory.NewAction(someActionId) c.Assert(err, jc.ErrorIsNil) newState, err := op.Prepare(operation.State{}) c.Assert(newState, gc.IsNil) c.Assert(err, gc.ErrorMatches, "squelch") c.Assert(*runnerFactory.MockNewActionRunner.gotActionId, gc.Equals, someActionId) c.Assert(*callbacks.MockFailAction.gotActionId, gc.Equals, someActionId) c.Assert(*callbacks.MockFailAction.gotMessage, gc.Equals, errBadAction.Error()) }