public void GetCurrentDataContext_Throws_InvalidOperationException_If_No_DataContextBuilder_Specified()
        {
            // Arrange
            HttpContextDataContextManager manager = new HttpContextDataContextManager();
            HttpContextBase context = Mockery.CreateMockHttpContext();
            manager.HttpContextSource = () => context;

            // Act and Assert
            ExceptionAssert.Throws<InvalidOperationException>(() => manager.GetCurrentDataContext(), TargetResources.Error_NoDataContextBuilder);
        }
        public void GetCurrentDataContext_Constructs_New_Context_And_Stores_In_HttpContext_If_No_Current_Context()
        {
            // Arrange
            HttpContextDataContextManager manager = new HttpContextDataContextManager();

            HttpContextBase context = Mockery.CreateMockHttpContext();
            manager.HttpContextSource = () => context;

            DataContext expectedDataContext = new Mock<DataContext>().Object;
            var mockDataContextBuilder = new Mock<DataContextBuilder>();
            mockDataContextBuilder.Setup(b => b.CreateDataContext()).Returns(expectedDataContext);
            manager.DataContextBuilder = mockDataContextBuilder.Object;

            // Act
            DataContext actualDataContext = manager.GetCurrentDataContext();

            // Assert
            Assert.AreSame(expectedDataContext, actualDataContext);
            Assert.AreSame(actualDataContext, context.Items[HttpContextDataContextManager.ContextKey]);
        }
        public void GetCurrentDataContext_Returns_DataContext_In_HttpContext_If_Present()
        {
            // Arrange
            HttpContextDataContextManager manager = new HttpContextDataContextManager();

            HttpContextBase context = Mockery.CreateMockHttpContext();
            manager.HttpContextSource = () => context;

            DataContext expectedDataContext = new Mock<DataContext>().Object;
            context.Items[HttpContextDataContextManager.ContextKey] = expectedDataContext;

            var mockDataContextBuilder = new Mock<DataContextBuilder>();
            mockDataContextBuilder.Never(b => b.CreateDataContext());
            manager.DataContextBuilder = mockDataContextBuilder.Object;

            // Act
            DataContext actualDataContext = manager.GetCurrentDataContext();

            // Assert
            Assert.AreSame(expectedDataContext, actualDataContext);
        }
        public void GetCurrentDataContext_Throws_InvalidOperationException_If_No_HttpContextSource_Specified()
        {
            // Arrange
            HttpContextDataContextManager manager = new HttpContextDataContextManager();

            // Act and Assert
            ExceptionAssert.Throws<InvalidOperationException>(() => manager.GetCurrentDataContext(), TargetResources.Error_NoHttpContextSource);
        }