github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/charmrevision/validate_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package charmrevision_test
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/clock"
    10  	"github.com/juju/errors"
    11  	"github.com/juju/testing"
    12  	jc "github.com/juju/testing/checkers"
    13  	gc "gopkg.in/check.v1"
    14  
    15  	coretesting "github.com/juju/juju/testing"
    16  	"github.com/juju/juju/worker/charmrevision"
    17  )
    18  
    19  type ValidateSuite struct {
    20  	testing.IsolationSuite
    21  	config charmrevision.Config
    22  }
    23  
    24  var _ = gc.Suite(&ValidateSuite{})
    25  
    26  func (s *ValidateSuite) SetUpTest(c *gc.C) {
    27  	s.IsolationSuite.SetUpTest(c)
    28  	s.config = charmrevision.Config{
    29  		RevisionUpdater: struct{ charmrevision.RevisionUpdater }{},
    30  		Clock:           struct{ clock.Clock }{},
    31  		Period:          time.Hour,
    32  		Logger:          coretesting.NoopLogger{},
    33  	}
    34  }
    35  
    36  func (s *ValidateSuite) TestValid(c *gc.C) {
    37  	err := s.config.Validate()
    38  	c.Check(err, jc.ErrorIsNil)
    39  }
    40  
    41  func (s *ValidateSuite) TestNilRevisionUpdater(c *gc.C) {
    42  	s.config.RevisionUpdater = nil
    43  	s.checkNotValid(c, "nil RevisionUpdater not valid")
    44  }
    45  
    46  func (s *ValidateSuite) TestNilClock(c *gc.C) {
    47  	s.config.Clock = nil
    48  	s.checkNotValid(c, "nil Clock not valid")
    49  }
    50  
    51  func (s *ValidateSuite) TestNilLogger(c *gc.C) {
    52  	s.config.Logger = nil
    53  	s.checkNotValid(c, "nil Logger not valid")
    54  }
    55  
    56  func (s *ValidateSuite) TestBadPeriods(c *gc.C) {
    57  	for i, period := range []time.Duration{
    58  		0, -time.Nanosecond, -time.Hour,
    59  	} {
    60  		c.Logf("test %d", i)
    61  		s.config.Period = period
    62  		s.checkNotValid(c, "non-positive Period not valid")
    63  	}
    64  }
    65  
    66  func (s *ValidateSuite) checkNotValid(c *gc.C, match string) {
    67  	check := func(err error) {
    68  		c.Check(err, jc.Satisfies, errors.IsNotValid)
    69  		c.Check(err, gc.ErrorMatches, match)
    70  	}
    71  	err := s.config.Validate()
    72  	check(err)
    73  
    74  	worker, err := charmrevision.NewWorker(s.config)
    75  	c.Check(worker, gc.IsNil)
    76  	check(err)
    77  }