/*
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"

	v1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
	mock "github.com/stretchr/testify/mock"
)

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

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

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

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

	return r0
}

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

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

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

	return r0
}

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

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

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

	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
}

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

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

	return mock
}
