github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/worker/lifeflag/validate_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package lifeflag_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/lifeflag" 13 ) 14 15 type ValidateSuite struct { 16 testing.IsolationSuite 17 } 18 19 var _ = gc.Suite(&ValidateSuite{}) 20 21 func (*ValidateSuite) TestValidConfig(c *gc.C) { 22 config := validConfig() 23 err := config.Validate() 24 c.Check(err, jc.ErrorIsNil) 25 } 26 27 func (*ValidateSuite) TestNilFacade(c *gc.C) { 28 config := validConfig() 29 config.Facade = nil 30 checkInvalid(c, config, "nil Facade not valid") 31 } 32 33 func (*ValidateSuite) TestNilEntity(c *gc.C) { 34 config := validConfig() 35 config.Entity = nil 36 checkInvalid(c, config, "nil Entity not valid") 37 } 38 39 func (*ValidateSuite) TestNilResult(c *gc.C) { 40 config := validConfig() 41 config.Result = nil 42 checkInvalid(c, config, "nil Result not valid") 43 } 44 45 func checkInvalid(c *gc.C, config lifeflag.Config, message string) { 46 check := func(err error) { 47 c.Check(err, jc.Satisfies, errors.IsNotValid) 48 c.Check(err, gc.ErrorMatches, message) 49 } 50 err := config.Validate() 51 check(err) 52 53 worker, err := lifeflag.New(config) 54 c.Check(worker, gc.IsNil) 55 check(err) 56 } 57 58 func validConfig() lifeflag.Config { 59 return lifeflag.Config{ 60 Facade: struct{ lifeflag.Facade }{}, 61 Entity: testEntity, 62 Result: explode, 63 } 64 }