// Code generated by mockery v2.42.0. DO NOT EDIT.

package mocks

import (
	chaos_experiment_run "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/chaos_experiment_run"
	chaos_experiment "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/chaos_experiment"

	context "context"

	data_store "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/data-store"

	mock "github.com/stretchr/testify/mock"

	mongodbchaos_experiment_run "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/chaos_experiment_run"

	primitive "go.mongodb.org/mongo-driver/bson/primitive"
)

// ChaosExperimentRunService is an autogenerated mock type for the Service type
type ChaosExperimentRunService struct {
	mock.Mock
}

type ChaosExperimentRunService_Expecter struct {
	mock *mock.Mock
}

func (_m *ChaosExperimentRunService) EXPECT() *ChaosExperimentRunService_Expecter {
	return &ChaosExperimentRunService_Expecter{mock: &_m.Mock}
}

// ProcessCompletedExperimentRun provides a mock function with given fields: execData, wfID, runID
func (_m *ChaosExperimentRunService) ProcessCompletedExperimentRun(execData chaos_experiment_run.ExecutionData, wfID string, runID string) (chaos_experiment_run.ExperimentRunMetrics, error) {
	ret := _m.Called(execData, wfID, runID)

	if len(ret) == 0 {
		panic("no return value specified for ProcessCompletedExperimentRun")
	}

	var r0 chaos_experiment_run.ExperimentRunMetrics
	var r1 error
	if rf, ok := ret.Get(0).(func(chaos_experiment_run.ExecutionData, string, string) (chaos_experiment_run.ExperimentRunMetrics, error)); ok {
		return rf(execData, wfID, runID)
	}
	if rf, ok := ret.Get(0).(func(chaos_experiment_run.ExecutionData, string, string) chaos_experiment_run.ExperimentRunMetrics); ok {
		r0 = rf(execData, wfID, runID)
	} else {
		r0 = ret.Get(0).(chaos_experiment_run.ExperimentRunMetrics)
	}

	if rf, ok := ret.Get(1).(func(chaos_experiment_run.ExecutionData, string, string) error); ok {
		r1 = rf(execData, wfID, runID)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ChaosExperimentRunService_ProcessCompletedExperimentRun_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessCompletedExperimentRun'
type ChaosExperimentRunService_ProcessCompletedExperimentRun_Call struct {
	*mock.Call
}

// ProcessCompletedExperimentRun is a helper method to define mock.On call
//   - execData chaos_experiment_run.ExecutionData
//   - wfID string
//   - runID string
func (_e *ChaosExperimentRunService_Expecter) ProcessCompletedExperimentRun(execData interface{}, wfID interface{}, runID interface{}) *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call {
	return &ChaosExperimentRunService_ProcessCompletedExperimentRun_Call{Call: _e.mock.On("ProcessCompletedExperimentRun", execData, wfID, runID)}
}

func (_c *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call) Run(run func(execData chaos_experiment_run.ExecutionData, wfID string, runID string)) *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(chaos_experiment_run.ExecutionData), args[1].(string), args[2].(string))
	})
	return _c
}

func (_c *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call) Return(_a0 chaos_experiment_run.ExperimentRunMetrics, _a1 error) *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call {
	_c.Call.Return(_a0, _a1)
	return _c
}

func (_c *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call) RunAndReturn(run func(chaos_experiment_run.ExecutionData, string, string) (chaos_experiment_run.ExperimentRunMetrics, error)) *ChaosExperimentRunService_ProcessCompletedExperimentRun_Call {
	_c.Call.Return(run)
	return _c
}

// ProcessExperimentRunDelete provides a mock function with given fields: ctx, query, workflowRunID, experimentRun, workflow, username, r
func (_m *ChaosExperimentRunService) ProcessExperimentRunDelete(ctx context.Context, query primitive.D, workflowRunID *string, experimentRun mongodbchaos_experiment_run.ChaosExperimentRun, workflow chaos_experiment.ChaosExperimentRequest, username string, r *data_store.StateData) error {
	ret := _m.Called(ctx, query, workflowRunID, experimentRun, workflow, username, r)

	if len(ret) == 0 {
		panic("no return value specified for ProcessExperimentRunDelete")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, primitive.D, *string, mongodbchaos_experiment_run.ChaosExperimentRun, chaos_experiment.ChaosExperimentRequest, string, *data_store.StateData) error); ok {
		r0 = rf(ctx, query, workflowRunID, experimentRun, workflow, username, r)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// ChaosExperimentRunService_ProcessExperimentRunDelete_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessExperimentRunDelete'
type ChaosExperimentRunService_ProcessExperimentRunDelete_Call struct {
	*mock.Call
}

// ProcessExperimentRunDelete is a helper method to define mock.On call
//   - ctx context.Context
//   - query primitive.D
//   - workflowRunID *string
//   - experimentRun mongodbchaos_experiment_run.ChaosExperimentRun
//   - workflow chaos_experiment.ChaosExperimentRequest
//   - username string
//   - r *data_store.StateData
func (_e *ChaosExperimentRunService_Expecter) ProcessExperimentRunDelete(ctx interface{}, query interface{}, workflowRunID interface{}, experimentRun interface{}, workflow interface{}, username interface{}, r interface{}) *ChaosExperimentRunService_ProcessExperimentRunDelete_Call {
	return &ChaosExperimentRunService_ProcessExperimentRunDelete_Call{Call: _e.mock.On("ProcessExperimentRunDelete", ctx, query, workflowRunID, experimentRun, workflow, username, r)}
}

func (_c *ChaosExperimentRunService_ProcessExperimentRunDelete_Call) Run(run func(ctx context.Context, query primitive.D, workflowRunID *string, experimentRun mongodbchaos_experiment_run.ChaosExperimentRun, workflow chaos_experiment.ChaosExperimentRequest, username string, r *data_store.StateData)) *ChaosExperimentRunService_ProcessExperimentRunDelete_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(context.Context), args[1].(primitive.D), args[2].(*string), args[3].(mongodbchaos_experiment_run.ChaosExperimentRun), args[4].(chaos_experiment.ChaosExperimentRequest), args[5].(string), args[6].(*data_store.StateData))
	})
	return _c
}

func (_c *ChaosExperimentRunService_ProcessExperimentRunDelete_Call) Return(_a0 error) *ChaosExperimentRunService_ProcessExperimentRunDelete_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *ChaosExperimentRunService_ProcessExperimentRunDelete_Call) RunAndReturn(run func(context.Context, primitive.D, *string, mongodbchaos_experiment_run.ChaosExperimentRun, chaos_experiment.ChaosExperimentRequest, string, *data_store.StateData) error) *ChaosExperimentRunService_ProcessExperimentRunDelete_Call {
	_c.Call.Return(run)
	return _c
}

// ProcessExperimentRunStop provides a mock function with given fields: ctx, query, experimentRunID, experiment, username, projectID, r
func (_m *ChaosExperimentRunService) ProcessExperimentRunStop(ctx context.Context, query primitive.D, experimentRunID *string, experiment chaos_experiment.ChaosExperimentRequest, username string, projectID string, r *data_store.StateData) error {
	ret := _m.Called(ctx, query, experimentRunID, experiment, username, projectID, r)

	if len(ret) == 0 {
		panic("no return value specified for ProcessExperimentRunStop")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, primitive.D, *string, chaos_experiment.ChaosExperimentRequest, string, string, *data_store.StateData) error); ok {
		r0 = rf(ctx, query, experimentRunID, experiment, username, projectID, r)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// ChaosExperimentRunService_ProcessExperimentRunStop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ProcessExperimentRunStop'
type ChaosExperimentRunService_ProcessExperimentRunStop_Call struct {
	*mock.Call
}

// ProcessExperimentRunStop is a helper method to define mock.On call
//   - ctx context.Context
//   - query primitive.D
//   - experimentRunID *string
//   - experiment chaos_experiment.ChaosExperimentRequest
//   - username string
//   - projectID string
//   - r *data_store.StateData
func (_e *ChaosExperimentRunService_Expecter) ProcessExperimentRunStop(ctx interface{}, query interface{}, experimentRunID interface{}, experiment interface{}, username interface{}, projectID interface{}, r interface{}) *ChaosExperimentRunService_ProcessExperimentRunStop_Call {
	return &ChaosExperimentRunService_ProcessExperimentRunStop_Call{Call: _e.mock.On("ProcessExperimentRunStop", ctx, query, experimentRunID, experiment, username, projectID, r)}
}

func (_c *ChaosExperimentRunService_ProcessExperimentRunStop_Call) Run(run func(ctx context.Context, query primitive.D, experimentRunID *string, experiment chaos_experiment.ChaosExperimentRequest, username string, projectID string, r *data_store.StateData)) *ChaosExperimentRunService_ProcessExperimentRunStop_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(context.Context), args[1].(primitive.D), args[2].(*string), args[3].(chaos_experiment.ChaosExperimentRequest), args[4].(string), args[5].(string), args[6].(*data_store.StateData))
	})
	return _c
}

func (_c *ChaosExperimentRunService_ProcessExperimentRunStop_Call) Return(_a0 error) *ChaosExperimentRunService_ProcessExperimentRunStop_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *ChaosExperimentRunService_ProcessExperimentRunStop_Call) RunAndReturn(run func(context.Context, primitive.D, *string, chaos_experiment.ChaosExperimentRequest, string, string, *data_store.StateData) error) *ChaosExperimentRunService_ProcessExperimentRunStop_Call {
	_c.Call.Return(run)
	return _c
}

// NewChaosExperimentRunService creates a new instance of ChaosExperimentRunService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewChaosExperimentRunService(t interface {
	mock.TestingT
	Cleanup(func())
}) *ChaosExperimentRunService {
	mock := &ChaosExperimentRunService{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}
