public void IngressClassDeleted()
    {
        // Arrange
        var ingressClass = KubeResourceGenerator.CreateIngressClass("yarp", "microsoft.com/ingress-yarp", true);
        var ingress      = KubeResourceGenerator.CreateIngress("ingress-with-class", "ns-test", "yarp");

        _cacheUnderTest.Update(WatchEventType.Added, ingressClass);

        // Act
        _cacheUnderTest.Update(WatchEventType.Deleted, ingressClass);
        _cacheUnderTest.Update(WatchEventType.Added, ingress);

        // Assert
        var ingresses = _cacheUnderTest.GetIngresses().ToArray();

        Assert.Empty(ingresses);
    }
    public void IngressClassModifiedToAddDefault()
    {
        // Arrange
        var ingressClass = KubeResourceGenerator.CreateIngressClass("yarp", "microsoft.com/ingress-yarp", false);
        var ingress      = KubeResourceGenerator.CreateIngress("ingress-with-class", "ns-test", "yarp");

        _cacheUnderTest.Update(WatchEventType.Added, ingressClass);

        // Act
        ingressClass.Metadata.Annotations.Add("ingressclass.kubernetes.io/is-default-class", "true");

        _cacheUnderTest.Update(WatchEventType.Modified, ingressClass);
        _cacheUnderTest.Update(WatchEventType.Added, ingress);

        // Assert
        var ingresses = _cacheUnderTest.GetIngresses().ToArray();

        Assert.Single(ingresses);
    }
    public void IngressModifiedToRemoveClass()
    {
        // Arrange
        var ingressClass = KubeResourceGenerator.CreateIngressClass("yarp", "microsoft.com/ingress-yarp", false);

        _cacheUnderTest.Update(WatchEventType.Added, ingressClass);

        var ingress = KubeResourceGenerator.CreateIngress("ingress-with-class", "ns-test", "yarp");

        _cacheUnderTest.Update(WatchEventType.Added, ingress);

        // Act
        ingress.Spec.IngressClassName = null;
        _cacheUnderTest.Update(WatchEventType.Modified, ingress);

        // Assert
        var ingresses = _cacheUnderTest.GetIngresses().ToArray();

        Assert.Empty(ingresses);
    }
    public void IngressWithoutClassAnnotationTests(string ingressClassName, string controllerName, bool?isDefault, int expectedIngressCount)
    {
        // Arrange
        if (controllerName is not null)
        {
            var ingressClass = KubeResourceGenerator.CreateIngressClass(ingressClassName, controllerName, isDefault);
            _cacheUnderTest.Update(WatchEventType.Added, ingressClass);
        }

        var ingress = KubeResourceGenerator.CreateIngress("ingress-without-class", "ns-test", null);

        // Act
        var change = _cacheUnderTest.Update(WatchEventType.Added, ingress);

        // Assert
        var ingresses = _cacheUnderTest.GetIngresses().ToArray();

        Assert.Equal(expectedIngressCount != 0, change);
        Assert.Equal(expectedIngressCount, ingresses.Length);
    }