github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/config/mutators_test.go (about)

     1  // Copyright (c) 2018-2021, R.I. Pienaar and the Choria Project contributors
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package config
     6  
     7  import (
     8  	"io"
     9  
    10  	"github.com/golang/mock/gomock"
    11  	. "github.com/onsi/ginkgo/v2"
    12  	. "github.com/onsi/gomega"
    13  	"github.com/sirupsen/logrus"
    14  )
    15  
    16  var _ = Describe("Choria/Config/Mutator", func() {
    17  	var (
    18  		mockctl *gomock.Controller
    19  		log     *logrus.Entry
    20  	)
    21  
    22  	BeforeEach(func() {
    23  		mockctl = gomock.NewController(GinkgoT())
    24  		logger := logrus.New()
    25  		logger.SetOutput(io.Discard)
    26  		log = logrus.NewEntry(logger)
    27  	})
    28  
    29  	AfterEach(func() {
    30  		mockctl.Finish()
    31  		mutators = []Mutator{}
    32  	})
    33  
    34  	Describe("mutate", func() {
    35  		It("Should call all mutators", func() {
    36  			m1 := NewMockMutator(mockctl)
    37  			m2 := NewMockMutator(mockctl)
    38  			c := &Config{}
    39  
    40  			m1.EXPECT().Mutate(gomock.Any(), gomock.Any()).Do(func(c *Config, _ *logrus.Entry) { c.Identity = "set_by_1" }).Times(1)
    41  			m2.EXPECT().Mutate(gomock.Any(), gomock.Any()).Do(func(c *Config, _ *logrus.Entry) { c.LogFile = "set_by_2" }).Times(1)
    42  
    43  			Expect(mutators).To(BeEmpty())
    44  			RegisterMutator("m1", m1)
    45  			RegisterMutator("m2", m2)
    46  			Expect(mutators).To(HaveLen(2))
    47  			Expect(MutatorNames()).To(Equal([]string{"m1", "m2"}))
    48  
    49  			Mutate(c, log)
    50  
    51  			Expect(c.Identity).To(Equal("set_by_1"))
    52  			Expect(c.LogFile).To(Equal("set_by_2"))
    53  		})
    54  	})
    55  })