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

package mocks

import (
	models "github.com/caraml-dev/merlin/models"
	mock "github.com/stretchr/testify/mock"
)

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

// Delete provides a mock function with given fields: modelID, versionID
func (_m *DeploymentStorage) Delete(modelID models.ID, versionID models.ID) error {
	ret := _m.Called(modelID, versionID)

	var r0 error
	if rf, ok := ret.Get(0).(func(models.ID, models.ID) error); ok {
		r0 = rf(modelID, versionID)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// GetFirstSuccessModelVersionPerModel provides a mock function with given fields:
func (_m *DeploymentStorage) GetFirstSuccessModelVersionPerModel() (map[models.ID]models.ID, error) {
	ret := _m.Called()

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

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

	return r0, r1
}

// GetLatestDeployment provides a mock function with given fields: modelID, versionID
func (_m *DeploymentStorage) GetLatestDeployment(modelID models.ID, versionID models.ID) (*models.Deployment, error) {
	ret := _m.Called(modelID, versionID)

	var r0 *models.Deployment
	var r1 error
	if rf, ok := ret.Get(0).(func(models.ID, models.ID) (*models.Deployment, error)); ok {
		return rf(modelID, versionID)
	}
	if rf, ok := ret.Get(0).(func(models.ID, models.ID) *models.Deployment); ok {
		r0 = rf(modelID, versionID)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*models.Deployment)
		}
	}

	if rf, ok := ret.Get(1).(func(models.ID, models.ID) error); ok {
		r1 = rf(modelID, versionID)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListInModel provides a mock function with given fields: model
func (_m *DeploymentStorage) ListInModel(model *models.Model) ([]*models.Deployment, error) {
	ret := _m.Called(model)

	var r0 []*models.Deployment
	var r1 error
	if rf, ok := ret.Get(0).(func(*models.Model) ([]*models.Deployment, error)); ok {
		return rf(model)
	}
	if rf, ok := ret.Get(0).(func(*models.Model) []*models.Deployment); ok {
		r0 = rf(model)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*models.Deployment)
		}
	}

	if rf, ok := ret.Get(1).(func(*models.Model) error); ok {
		r1 = rf(model)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListInModelVersion provides a mock function with given fields: modelID, versionID, endpointUUID
func (_m *DeploymentStorage) ListInModelVersion(modelID string, versionID string, endpointUUID string) ([]*models.Deployment, error) {
	ret := _m.Called(modelID, versionID, endpointUUID)

	var r0 []*models.Deployment
	var r1 error
	if rf, ok := ret.Get(0).(func(string, string, string) ([]*models.Deployment, error)); ok {
		return rf(modelID, versionID, endpointUUID)
	}
	if rf, ok := ret.Get(0).(func(string, string, string) []*models.Deployment); ok {
		r0 = rf(modelID, versionID, endpointUUID)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*models.Deployment)
		}
	}

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

	return r0, r1
}

// OnDeploymentSuccess provides a mock function with given fields: newDeployment
func (_m *DeploymentStorage) OnDeploymentSuccess(newDeployment *models.Deployment) error {
	ret := _m.Called(newDeployment)

	var r0 error
	if rf, ok := ret.Get(0).(func(*models.Deployment) error); ok {
		r0 = rf(newDeployment)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// Save provides a mock function with given fields: deployment
func (_m *DeploymentStorage) Save(deployment *models.Deployment) (*models.Deployment, error) {
	ret := _m.Called(deployment)

	var r0 *models.Deployment
	var r1 error
	if rf, ok := ret.Get(0).(func(*models.Deployment) (*models.Deployment, error)); ok {
		return rf(deployment)
	}
	if rf, ok := ret.Get(0).(func(*models.Deployment) *models.Deployment); ok {
		r0 = rf(deployment)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*models.Deployment)
		}
	}

	if rf, ok := ret.Get(1).(func(*models.Deployment) error); ok {
		r1 = rf(deployment)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// Undeploy provides a mock function with given fields: modelID, versionID, endpointUUID
func (_m *DeploymentStorage) Undeploy(modelID string, versionID string, endpointUUID string) error {
	ret := _m.Called(modelID, versionID, endpointUUID)

	var r0 error
	if rf, ok := ret.Get(0).(func(string, string, string) error); ok {
		r0 = rf(modelID, versionID, endpointUUID)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

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

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

	return mock
}
