github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/worker/changestream/manifold_test.go (about)

     1  // Copyright 2022 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package changestream
     5  
     6  import (
     7  	clock "github.com/juju/clock"
     8  	"github.com/juju/errors"
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	coredatabase "github.com/juju/juju/core/database"
    13  )
    14  
    15  type manifoldSuite struct {
    16  	baseSuite
    17  }
    18  
    19  var _ = gc.Suite(&manifoldSuite{})
    20  
    21  func (s *manifoldSuite) TestValidateConfig(c *gc.C) {
    22  	defer s.setupMocks(c).Finish()
    23  
    24  	cfg := s.getConfig()
    25  	c.Check(cfg.Validate(), jc.ErrorIsNil)
    26  
    27  	cfg.Clock = nil
    28  	c.Check(errors.Is(cfg.Validate(), errors.NotValid), jc.IsTrue)
    29  
    30  	cfg = s.getConfig()
    31  	cfg.Logger = nil
    32  	c.Check(errors.Is(cfg.Validate(), errors.NotValid), jc.IsTrue)
    33  
    34  	cfg = s.getConfig()
    35  	cfg.DBAccessor = ""
    36  	c.Check(errors.Is(cfg.Validate(), errors.NotValid), jc.IsTrue)
    37  
    38  	cfg = s.getConfig()
    39  	cfg.FileNotifyWatcher = ""
    40  	c.Check(errors.Is(cfg.Validate(), errors.NotValid), jc.IsTrue)
    41  
    42  	cfg = s.getConfig()
    43  	cfg.NewEventQueueWorker = nil
    44  	c.Check(errors.Is(cfg.Validate(), errors.NotValid), jc.IsTrue)
    45  }
    46  
    47  func (s *manifoldSuite) getConfig() ManifoldConfig {
    48  	return ManifoldConfig{
    49  		DBAccessor:        "dbaccessor",
    50  		FileNotifyWatcher: "filenotifywatcher",
    51  		Clock:             s.clock,
    52  		Logger:            s.logger,
    53  		NewEventQueueWorker: func(coredatabase.TrackedDB, FileNotifier, clock.Clock, Logger) (EventQueueWorker, error) {
    54  			return nil, nil
    55  		},
    56  	}
    57  }