public async Task ProcessComandShouldCallOnDemandClientChannel()
        {
            // Arrange
            var command = Dummy.CreateCommand();
            var target  = await GetAndStartTarget();

            // Act
            await target.ProcessCommandAsync(command, CancellationToken);

            // Assert
            OnDemandClientChannel.Received(1).ProcessCommandAsync(command, CancellationToken);
        }
        public async Task StopShouldStopListenerAndFinishOnDemandClientChannel()
        {
            // Arrange
            var target = await GetAndStartTarget();

            // Act
            await target.StopAsync(CancellationToken);

            // Assert
            ChannelListener.Received(1).Stop();
            OnDemandClientChannel.Received(1).FinishAsync(CancellationToken);
        }
        public async Task SendNotificationShouldCallOnDemandClientChannel()
        {
            // Arrange
            var notification = Dummy.CreateNotification(Event.Received);
            var target       = await GetAndStartTarget();

            // Act
            await target.SendNotificationAsync(notification, CancellationToken);

            // Assert
            OnDemandClientChannel.Received(1).SendNotificationAsync(notification, CancellationToken);
        }
        public async Task StartShouldStartListenerAndEstablishOnDemandClientChannel()
        {
            // Arrange
            var target = GetTarget();

            // Act
            await target.StartAsync(ChannelListener, CancellationToken);

            // Assert
            ChannelListener.Received(1).Start(OnDemandClientChannel);
            OnDemandClientChannel.Received(1).EstablishAsync(CancellationToken);
        }
        public async Task SendMessageShouldCallOnDemandClientChannel()
        {
            // Arrange
            var message = Dummy.CreateMessage(Dummy.CreateTextContent());
            var target  = await GetAndStartTarget();

            // Act
            await target.SendMessageAsync(message, CancellationToken);

            // Assert
            OnDemandClientChannel.Received(1).SendMessageAsync(message, CancellationToken);
        }