github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/dblogpruner/manifold_test.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package dblogpruner_test
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/errors"
    10  	"github.com/juju/testing"
    11  	jc "github.com/juju/testing/checkers"
    12  	gc "gopkg.in/check.v1"
    13  	"gopkg.in/juju/worker.v1"
    14  	"gopkg.in/juju/worker.v1/workertest"
    15  
    16  	"github.com/juju/juju/worker/dblogpruner"
    17  )
    18  
    19  type ManifoldSuite struct {
    20  	testing.IsolationSuite
    21  	stub   testing.Stub
    22  	config dblogpruner.ManifoldConfig
    23  	worker worker.Worker
    24  }
    25  
    26  var _ = gc.Suite(&ManifoldSuite{})
    27  
    28  func (s *ManifoldSuite) SetUpTest(c *gc.C) {
    29  	s.IsolationSuite.SetUpTest(c)
    30  	s.stub.ResetCalls()
    31  	s.config = s.validConfig()
    32  	s.worker = worker.NewRunner(worker.RunnerParams{})
    33  	s.AddCleanup(func(c *gc.C) { workertest.DirtyKill(c, s.worker) })
    34  }
    35  
    36  func (s *ManifoldSuite) validConfig() dblogpruner.ManifoldConfig {
    37  	return dblogpruner.ManifoldConfig{
    38  		ClockName:     "clock",
    39  		StateName:     "state",
    40  		PruneInterval: time.Hour,
    41  		NewWorker: func(config dblogpruner.Config) (worker.Worker, error) {
    42  			s.stub.AddCall("NewWorker", config)
    43  			return s.worker, s.stub.NextErr()
    44  		},
    45  	}
    46  }
    47  
    48  func (s *ManifoldSuite) TestValid(c *gc.C) {
    49  	c.Check(s.config.Validate(), jc.ErrorIsNil)
    50  }
    51  
    52  func (s *ManifoldSuite) TestMissingClockName(c *gc.C) {
    53  	s.config.ClockName = ""
    54  	s.checkNotValid(c, "empty ClockName not valid")
    55  }
    56  
    57  func (s *ManifoldSuite) TestMissingStateName(c *gc.C) {
    58  	s.config.StateName = ""
    59  	s.checkNotValid(c, "empty StateName not valid")
    60  }
    61  
    62  func (s *ManifoldSuite) TestZeroPruneInterval(c *gc.C) {
    63  	s.config.PruneInterval = 0
    64  	s.checkNotValid(c, "non-positive PruneInterval not valid")
    65  }
    66  
    67  func (s *ManifoldSuite) TestMissingNewWorker(c *gc.C) {
    68  	s.config.NewWorker = nil
    69  	s.checkNotValid(c, "nil NewWorker not valid")
    70  }
    71  
    72  func (s *ManifoldSuite) checkNotValid(c *gc.C, expect string) {
    73  	err := s.config.Validate()
    74  	c.Check(err, gc.ErrorMatches, expect)
    75  	c.Check(err, jc.Satisfies, errors.IsNotValid)
    76  }