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

package mock

import (
	entity "github.com/shiningrush/fastflow/pkg/entity"
	mock "github.com/stretchr/testify/mock"

	mod "github.com/shiningrush/fastflow/pkg/mod"

	run "github.com/shiningrush/fastflow/pkg/entity/run"
)

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

// CancelDagIns provides a mock function with given fields: dagInsId, ops
func (_m *Workflow) CancelDagIns(dagInsId string, ops ...mod.CommandOptSetter) error {
	_va := make([]interface{}, len(ops))
	for _i := range ops {
		_va[_i] = ops[_i]
	}
	var _ca []interface{}
	_ca = append(_ca, dagInsId)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, ...mod.CommandOptSetter) error); ok {
		r0 = rf(dagInsId, ops...)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// Close provides a mock function with no fields
func (_m *Workflow) Close() {
	_m.Called()
}

// ListDagIns provides a mock function with given fields: input
func (_m *Workflow) ListDagIns(input *mod.ListDagInstanceInput) ([]*entity.DagInstance, error) {
	ret := _m.Called(input)

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

	var r0 []*entity.DagInstance
	var r1 error
	if rf, ok := ret.Get(0).(func(*mod.ListDagInstanceInput) ([]*entity.DagInstance, error)); ok {
		return rf(input)
	}
	if rf, ok := ret.Get(0).(func(*mod.ListDagInstanceInput) []*entity.DagInstance); ok {
		r0 = rf(input)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*entity.DagInstance)
		}
	}

	if rf, ok := ret.Get(1).(func(*mod.ListDagInstanceInput) error); ok {
		r1 = rf(input)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// RegisterDag provides a mock function with given fields: dag, actions
func (_m *Workflow) RegisterDag(dag *entity.Dag, actions []run.Action) error {
	ret := _m.Called(dag, actions)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(*entity.Dag, []run.Action) error); ok {
		r0 = rf(dag, actions)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RetryDagIns provides a mock function with given fields: dagInsId, ops
func (_m *Workflow) RetryDagIns(dagInsId string, ops ...mod.CommandOptSetter) error {
	_va := make([]interface{}, len(ops))
	for _i := range ops {
		_va[_i] = ops[_i]
	}
	var _ca []interface{}
	_ca = append(_ca, dagInsId)
	_ca = append(_ca, _va...)
	ret := _m.Called(_ca...)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, ...mod.CommandOptSetter) error); ok {
		r0 = rf(dagInsId, ops...)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RunDag provides a mock function with given fields: dagId, specVar
func (_m *Workflow) RunDag(dagId string, specVar map[string]string) (*entity.DagInstance, error) {
	ret := _m.Called(dagId, specVar)

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

	var r0 *entity.DagInstance
	var r1 error
	if rf, ok := ret.Get(0).(func(string, map[string]string) (*entity.DagInstance, error)); ok {
		return rf(dagId, specVar)
	}
	if rf, ok := ret.Get(0).(func(string, map[string]string) *entity.DagInstance); ok {
		r0 = rf(dagId, specVar)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*entity.DagInstance)
		}
	}

	if rf, ok := ret.Get(1).(func(string, map[string]string) error); ok {
		r1 = rf(dagId, specVar)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// RunDagWithTags provides a mock function with given fields: dagId, specVar, tags
func (_m *Workflow) RunDagWithTags(dagId string, specVar map[string]string, tags map[string]string) (*entity.DagInstance, error) {
	ret := _m.Called(dagId, specVar, tags)

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

	var r0 *entity.DagInstance
	var r1 error
	if rf, ok := ret.Get(0).(func(string, map[string]string, map[string]string) (*entity.DagInstance, error)); ok {
		return rf(dagId, specVar, tags)
	}
	if rf, ok := ret.Get(0).(func(string, map[string]string, map[string]string) *entity.DagInstance); ok {
		r0 = rf(dagId, specVar, tags)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*entity.DagInstance)
		}
	}

	if rf, ok := ret.Get(1).(func(string, map[string]string, map[string]string) error); ok {
		r1 = rf(dagId, specVar, tags)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// NewWorkflow creates a new instance of Workflow. 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 NewWorkflow(t interface {
	mock.TestingT
	Cleanup(func())
}) *Workflow {
	mock := &Workflow{}
	mock.Mock.Test(t)

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

	return mock
}
