public void Should_Abandon_Session_If_There_Is_A_Session_Id()
        {
            SessionDatabase.CreateSession(Constants.FullSessionId, Constants.SessionStateSerializedBytes);
            var context = HttpContext.CreateWithSession();

            var session = new SessionState(new SqlSessionStateProvider());

            session.Abandon(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(0);
            SessionDatabase.GetSession(Constants.FullSessionId).ShouldBeNull();
        }
        public void Save_Should_Create_A_New_Session_And_Save_The_Varaibles_To_It()
        {
            var context = HttpContext.CreateWithSession(Constants.SessionState);

            var session = new SessionState(new SqlSessionStateProvider());
            session.Save(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(Constants.SessionStateItemCount);
            context.SessionState[Constants.SessionStateKey1].ShouldEqual(Constants.SessionStateValue1);
            context.SessionState[Constants.SessionStateKey2].ShouldEqual(Constants.SessionStateValue2);
            context.SessionState[Constants.SessionStateKey3].ShouldEqual(Constants.SessionStateValue3);
        }
        public void Save_Should_Create_A_New_Session_And_Save_The_Varaibles_To_It()
        {
            var context = HttpContext.CreateWithSession(Constants.SessionState);

            var session = new SessionState(new SqlSessionStateProvider());

            session.Save(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(Constants.SessionStateItemCount);
            context.SessionState[Constants.SessionStateKey1].ShouldEqual(Constants.SessionStateValue1);
            context.SessionState[Constants.SessionStateKey2].ShouldEqual(Constants.SessionStateValue2);
            context.SessionState[Constants.SessionStateKey3].ShouldEqual(Constants.SessionStateValue3);
        }
        public void Save_Should_Save_Variables_To_The_Active_Session()
        {
            SessionDatabase.CreateSession(Constants.FullSessionId, Constants.SessionStateMultiDataTypeSerializedBytes);
            var context = HttpContext.CreateWithSession(Constants.SessionState);

            var session = new SessionState(new SqlSessionStateProvider());

            session.Save(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(Constants.SessionStateItemCount);
            context.SessionState[Constants.SessionStateKey1].ShouldEqual(Constants.SessionStateValue1);
            context.SessionState[Constants.SessionStateKey2].ShouldEqual(Constants.SessionStateValue2);
            context.SessionState[Constants.SessionStateKey3].ShouldEqual(Constants.SessionStateValue3);
        }
        public void Save_Should_Not_Sync_Incompatable_Data_Types()
        {
            var context = HttpContext.CreateWithSession(Constants.SessionStateMultiDataType);

            var session = new SessionState(new SqlSessionStateProvider());

            session.Save(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(Constants.SessionStateMultiDataTypeValidItemCount);
            context.SessionState[Constants.SessionStateStringKey].ShouldEqual(Constants.SessionStateStringValue);
            context.SessionState[Constants.SessionStateByteKey].ShouldEqual(Constants.SessionStateByteValue);
            context.SessionState[Constants.SessionStateBoolKey].ShouldEqual(Constants.SessionStateBoolValue);
            context.SessionState[Constants.SessionStateShortKey].ShouldEqual(Constants.SessionStateShortValue);
            context.SessionState[Constants.SessionStateIntKey].ShouldEqual(Constants.SessionStateIntValue);
            context.SessionState[Constants.SessionStateDoubleKey].ShouldEqual(Constants.SessionStateDoubleValue);
            context.SessionState[Constants.SessionStateFloatKey].ShouldEqual(Constants.SessionStateFloatValue);
            context.SessionState[Constants.SessionStateDateTimeKey].ShouldEqual(Constants.SessionStateDateTimeValue);
        }
        public void Save_Should_Not_Sync_Incompatable_Data_Types()
        {
            var context = HttpContext.CreateWithSession(Constants.SessionStateMultiDataType);

            var session = new SessionState(new SqlSessionStateProvider());
            session.Save(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(Constants.SessionStateMultiDataTypeValidItemCount);
            context.SessionState[Constants.SessionStateStringKey].ShouldEqual(Constants.SessionStateStringValue);
            context.SessionState[Constants.SessionStateByteKey].ShouldEqual(Constants.SessionStateByteValue);
            context.SessionState[Constants.SessionStateBoolKey].ShouldEqual(Constants.SessionStateBoolValue);
            context.SessionState[Constants.SessionStateShortKey].ShouldEqual(Constants.SessionStateShortValue);
            context.SessionState[Constants.SessionStateIntKey].ShouldEqual(Constants.SessionStateIntValue);
            context.SessionState[Constants.SessionStateDoubleKey].ShouldEqual(Constants.SessionStateDoubleValue);
            context.SessionState[Constants.SessionStateFloatKey].ShouldEqual(Constants.SessionStateFloatValue);
            context.SessionState[Constants.SessionStateDateTimeKey].ShouldEqual(Constants.SessionStateDateTimeValue);
        }
        public void Should_Abandon_Session_If_There_Is_A_Session_Id()
        {
            SessionDatabase.CreateSession(Constants.FullSessionId, Constants.SessionStateSerializedBytes);
            var context = HttpContext.CreateWithSession();

            var session = new SessionState(new SqlSessionStateProvider());
            session.Abandon(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(0);
            SessionDatabase.GetSession(Constants.FullSessionId).ShouldBeNull();
        }
        public void Save_Should_Save_Variables_To_The_Active_Session()
        {
            SessionDatabase.CreateSession(Constants.FullSessionId, Constants.SessionStateMultiDataTypeSerializedBytes);
            var context = HttpContext.CreateWithSession(Constants.SessionState);

            var session = new SessionState(new SqlSessionStateProvider());
            session.Save(context);
            session.Load(context);

            context.SessionState.Count().ShouldEqual(Constants.SessionStateItemCount);
            context.SessionState[Constants.SessionStateKey1].ShouldEqual(Constants.SessionStateValue1);
            context.SessionState[Constants.SessionStateKey2].ShouldEqual(Constants.SessionStateValue2);
            context.SessionState[Constants.SessionStateKey3].ShouldEqual(Constants.SessionStateValue3);
        }