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  }