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  }