github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/meterstatus/wrapper_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package meterstatus_test 5 6 import ( 7 "errors" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/apiserver/meterstatus" 13 "github.com/juju/juju/state" 14 ) 15 16 type meterStatusWrapperSuite struct{} 17 18 var _ = gc.Suite(&meterStatusWrapperSuite{}) 19 20 func (s *meterStatusWrapperSuite) TestError(c *gc.C) { 21 _, err := meterstatus.MeterStatusWrapper(ErrorGetter) 22 c.Assert(err, gc.ErrorMatches, "an error") 23 } 24 25 func (s *meterStatusWrapperSuite) TestWrapper(c *gc.C) { 26 tests := []struct { 27 about string 28 input func() (state.MeterStatus, error) 29 expectedOutput state.MeterStatus 30 }{{ 31 about: "notset in, amber out", 32 input: NotSetGetter, 33 expectedOutput: state.MeterStatus{state.MeterAmber, "not set"}, 34 }, { 35 about: "notavailable in, red out", 36 input: NotAvailableGetter, 37 expectedOutput: state.MeterStatus{state.MeterRed, "not available"}, 38 }, { 39 about: "red in, red out", 40 input: RedGetter, 41 expectedOutput: state.MeterStatus{state.MeterRed, "info"}, 42 }, { 43 about: "green in, green out", 44 input: GreenGetter, 45 expectedOutput: state.MeterStatus{state.MeterGreen, "info"}, 46 }, { 47 about: "amber in, amber out", 48 input: AmberGetter, 49 expectedOutput: state.MeterStatus{state.MeterAmber, "info"}, 50 }} 51 for i, test := range tests { 52 c.Logf("test %d: %s", i, test.about) 53 status, err := meterstatus.MeterStatusWrapper(test.input) 54 c.Assert(err, jc.ErrorIsNil) 55 c.Assert(status.Code, gc.Equals, test.expectedOutput.Code) 56 c.Assert(status.Info, gc.Equals, test.expectedOutput.Info) 57 } 58 } 59 60 func ErrorGetter() (state.MeterStatus, error) { 61 return state.MeterStatus{}, errors.New("an error") 62 } 63 64 func NotAvailableGetter() (state.MeterStatus, error) { 65 return state.MeterStatus{state.MeterNotAvailable, ""}, nil 66 } 67 68 func NotSetGetter() (state.MeterStatus, error) { 69 return state.MeterStatus{state.MeterNotSet, ""}, nil 70 } 71 72 func RedGetter() (state.MeterStatus, error) { 73 return state.MeterStatus{state.MeterRed, "info"}, nil 74 } 75 76 func GreenGetter() (state.MeterStatus, error) { 77 return state.MeterStatus{state.MeterGreen, "info"}, nil 78 } 79 func AmberGetter() (state.MeterStatus, error) { 80 return state.MeterStatus{state.MeterAmber, "info"}, nil 81 }