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 }