// Code generated by mockery v2.39.1. DO NOT EDIT.

package api_mock

import (
	http "net/http"

	v1 "github.com/AlchemyTelcoSolutions/callisto-so-bff/api/v1"
	model "github.com/AlchemyTelcoSolutions/callisto-so-bff/internal/domain/model"
	mock "github.com/stretchr/testify/mock"
)

// SaleOrderService is an autogenerated mock type for the SaleOrderService type
type SaleOrderService struct {
	mock.Mock
}

type SaleOrderService_Expecter struct {
	mock *mock.Mock
}

func (_m *SaleOrderService) EXPECT() *SaleOrderService_Expecter {
	return &SaleOrderService_Expecter{mock: &_m.Mock}
}

// CreateOrder provides a mock function with given fields: _a0
func (_m *SaleOrderService) CreateOrder(_a0 *http.Request) *model.SaleOrderResponse {
	ret := _m.Called(_a0)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrder")
	}

	var r0 *model.SaleOrderResponse
	if rf, ok := ret.Get(0).(func(*http.Request) *model.SaleOrderResponse); ok {
		r0 = rf(_a0)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.SaleOrderResponse)
		}
	}

	return r0
}

// SaleOrderService_CreateOrder_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateOrder'
type SaleOrderService_CreateOrder_Call struct {
	*mock.Call
}

// CreateOrder is a helper method to define mock.On call
//   - _a0 *http.Request
func (_e *SaleOrderService_Expecter) CreateOrder(_a0 interface{}) *SaleOrderService_CreateOrder_Call {
	return &SaleOrderService_CreateOrder_Call{Call: _e.mock.On("CreateOrder", _a0)}
}

func (_c *SaleOrderService_CreateOrder_Call) Run(run func(_a0 *http.Request)) *SaleOrderService_CreateOrder_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(*http.Request))
	})
	return _c
}

func (_c *SaleOrderService_CreateOrder_Call) Return(_a0 *model.SaleOrderResponse) *SaleOrderService_CreateOrder_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *SaleOrderService_CreateOrder_Call) RunAndReturn(run func(*http.Request) *model.SaleOrderResponse) *SaleOrderService_CreateOrder_Call {
	_c.Call.Return(run)
	return _c
}

// CreateOrderFromAuction provides a mock function with given fields: _a0, _a1
func (_m *SaleOrderService) CreateOrderFromAuction(_a0 *http.Request, _a1 string) *model.SaleOrderResponse {
	ret := _m.Called(_a0, _a1)

	if len(ret) == 0 {
		panic("no return value specified for CreateOrderFromAuction")
	}

	var r0 *model.SaleOrderResponse
	if rf, ok := ret.Get(0).(func(*http.Request, string) *model.SaleOrderResponse); ok {
		r0 = rf(_a0, _a1)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.SaleOrderResponse)
		}
	}

	return r0
}

// SaleOrderService_CreateOrderFromAuction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateOrderFromAuction'
type SaleOrderService_CreateOrderFromAuction_Call struct {
	*mock.Call
}

// CreateOrderFromAuction is a helper method to define mock.On call
//   - _a0 *http.Request
//   - _a1 string
func (_e *SaleOrderService_Expecter) CreateOrderFromAuction(_a0 interface{}, _a1 interface{}) *SaleOrderService_CreateOrderFromAuction_Call {
	return &SaleOrderService_CreateOrderFromAuction_Call{Call: _e.mock.On("CreateOrderFromAuction", _a0, _a1)}
}

func (_c *SaleOrderService_CreateOrderFromAuction_Call) Run(run func(_a0 *http.Request, _a1 string)) *SaleOrderService_CreateOrderFromAuction_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(*http.Request), args[1].(string))
	})
	return _c
}

func (_c *SaleOrderService_CreateOrderFromAuction_Call) Return(_a0 *model.SaleOrderResponse) *SaleOrderService_CreateOrderFromAuction_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *SaleOrderService_CreateOrderFromAuction_Call) RunAndReturn(run func(*http.Request, string) *model.SaleOrderResponse) *SaleOrderService_CreateOrderFromAuction_Call {
	_c.Call.Return(run)
	return _c
}

// ExportASNToFile provides a mock function with given fields: _a0, _a1, _a2
func (_m *SaleOrderService) ExportASNToFile(_a0 *http.Request, _a1 string, _a2 string) *model.SaleOrderExportASNResponse {
	ret := _m.Called(_a0, _a1, _a2)

	if len(ret) == 0 {
		panic("no return value specified for ExportASNToFile")
	}

	var r0 *model.SaleOrderExportASNResponse
	if rf, ok := ret.Get(0).(func(*http.Request, string, string) *model.SaleOrderExportASNResponse); ok {
		r0 = rf(_a0, _a1, _a2)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.SaleOrderExportASNResponse)
		}
	}

	return r0
}

// SaleOrderService_ExportASNToFile_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ExportASNToFile'
type SaleOrderService_ExportASNToFile_Call struct {
	*mock.Call
}

// ExportASNToFile is a helper method to define mock.On call
//   - _a0 *http.Request
//   - _a1 string
//   - _a2 string
func (_e *SaleOrderService_Expecter) ExportASNToFile(_a0 interface{}, _a1 interface{}, _a2 interface{}) *SaleOrderService_ExportASNToFile_Call {
	return &SaleOrderService_ExportASNToFile_Call{Call: _e.mock.On("ExportASNToFile", _a0, _a1, _a2)}
}

func (_c *SaleOrderService_ExportASNToFile_Call) Run(run func(_a0 *http.Request, _a1 string, _a2 string)) *SaleOrderService_ExportASNToFile_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(*http.Request), args[1].(string), args[2].(string))
	})
	return _c
}

func (_c *SaleOrderService_ExportASNToFile_Call) Return(_a0 *model.SaleOrderExportASNResponse) *SaleOrderService_ExportASNToFile_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *SaleOrderService_ExportASNToFile_Call) RunAndReturn(run func(*http.Request, string, string) *model.SaleOrderExportASNResponse) *SaleOrderService_ExportASNToFile_Call {
	_c.Call.Return(run)
	return _c
}

// GetSOSummary provides a mock function with given fields: req
func (_m *SaleOrderService) GetSOSummary(req *http.Request) *model.Response[model.SaleOrderSummaryResponse] {
	ret := _m.Called(req)

	if len(ret) == 0 {
		panic("no return value specified for GetSOSummary")
	}

	var r0 *model.Response[model.SaleOrderSummaryResponse]
	if rf, ok := ret.Get(0).(func(*http.Request) *model.Response[model.SaleOrderSummaryResponse]); ok {
		r0 = rf(req)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.Response[model.SaleOrderSummaryResponse])
		}
	}

	return r0
}

// SaleOrderService_GetSOSummary_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSOSummary'
type SaleOrderService_GetSOSummary_Call struct {
	*mock.Call
}

// GetSOSummary is a helper method to define mock.On call
//   - req *http.Request
func (_e *SaleOrderService_Expecter) GetSOSummary(req interface{}) *SaleOrderService_GetSOSummary_Call {
	return &SaleOrderService_GetSOSummary_Call{Call: _e.mock.On("GetSOSummary", req)}
}

func (_c *SaleOrderService_GetSOSummary_Call) Run(run func(req *http.Request)) *SaleOrderService_GetSOSummary_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(*http.Request))
	})
	return _c
}

func (_c *SaleOrderService_GetSOSummary_Call) Return(_a0 *model.Response[model.SaleOrderSummaryResponse]) *SaleOrderService_GetSOSummary_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *SaleOrderService_GetSOSummary_Call) RunAndReturn(run func(*http.Request) *model.Response[model.SaleOrderSummaryResponse]) *SaleOrderService_GetSOSummary_Call {
	_c.Call.Return(run)
	return _c
}

// UpdateSaleOrder provides a mock function with given fields: _a0, _a1, _a2
func (_m *SaleOrderService) UpdateSaleOrder(_a0 *http.Request, _a1 *v1.UpdateSaleOrderMultipartBody, _a2 string) *model.SaleOrderResponse {
	ret := _m.Called(_a0, _a1, _a2)

	if len(ret) == 0 {
		panic("no return value specified for UpdateSaleOrder")
	}

	var r0 *model.SaleOrderResponse
	if rf, ok := ret.Get(0).(func(*http.Request, *v1.UpdateSaleOrderMultipartBody, string) *model.SaleOrderResponse); ok {
		r0 = rf(_a0, _a1, _a2)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*model.SaleOrderResponse)
		}
	}

	return r0
}

// SaleOrderService_UpdateSaleOrder_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateSaleOrder'
type SaleOrderService_UpdateSaleOrder_Call struct {
	*mock.Call
}

// UpdateSaleOrder is a helper method to define mock.On call
//   - _a0 *http.Request
//   - _a1 *v1.UpdateSaleOrderMultipartBody
//   - _a2 string
func (_e *SaleOrderService_Expecter) UpdateSaleOrder(_a0 interface{}, _a1 interface{}, _a2 interface{}) *SaleOrderService_UpdateSaleOrder_Call {
	return &SaleOrderService_UpdateSaleOrder_Call{Call: _e.mock.On("UpdateSaleOrder", _a0, _a1, _a2)}
}

func (_c *SaleOrderService_UpdateSaleOrder_Call) Run(run func(_a0 *http.Request, _a1 *v1.UpdateSaleOrderMultipartBody, _a2 string)) *SaleOrderService_UpdateSaleOrder_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(*http.Request), args[1].(*v1.UpdateSaleOrderMultipartBody), args[2].(string))
	})
	return _c
}

func (_c *SaleOrderService_UpdateSaleOrder_Call) Return(_a0 *model.SaleOrderResponse) *SaleOrderService_UpdateSaleOrder_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *SaleOrderService_UpdateSaleOrder_Call) RunAndReturn(run func(*http.Request, *v1.UpdateSaleOrderMultipartBody, string) *model.SaleOrderResponse) *SaleOrderService_UpdateSaleOrder_Call {
	_c.Call.Return(run)
	return _c
}

// NewSaleOrderService creates a new instance of SaleOrderService. 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 NewSaleOrderService(t interface {
	mock.TestingT
	Cleanup(func())
}) *SaleOrderService {
	mock := &SaleOrderService{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}
