using System.Reflection;
using Shouldly;
using ZB.MOM.NatsNet.Server;

namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;

public sealed class JetStreamClusterConsumersGroupCTests
{
    [Fact] // T:1676
    public void JsClusteredStreamUpdateRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredStreamUpdateRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1677
    public void JsClusteredStreamDeleteRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredStreamDeleteRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1678
    public void JsClusteredStreamPurgeRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredStreamPurgeRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1679
    public void JsClusteredStreamRestoreRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredStreamRestoreRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1680
    public void AllPeersOffline_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("AllPeersOffline", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1681
    public void JsClusteredStreamListRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredStreamListRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1682
    public void JsClusteredConsumerListRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredConsumerListRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1683
    public void EncodeStreamPurge_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("EncodeStreamPurge", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1684
    public void DecodeStreamPurge_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("DecodeStreamPurge", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1685
    public void JsClusteredConsumerDeleteRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredConsumerDeleteRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1686
    public void EncodeMsgDelete_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("EncodeMsgDelete", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1687
    public void DecodeMsgDelete_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("DecodeMsgDelete", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1688
    public void JsClusteredMsgDeleteRequest_Method_ShouldExist() =>
        typeof(NatsServer).GetMethod("JsClusteredMsgDeleteRequest", BindingFlags.Instance | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1689
    public void EncodeAddStreamAssignment_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("EncodeAddStreamAssignment", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1690
    public void EncodeUpdateStreamAssignment_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("EncodeUpdateStreamAssignment", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1691
    public void EncodeDeleteStreamAssignment_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("EncodeDeleteStreamAssignment", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1692
    public void DecodeStreamAssignment_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("DecodeStreamAssignment", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();

    [Fact] // T:1693
    public void DecodeStreamAssignmentConfig_Method_ShouldExist() =>
        typeof(JetStreamCluster).GetMethod("DecodeStreamAssignmentConfig", BindingFlags.Static | BindingFlags.NonPublic).ShouldNotBeNull();
}
