package binding

import "context"

type fakeBindingService struct {
	binding      Binding
	revision     Revision
	page         BindingPage
	revisionPage RevisionPage
	validation   Validation
	err          error

	createInput         *CreateInput
	updateInput         *UpdateMetadataInput
	validateInput       *ValidateInput
	createRevisionInput *CreateRevisionInput
	activateInput       *ActivateInput
	lifecycleInput      *LifecycleInput
}

func (fake *fakeBindingService) Create(_ context.Context, input CreateInput) (Binding, Revision, error) {
	fake.createInput = &input
	return fake.binding, fake.revision, fake.err
}
func (fake *fakeBindingService) List(context.Context, ListInput) (BindingPage, error) {
	return fake.page, fake.err
}
func (fake *fakeBindingService) Get(context.Context, string, string) (Binding, error) {
	return fake.binding, fake.err
}
func (fake *fakeBindingService) UpdateMetadata(_ context.Context, input UpdateMetadataInput) (Binding, error) {
	fake.updateInput = &input
	return fake.binding, fake.err
}
func (fake *fakeBindingService) Validate(_ context.Context, input ValidateInput) (Validation, error) {
	fake.validateInput = &input
	return fake.validation, fake.err
}
func (fake *fakeBindingService) CreateRevision(_ context.Context, input CreateRevisionInput) (Binding, Revision, error) {
	fake.createRevisionInput = &input
	return fake.binding, fake.revision, fake.err
}
func (fake *fakeBindingService) ListRevisions(context.Context, ListRevisionsInput) (RevisionPage, error) {
	return fake.revisionPage, fake.err
}
func (fake *fakeBindingService) GetRevision(context.Context, string, string, int64) (Revision, error) {
	return fake.revision, fake.err
}
func (fake *fakeBindingService) Activate(_ context.Context, input ActivateInput) (Binding, Revision, error) {
	fake.activateInput = &input
	return fake.binding, fake.revision, fake.err
}
func (fake *fakeBindingService) Disable(_ context.Context, input LifecycleInput) (Binding, error) {
	fake.lifecycleInput = &input
	return fake.binding, fake.err
}
func (fake *fakeBindingService) Archive(_ context.Context, input LifecycleInput) (Binding, error) {
	fake.lifecycleInput = &input
	return fake.binding, fake.err
}
func (fake *fakeBindingService) Restore(_ context.Context, input LifecycleInput) (Binding, error) {
	fake.lifecycleInput = &input
	return fake.binding, fake.err
}
