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 })