github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/worker/uniter/operation/relations_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package operation_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/testing" 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/worker/uniter/operation" 13 ) 14 15 type UpdateRelationsSuite struct { 16 testing.IsolationSuite 17 } 18 19 var _ = gc.Suite(&UpdateRelationsSuite{}) 20 21 func (s *UpdateRelationsSuite) TestPrepare(c *gc.C) { 22 factory := operation.NewFactory(operation.FactoryParams{}) 23 op, err := factory.NewUpdateRelations(nil) 24 c.Assert(err, jc.ErrorIsNil) 25 state, err := op.Prepare(operation.State{}) 26 c.Check(err, jc.ErrorIsNil) 27 c.Check(state, gc.IsNil) 28 } 29 30 func (s *UpdateRelationsSuite) TestExecuteError(c *gc.C) { 31 callbacks := &UpdateRelationsCallbacks{ 32 MockUpdateRelations: &MockUpdateRelations{err: errors.New("quack")}, 33 } 34 factory := operation.NewFactory(operation.FactoryParams{Callbacks: callbacks}) 35 op, err := factory.NewUpdateRelations([]int{3, 2, 1}) 36 c.Assert(err, jc.ErrorIsNil) 37 state, err := op.Prepare(operation.State{}) 38 c.Check(err, jc.ErrorIsNil) 39 c.Check(state, gc.IsNil) 40 41 state, err = op.Execute(operation.State{}) 42 c.Check(err, gc.ErrorMatches, "quack") 43 c.Check(state, gc.IsNil) 44 c.Check(callbacks.MockUpdateRelations.gotIds, jc.DeepEquals, &[]int{3, 2, 1}) 45 } 46 47 func (s *UpdateRelationsSuite) TestExecuteSuccess(c *gc.C) { 48 callbacks := &UpdateRelationsCallbacks{ 49 MockUpdateRelations: &MockUpdateRelations{}, 50 } 51 factory := operation.NewFactory(operation.FactoryParams{Callbacks: callbacks}) 52 op, err := factory.NewUpdateRelations([]int{3, 2, 1}) 53 c.Assert(err, jc.ErrorIsNil) 54 state, err := op.Prepare(operation.State{}) 55 c.Check(err, jc.ErrorIsNil) 56 c.Check(state, gc.IsNil) 57 58 state, err = op.Execute(operation.State{}) 59 c.Check(err, jc.ErrorIsNil) 60 c.Check(state, gc.IsNil) 61 c.Check(callbacks.MockUpdateRelations.gotIds, jc.DeepEquals, &[]int{3, 2, 1}) 62 } 63 64 func (s *UpdateRelationsSuite) TestCommit(c *gc.C) { 65 factory := operation.NewFactory(operation.FactoryParams{}) 66 op, err := factory.NewUpdateRelations(nil) 67 c.Assert(err, jc.ErrorIsNil) 68 state, err := op.Commit(operation.State{}) 69 c.Check(err, jc.ErrorIsNil) 70 c.Check(state, gc.IsNil) 71 } 72 73 func (s *UpdateRelationsSuite) TestDoesNotNeedGlobalMachineLock(c *gc.C) { 74 factory := operation.NewFactory(operation.FactoryParams{}) 75 op, err := factory.NewUpdateRelations(nil) 76 c.Assert(err, jc.ErrorIsNil) 77 c.Assert(op.NeedsGlobalMachineLock(), jc.IsFalse) 78 }