public void GivenFixtureWhenNotStreamingThenValidateStreamReturnsTrue()
        {
            //
            //Arrange
            //
            var resourceSummary = new Summary {
                Sequence = 5
            };

            _resourceFacadeMock.SetupGet(o => o.Content).Returns(resourceSummary);
            int currentSequence = 1;

            _settings.SetupGet(s => s.StreamSafetyThreshold).Returns(3);
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool streamIsValid = streamHealthCheckValidation.IsSequenceValid(
                _resourceFacadeMock.Object,
                It.IsNotIn(StreamListenerState.Streaming),
                currentSequence);

            //
            //Assert
            //
            Assert.IsTrue(streamIsValid);
        }
        public void GivenFixtureWhenInSetupAndNotAllowedStreamingThenCanConnectToStreamServerReturnsFalse()
        {
            //
            //Arrange
            //
            var resourceSummary = new Summary {
                MatchStatus = (int)MatchStatus.Setup
            };

            _resourceFacadeMock.SetupGet(o => o.Content).Returns(resourceSummary);
            _settings.SetupGet(o => o.AllowFixtureStreamingInSetupMode).Returns(false);
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool canConnectToStreamServer = streamHealthCheckValidation.CanConnectToStreamServer(
                _resourceFacadeMock.Object,
                It.IsNotIn(StreamListenerState.Streaming));

            //
            //Assert
            //
            Assert.IsFalse(canConnectToStreamServer);
        }
        public void GivenFixtureWhenInSetupAndStreamingThenValidateStreamReturnsFalse()
        {
            //
            //Arrange
            //
            var resourceSummary = new Summary {
                Sequence = 5, MatchStatus = (int)MatchStatus.Setup
            };

            _resourceFacadeMock.SetupGet(o => o.Content).Returns(resourceSummary);
            int currentSequence = 1;

            _settings.SetupGet(s => s.StreamSafetyThreshold).Returns(3);
            _settings.SetupGet(s => s.AllowFixtureStreamingInSetupMode).Returns(true);
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool streamIsValid = streamHealthCheckValidation.IsSequenceValid(
                _resourceFacadeMock.Object,
                StreamListenerState.Streaming,
                currentSequence);

            //
            //Assert
            //
            Assert.IsFalse(streamIsValid);
        }
        public void GivenFixtureStateNullShouldSuspendOnDisconnectionReturnsTrue()
        {
            //
            //Arrange
            //
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool shouldSuspendOnDisconnection = streamHealthCheckValidation.ShouldSuspendOnDisconnection(
                null,
                It.IsAny <DateTime?>());

            //
            //Assert
            //
            Assert.IsTrue(shouldSuspendOnDisconnection);
        }
        public void GivenFixtureStartTimeNullShouldSuspendOnDisconnectionReturnsTrue()
        {
            //
            //Arrange
            //
            var fixtureState = new FixtureState();
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool shouldSuspendOnDisconnection = streamHealthCheckValidation.ShouldSuspendOnDisconnection(
                fixtureState,
                null);

            //
            //Assert
            //
            Assert.IsTrue(shouldSuspendOnDisconnection);
        }
        public void GivenFixtureWhenStreamingThenCanConnectToStreamServerReturnsFalse()
        {
            //
            //Arrange
            //
            _resourceFacadeMock.SetupGet(o => o.Content).Returns(new Summary());
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool canConnectToStreamServer = streamHealthCheckValidation.CanConnectToStreamServer(
                _resourceFacadeMock.Object,
                StreamListenerState.Streaming);

            //
            //Assert
            //
            Assert.IsFalse(canConnectToStreamServer);
        }
        public void GivenFixtureStateNotNullAndStartTimeNotNullShouldSuspendOnDisconnectionReturnsTrue()
        {
            //
            //Arrange
            //
            var fixtureState = new FixtureState();

            _settings.SetupGet(o => o.DisablePrematchSuspensionOnDisconnection).Returns(false);
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool shouldSuspendOnDisconnection = streamHealthCheckValidation.ShouldSuspendOnDisconnection(
                fixtureState,
                It.IsAny <DateTime>());

            //
            //Assert
            //
            Assert.IsTrue(shouldSuspendOnDisconnection);
        }
        public void GivenFixtureStateAndStartTimeAreInvalidThenShouldSuspendOnDisconnectionReturnsFalse()
        {
            //
            //Arrange
            //
            var fixtureState = new FixtureState();

            _settings.SetupGet(o => o.DisablePrematchSuspensionOnDisconnection).Returns(true);
            _settings.SetupGet(o => o.PreMatchSuspensionBeforeStartTimeInMins).Returns(5);
            var streamHealthCheckValidation = new StreamHealthCheckValidation(_settings.Object);

            //
            //Act
            //
            bool shouldSuspendOnDisconnection = streamHealthCheckValidation.ShouldSuspendOnDisconnection(
                fixtureState,
                DateTime.UtcNow.AddMinutes(10));

            //
            //Assert
            //
            Assert.IsFalse(shouldSuspendOnDisconnection);
        }