public void Handle_WhenAdvisoryDelayGreaterThanZero_ShouldSetAdvisoryDelay()
        {
            // Arrange
            const int delayTime = 100;
            Mock<IDateTime> dateTimeMock = new Mock<IDateTime>();
            dateTimeMock.Setup(m => m.UtcNow).Returns(new DateTimeWrap(2016, 2, 1));
            long expected = new DateTime(2016, 2, 1).Ticks + delayTime;

            var input =
                new JObject(
                    new JProperty(
                        "result",
                        new JObject(
                            new JProperty(JsonRpcConstants.ADVISORY_DELAY_PARAMETER_NAME, delayTime)
                         )
                     )
                 );

            // Act
            AdvisoryDelayHandler target = new AdvisoryDelayHandler(dateTimeMock.Object);
            var actual = target.Handle(null, input.ToString());
            long advisoryDelay = UnitTestHelper.GetPrivateProperty<long>(target, "_advisoryDelay");

            // Assert
            actual.Should().Be.True();
            advisoryDelay.Should().Equal(expected);
        }
        public void Handle_WhenAdvisoryDelayIsZero_ShouldSetAdvisoryDelayToZero()
        {
            // Arrange
            const long expected = 0;

            var input = new JObject(
                new JProperty("result",
                    new JObject(
                        new JProperty(JsonRpcConstants.ADVISORY_DELAY_PARAMETER_NAME, expected)
                        ))
                );

            // Act
            AdvisoryDelayHandler target = new AdvisoryDelayHandler();
            var actual = target.Handle(null, input.ToString());
            long advisoryDelay = UnitTestHelper.GetPrivateProperty<long>(target, "_advisoryDelay");

            // Assert
            actual.Should().Be.True();
            advisoryDelay.Should().Equal(expected);
        }