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

package decision

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

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

// AppendCommentSection provides a mock function with given fields: modelPath, decisionID, commentText, commentNumber, author, date
func (_m *MockDecisionRepository) AppendCommentSection(modelPath string, decisionID string, commentText string, commentNumber int, author string, date string) error {
	ret := _m.Called(modelPath, decisionID, commentText, commentNumber, author, date)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string, int, string, string) error); ok {
		r0 = rf(modelPath, decisionID, commentText, commentNumber, author, date)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// AppendOutcomeSection provides a mock function with given fields: modelPath, decisionID, outcome
func (_m *MockDecisionRepository) AppendOutcomeSection(modelPath string, decisionID string, outcome string) error {
	ret := _m.Called(modelPath, decisionID, outcome)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string) error); ok {
		r0 = rf(modelPath, decisionID, outcome)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// Copy provides a mock function with given fields: srcPath, dstPath, decisionID
func (_m *MockDecisionRepository) Copy(srcPath string, dstPath string, decisionID string) error {
	ret := _m.Called(srcPath, dstPath, decisionID)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string) error); ok {
		r0 = rf(srcPath, dstPath, decisionID)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// Create provides a mock function with given fields: modelPath, subFolderPath, decision, decisionContent
func (_m *MockDecisionRepository) Create(modelPath string, subFolderPath string, decision *Decision, decisionContent *DecisionContent) (*Decision, error) {
	ret := _m.Called(modelPath, subFolderPath, decision, decisionContent)

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

	var r0 *Decision
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string, *Decision, *DecisionContent) (*Decision, error)); ok {
		return rf(modelPath, subFolderPath, decision, decisionContent)
	}
	if rf, ok := ret.Get(0).(func(string, string, *Decision, *DecisionContent) *Decision); ok {
		r0 = rf(modelPath, subFolderPath, decision, decisionContent)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*Decision)
		}
	}

	if rf, ok := ret.Get(1).(func(string, string, *Decision, *DecisionContent) error); ok {
		r1 = rf(modelPath, subFolderPath, decision, decisionContent)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// FindDecisionFile provides a mock function with given fields: modelPath, decisionID
func (_m *MockDecisionRepository) FindDecisionFile(modelPath string, decisionID string) (string, error) {
	ret := _m.Called(modelPath, decisionID)

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

	var r0 string
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string) (string, error)); ok {
		return rf(modelPath, decisionID)
	}
	if rf, ok := ret.Get(0).(func(string, string) string); ok {
		r0 = rf(modelPath, decisionID)
	} else {
		r0 = ret.Get(0).(string)
	}

	if rf, ok := ret.Get(1).(func(string, string) error); ok {
		r1 = rf(modelPath, decisionID)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// LoadAllByData provides a mock function with given fields: modelPath
func (_m *MockDecisionRepository) LoadAllByData(modelPath string) ([]Decision, error) {
	ret := _m.Called(modelPath)

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

	var r0 []Decision
	var r1 error
	if rf, ok := ret.Get(0).(func(string) ([]Decision, error)); ok {
		return rf(modelPath)
	}
	if rf, ok := ret.Get(0).(func(string) []Decision); ok {
		r0 = rf(modelPath)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]Decision)
		}
	}

	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(modelPath)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// LoadAllByIndex provides a mock function with given fields: modelPath
func (_m *MockDecisionRepository) LoadAllByIndex(modelPath string) ([]Decision, error) {
	ret := _m.Called(modelPath)

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

	var r0 []Decision
	var r1 error
	if rf, ok := ret.Get(0).(func(string) ([]Decision, error)); ok {
		return rf(modelPath)
	}
	if rf, ok := ret.Get(0).(func(string) []Decision); ok {
		r0 = rf(modelPath)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]Decision)
		}
	}

	if rf, ok := ret.Get(1).(func(string) error); ok {
		r1 = rf(modelPath)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// LoadById provides a mock function with given fields: modelPath, id
func (_m *MockDecisionRepository) LoadById(modelPath string, id string) (*Decision, error) {
	ret := _m.Called(modelPath, id)

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

	var r0 *Decision
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string) (*Decision, error)); ok {
		return rf(modelPath, id)
	}
	if rf, ok := ret.Get(0).(func(string, string) *Decision); ok {
		r0 = rf(modelPath, id)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*Decision)
		}
	}

	if rf, ok := ret.Get(1).(func(string, string) error); ok {
		r1 = rf(modelPath, id)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// LoadByTitle provides a mock function with given fields: modelPath, title
func (_m *MockDecisionRepository) LoadByTitle(modelPath string, title string) (*Decision, error) {
	ret := _m.Called(modelPath, title)

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

	var r0 *Decision
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string) (*Decision, error)); ok {
		return rf(modelPath, title)
	}
	if rf, ok := ret.Get(0).(func(string, string) *Decision); ok {
		r0 = rf(modelPath, title)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*Decision)
		}
	}

	if rf, ok := ret.Get(1).(func(string, string) error); ok {
		r1 = rf(modelPath, title)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// LoadDecisionContent provides a mock function with given fields: modelPath, decisionID
func (_m *MockDecisionRepository) LoadDecisionContent(modelPath string, decisionID string) (*DecisionContent, error) {
	ret := _m.Called(modelPath, decisionID)

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

	var r0 *DecisionContent
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string) (*DecisionContent, error)); ok {
		return rf(modelPath, decisionID)
	}
	if rf, ok := ret.Get(0).(func(string, string) *DecisionContent); ok {
		r0 = rf(modelPath, decisionID)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*DecisionContent)
		}
	}

	if rf, ok := ret.Get(1).(func(string, string) error); ok {
		r1 = rf(modelPath, decisionID)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// LoadDecisionContentRaw provides a mock function with given fields: modelPath, decisionID
func (_m *MockDecisionRepository) LoadDecisionContentRaw(modelPath string, decisionID string) (string, error) {
	ret := _m.Called(modelPath, decisionID)

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

	var r0 string
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string) (string, error)); ok {
		return rf(modelPath, decisionID)
	}
	if rf, ok := ret.Get(0).(func(string, string) string); ok {
		r0 = rf(modelPath, decisionID)
	} else {
		r0 = ret.Get(0).(string)
	}

	if rf, ok := ret.Get(1).(func(string, string) error); ok {
		r1 = rf(modelPath, decisionID)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// OptionExists provides a mock function with given fields: modelPath, decisionID, option
func (_m *MockDecisionRepository) OptionExists(modelPath string, decisionID string, option string) (bool, error) {
	ret := _m.Called(modelPath, decisionID, option)

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

	var r0 bool
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string, string) (bool, error)); ok {
		return rf(modelPath, decisionID, option)
	}
	if rf, ok := ret.Get(0).(func(string, string, string) bool); ok {
		r0 = rf(modelPath, decisionID, option)
	} else {
		r0 = ret.Get(0).(bool)
	}

	if rf, ok := ret.Get(1).(func(string, string, string) error); ok {
		r1 = rf(modelPath, decisionID, option)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ResolveOptionNumber provides a mock function with given fields: modelPath, decisionID, option
func (_m *MockDecisionRepository) ResolveOptionNumber(modelPath string, decisionID string, option string) (int, error) {
	ret := _m.Called(modelPath, decisionID, option)

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

	var r0 int
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string, string) (int, error)); ok {
		return rf(modelPath, decisionID, option)
	}
	if rf, ok := ret.Get(0).(func(string, string, string) int); ok {
		r0 = rf(modelPath, decisionID, option)
	} else {
		r0 = ret.Get(0).(int)
	}

	if rf, ok := ret.Get(1).(func(string, string, string) error); ok {
		r1 = rf(modelPath, decisionID, option)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// Save provides a mock function with given fields: modelPath, decision
func (_m *MockDecisionRepository) Save(modelPath string, decision *Decision) error {
	ret := _m.Called(modelPath, decision)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, *Decision) error); ok {
		r0 = rf(modelPath, decision)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateSection provides a mock function with given fields: modelPath, decisionID, anchorName, lines
func (_m *MockDecisionRepository) UpdateSection(modelPath string, decisionID string, anchorName string, lines []string) error {
	ret := _m.Called(modelPath, decisionID, anchorName, lines)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string, []string) error); ok {
		r0 = rf(modelPath, decisionID, anchorName, lines)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

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

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

	return mock
}
