github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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/juju/worker/lifeflag" 9 "github.com/juju/testing" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 ) 13 14 type ValidateSuite struct { 15 testing.IsolationSuite 16 } 17 18 var _ = gc.Suite(&ValidateSuite{}) 19 20 func (*ValidateSuite) TestValidConfig(c *gc.C) { 21 config := validConfig() 22 err := config.Validate() 23 c.Check(err, jc.ErrorIsNil) 24 } 25 26 func (*ValidateSuite) TestNilFacade(c *gc.C) { 27 config := validConfig() 28 config.Facade = nil 29 checkInvalid(c, config, "nil Facade not valid") 30 } 31 32 func (*ValidateSuite) TestNilEntity(c *gc.C) { 33 config := validConfig() 34 config.Entity = nil 35 checkInvalid(c, config, "nil Entity not valid") 36 } 37 38 func (*ValidateSuite) TestNilResult(c *gc.C) { 39 config := validConfig() 40 config.Result = nil 41 checkInvalid(c, config, "nil Result not valid") 42 } 43 44 func checkInvalid(c *gc.C, config lifeflag.Config, message string) { 45 check := func(err error) { 46 c.Check(err, jc.Satisfies, errors.IsNotValid) 47 c.Check(err, gc.ErrorMatches, message) 48 } 49 err := config.Validate() 50 check(err) 51 52 worker, err := lifeflag.New(config) 53 c.Check(worker, gc.IsNil) 54 check(err) 55 } 56 57 func validConfig() lifeflag.Config { 58 return lifeflag.Config{ 59 Facade: struct{ lifeflag.Facade }{}, 60 Entity: testEntity, 61 Result: explode, 62 } 63 }