public void InvokeIHubProxyProvider_InvokeMethod_WithCorrectParameters()
        {
            // Arrange
            var commandUtilizationUpdateStrategy = new Mock <ICommandUtilizationUpdateStrategy>();
            var signalRHubConnectionService      = new Mock <ISignalRHubConnectionService>();
            var commandJsonConvertProvider       = new Mock <ICommandJsonConvertProvider>();
            var remoteUserProvider = new Mock <IRemoteUserProvider>();

            var hubProxyProvider = new Mock <IHubProxyProvider>();

            signalRHubConnectionService.Setup(s => s.GetHubProxyProvider(It.IsAny <string>())).Returns(hubProxyProvider.Object);

            var signalRCommandUtilizationStrategy = new MockSignalRCommandUtilizationStrategy(commandUtilizationUpdateStrategy.Object, signalRHubConnectionService.Object, commandJsonConvertProvider.Object, remoteUserProvider.Object);

            var command = new Mock <ICommand>();

            var expectedHubMethodName     = "SendCommand";
            var expectedParsingSessionId  = Guid.NewGuid().ToString();
            var expectedSerializedCommand = "serialized command";

            commandJsonConvertProvider.Setup(p => p.SerializeCommand(It.IsAny <ICommand>())).Returns(expectedSerializedCommand);
            signalRCommandUtilizationStrategy.ParsingSessionId = expectedParsingSessionId;

            // Act
            signalRCommandUtilizationStrategy.UtilizeCommand(command.Object);

            // Assert
            hubProxyProvider.Verify(p => p.Invoke(expectedHubMethodName, expectedParsingSessionId, expectedSerializedCommand), Times.Once);
        }
        public void InvokeIJsonConvertProvider_SerializeObjectMethod_WithCorrectParameter()
        {
            // Arrange
            var commandUtilizationUpdateStrategy = new Mock <ICommandUtilizationUpdateStrategy>();
            var signalRHubConnectionService      = new Mock <ISignalRHubConnectionService>();
            var commandJsonConvertProvider       = new Mock <ICommandJsonConvertProvider>();
            var remoteUserProvider = new Mock <IRemoteUserProvider>();

            var hubProxyProvider = new Mock <IHubProxyProvider>();

            signalRHubConnectionService.Setup(s => s.GetHubProxyProvider(It.IsAny <string>())).Returns(hubProxyProvider.Object);

            var signalRCommandUtilizationStrategy = new MockSignalRCommandUtilizationStrategy(commandUtilizationUpdateStrategy.Object, signalRHubConnectionService.Object, commandJsonConvertProvider.Object, remoteUserProvider.Object);

            signalRCommandUtilizationStrategy.ParsingSessionId = "fake parsing session id";

            var command = new Mock <ICommand>();

            // Act
            signalRCommandUtilizationStrategy.UtilizeCommand(command.Object);

            // Assert
            commandJsonConvertProvider.Verify(p => p.SerializeCommand(command.Object), Times.Once);
        }