/*
Copyright 2020 VMware, Inc.
SPDX-License-Identifier: Apache-2.0
*/

package testutil

import "github.com/suzerain-io/controller-go"

type ObservableWithInformerOption struct {
	informerToFilterMap map[controller.InformerGetter]controller.Filter
}

func NewObservableWithInformerOption() *ObservableWithInformerOption {
	return &ObservableWithInformerOption{
		informerToFilterMap: make(map[controller.InformerGetter]controller.Filter),
	}
}

func (i *ObservableWithInformerOption) WithInformer(
	getter controller.InformerGetter,
	filter controller.Filter,
	opt controller.InformerOption,
) controller.Option {
	i.informerToFilterMap[getter] = filter
	return controller.WithInformer(getter, filter, opt)
}

func (i *ObservableWithInformerOption) GetFilterForInformer(getter controller.InformerGetter) controller.Filter {
	return i.informerToFilterMap[getter]
}