// Code generated by moq; DO NOT EDIT.
// github.com/matryer/moq

package fake

import (
	"github.com/keptn/lifecycle-toolkit/lifecycle-operator/controllers/common/telemetry"
	"sync"
)

// TracerFactoryMock is a mock implementation of telemetry.TracerFactory.
//
//	func TestSomethingThatUsesTracerFactory(t *testing.T) {
//
//		// make and configure a mocked telemetry.TracerFactory
//		mockedTracerFactory := &TracerFactoryMock{
//			GetTracerFunc: func(name string) telemetry.ITracer {
//				panic("mock out the GetTracer method")
//			},
//		}
//
//		// use mockedTracerFactory in code that requires telemetry.TracerFactory
//		// and then make assertions.
//
//	}
type TracerFactoryMock struct {
	// GetTracerFunc mocks the GetTracer method.
	GetTracerFunc func(name string) telemetry.ITracer

	// calls tracks calls to the methods.
	calls struct {
		// GetTracer holds details about calls to the GetTracer method.
		GetTracer []struct {
			// Name is the name argument value.
			Name string
		}
	}
	lockGetTracer sync.RWMutex
}

// GetTracer calls GetTracerFunc.
func (mock *TracerFactoryMock) GetTracer(name string) telemetry.ITracer {
	if mock.GetTracerFunc == nil {
		panic("TracerFactoryMock.GetTracerFunc: method is nil but TracerFactory.GetTracer was just called")
	}
	callInfo := struct {
		Name string
	}{
		Name: name,
	}
	mock.lockGetTracer.Lock()
	mock.calls.GetTracer = append(mock.calls.GetTracer, callInfo)
	mock.lockGetTracer.Unlock()
	return mock.GetTracerFunc(name)
}

// GetTracerCalls gets all the calls that were made to GetTracer.
// Check the length with:
//
//	len(mockedTracerFactory.GetTracerCalls())
func (mock *TracerFactoryMock) GetTracerCalls() []struct {
	Name string
} {
	var calls []struct {
		Name string
	}
	mock.lockGetTracer.RLock()
	calls = mock.calls.GetTracer
	mock.lockGetTracer.RUnlock()
	return calls
}
