1
// Copyright 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package charmrevision_test
9
"github.com/juju/errors"
10
"github.com/juju/testing"
11
jc "github.com/juju/testing/checkers"
12
"github.com/juju/utils/clock"
13
gc "gopkg.in/check.v1"
15
"github.com/juju/juju/worker/charmrevision"
18
type ValidateSuite struct {
19
testing.IsolationSuite
20
config charmrevision.Config
23
var _ = gc.Suite(&ValidateSuite{})
25
func (s *ValidateSuite) SetUpTest(c *gc.C) {
26
s.IsolationSuite.SetUpTest(c)
27
s.config = charmrevision.Config{
28
RevisionUpdater: struct{ charmrevision.RevisionUpdater }{},
29
Clock: struct{ clock.Clock }{},
34
func (s *ValidateSuite) TestValid(c *gc.C) {
35
err := s.config.Validate()
36
c.Check(err, jc.ErrorIsNil)
39
func (s *ValidateSuite) TestNilRevisionUpdater(c *gc.C) {
40
s.config.RevisionUpdater = nil
41
s.checkNotValid(c, "nil RevisionUpdater not valid")
44
func (s *ValidateSuite) TestNilClock(c *gc.C) {
46
s.checkNotValid(c, "nil Clock not valid")
49
func (s *ValidateSuite) TestBadPeriods(c *gc.C) {
50
for i, period := range []time.Duration{
51
0, -time.Nanosecond, -time.Hour,
54
s.config.Period = period
55
s.checkNotValid(c, "non-positive Period not valid")
59
func (s *ValidateSuite) checkNotValid(c *gc.C, match string) {
60
check := func(err error) {
61
c.Check(err, jc.Satisfies, errors.IsNotValid)
62
c.Check(err, gc.ErrorMatches, match)
64
err := s.config.Validate()
67
worker, err := charmrevision.NewWorker(s.config)
68
c.Check(worker, gc.IsNil)