public void HttpContextStorageProvider_Clear_ClearsStorageCollection()
        {
            //Arrange
            var methodInvocationToStore = new MethodInvocation();
            storageProvider.Store(methodInvocationToStore);

            //Act
            storageProvider.Clear();

            //Assert
            Assert.That(((Stack<MethodInvocation>)httpContext.Items[storageKey]).Count == 0);
        }
        public void HttpContextStorageProvider_Store_AddsElementToStorage()
        {
            //Arrange
            var expectedMethodName = "HelloWorld";
            var methodInvocationToStore = new MethodInvocation { MethodName = expectedMethodName };

            //Act
            storageProvider.Store(methodInvocationToStore);

            //Assert
            Assert.That(((Stack<MethodInvocation>)httpContext.Items[storageKey])
                  .Pop()
                  .MethodName == expectedMethodName);
        }
        public void HttpContextStorageProvider_Store_RetrieveElementFromStorage()
        {
            //Arrange
            var expectedMethodName = "HelloWorld";
            var methodInvocationToStore = new MethodInvocation { MethodName = expectedMethodName };
            storageProvider.Store(methodInvocationToStore);

            //Act
            MethodInvocation retrievedMethodInvocationElement = null;
            foreach (var element in storageProvider.Retrieve())
            {
                retrievedMethodInvocationElement = element;
            }

            //Assert
            Assert.That(retrievedMethodInvocationElement.MethodName == expectedMethodName);
        }
        protected virtual void StoreMethodInvocation(MethodInvocation methodInvocation)
        {
            if (StorageProvider == null)
            {
                StorageProvider = StorageFactory.Get();
            }

            StorageProvider.Store(methodInvocation);
        }