/*
Copyright 2024 chideat.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package mocks

import (
	context "context"

	mock "github.com/stretchr/testify/mock"
	v1 "k8s.io/api/core/v1"
)

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

// CreateIfNotExistsService provides a mock function with given fields: ctx, namespace, service
func (_m *Service) CreateIfNotExistsService(ctx context.Context, namespace string, service *v1.Service) error {
	ret := _m.Called(ctx, namespace, service)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateIfServiceChanged provides a mock function with given fields: ctx, namespace, service
func (_m *Service) CreateOrUpdateIfServiceChanged(ctx context.Context, namespace string, service *v1.Service) error {
	ret := _m.Called(ctx, namespace, service)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateOrUpdateService provides a mock function with given fields: ctx, namespace, service
func (_m *Service) CreateOrUpdateService(ctx context.Context, namespace string, service *v1.Service) error {
	ret := _m.Called(ctx, namespace, service)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateService provides a mock function with given fields: ctx, namespace, service
func (_m *Service) CreateService(ctx context.Context, namespace string, service *v1.Service) error {
	ret := _m.Called(ctx, namespace, service)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteService provides a mock function with given fields: ctx, namespace, name
func (_m *Service) DeleteService(ctx context.Context, namespace string, name string) error {
	ret := _m.Called(ctx, namespace, name)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) error); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// GetService provides a mock function with given fields: ctx, namespace, name
func (_m *Service) GetService(ctx context.Context, namespace string, name string) (*v1.Service, error) {
	ret := _m.Called(ctx, namespace, name)

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

	var r0 *v1.Service
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1.Service, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1.Service); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1.Service)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetServiceByLabels provides a mock function with given fields: ctx, namespace, labelsMap
func (_m *Service) GetServiceByLabels(ctx context.Context, namespace string, labelsMap map[string]string) (*v1.ServiceList, error) {
	ret := _m.Called(ctx, namespace, labelsMap)

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

	var r0 *v1.ServiceList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*v1.ServiceList, error)); ok {
		return rf(ctx, namespace, labelsMap)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *v1.ServiceList); ok {
		r0 = rf(ctx, namespace, labelsMap)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1.ServiceList)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok {
		r1 = rf(ctx, namespace, labelsMap)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListServices provides a mock function with given fields: ctx, namespace
func (_m *Service) ListServices(ctx context.Context, namespace string) (*v1.ServiceList, error) {
	ret := _m.Called(ctx, namespace)

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

	var r0 *v1.ServiceList
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (*v1.ServiceList, error)); ok {
		return rf(ctx, namespace)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) *v1.ServiceList); ok {
		r0 = rf(ctx, namespace)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1.ServiceList)
		}
	}

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

	return r0, r1
}

// UpdateIfSelectorChangedService provides a mock function with given fields: ctx, namespace, service
func (_m *Service) UpdateIfSelectorChangedService(ctx context.Context, namespace string, service *v1.Service) error {
	ret := _m.Called(ctx, namespace, service)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// UpdateService provides a mock function with given fields: ctx, namespace, service
func (_m *Service) UpdateService(ctx context.Context, namespace string, service *v1.Service) error {
	ret := _m.Called(ctx, namespace, service)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, *v1.Service) error); ok {
		r0 = rf(ctx, namespace, service)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

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

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

	return mock
}
