~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/apiserver/meterstatus/wrapper_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}