github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/core/migration/phase_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package migration_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/core/migration"
    11  	coretesting "github.com/juju/juju/testing"
    12  )
    13  
    14  type PhaseSuite struct {
    15  	coretesting.BaseSuite
    16  }
    17  
    18  var _ = gc.Suite(new(PhaseSuite))
    19  
    20  func (s *PhaseSuite) TestUNKNOWN(c *gc.C) {
    21  	// 0 should be UNKNOWN to guard against uninitialised struct
    22  	// fields.
    23  	c.Check(migration.Phase(0), gc.Equals, migration.UNKNOWN)
    24  }
    25  
    26  func (s *PhaseSuite) TestStringValid(c *gc.C) {
    27  	c.Check(migration.PRECHECK.String(), gc.Equals, "PRECHECK")
    28  	c.Check(migration.UNKNOWN.String(), gc.Equals, "UNKNOWN")
    29  	c.Check(migration.ABORT.String(), gc.Equals, "ABORT")
    30  }
    31  
    32  func (s *PhaseSuite) TestInvalid(c *gc.C) {
    33  	c.Check(migration.Phase(-1).String(), gc.Equals, "UNKNOWN")
    34  	c.Check(migration.Phase(9999).String(), gc.Equals, "UNKNOWN")
    35  }
    36  
    37  func (s *PhaseSuite) TestParseValid(c *gc.C) {
    38  	phase, ok := migration.ParsePhase("REAP")
    39  	c.Check(phase, gc.Equals, migration.REAP)
    40  	c.Check(ok, jc.IsTrue)
    41  }
    42  
    43  func (s *PhaseSuite) TestParseInvalid(c *gc.C) {
    44  	phase, ok := migration.ParsePhase("foo")
    45  	c.Check(phase, gc.Equals, migration.UNKNOWN)
    46  	c.Check(ok, jc.IsFalse)
    47  }
    48  
    49  func (s *PhaseSuite) TestIsTerminal(c *gc.C) {
    50  	c.Check(migration.QUIESCE.IsTerminal(), jc.IsFalse)
    51  	c.Check(migration.SUCCESS.IsTerminal(), jc.IsFalse)
    52  	c.Check(migration.ABORT.IsTerminal(), jc.IsFalse)
    53  	c.Check(migration.ABORTDONE.IsTerminal(), jc.IsTrue)
    54  	c.Check(migration.REAPFAILED.IsTerminal(), jc.IsTrue)
    55  	c.Check(migration.DONE.IsTerminal(), jc.IsTrue)
    56  }
    57  
    58  func (s *PhaseSuite) TestCanTransitionTo(c *gc.C) {
    59  	c.Check(migration.QUIESCE.CanTransitionTo(migration.SUCCESS), jc.IsFalse)
    60  	c.Check(migration.QUIESCE.CanTransitionTo(migration.ABORT), jc.IsTrue)
    61  	c.Check(migration.QUIESCE.CanTransitionTo(migration.READONLY), jc.IsTrue)
    62  	c.Check(migration.QUIESCE.CanTransitionTo(migration.Phase(-1)), jc.IsFalse)
    63  
    64  	c.Check(migration.ABORT.CanTransitionTo(migration.QUIESCE), jc.IsFalse)
    65  }