public void ChangeToCreated_WhenObejectIsInClosingState_Throws(
            IEventStoreConnection connection,
            EventStoreConnectionState state)
        {
            state.ChangeToCreated(connection);
            state.ChangeToClosing();

            Assert.Throws <InvalidOperationException>(() => state.ChangeToCreated(connection));
        }
        public void EnsureConnectionIsActive_WhenObjectIsInClosingState_Throws(
            IEventStoreConnection connection,
            EventStoreConnectionState state)
        {
            state.ChangeToCreated(connection);
            state.ChangeToClosing();

            Assert.Throws <EventStreamConnectionWasClosedException>(
                () => state.EnsureConnectionIsActive());
        }
        public void ChangeToClosing_PropertiesTests(
            IEventStoreConnection connection,
            EventStoreConnectionState state)
        {
            state.ChangeToCreated(connection);
            state.ChangeToClosing();

            Assert.False(state.IsActive);
            Assert.True(state.IsClosing);
            Assert.False(state.IsClosed);
        }
        public void ChangeToClosing_FiresConnectionClosingEvent(
            IEventStoreConnection connection,
            EventStoreConnectionState state)
        {
            var fired = false;

            state.ConnectionClosing += (sender, args) => fired = true;

            state.ChangeToCreated(connection);
            state.ChangeToClosing();

            Assert.True(fired);
        }