GetCacheStrategyPublic() public method

public GetCacheStrategyPublic ( IDependencyScope scope, _IInvocation invocation, object>.IDictionary invocationContext ) : ICacheStrategy
scope IDependencyScope
invocation _IInvocation
invocationContext object>.IDictionary
return ICacheStrategy
Example #1
0
        public void Should_try_to_resolve_strategy_provider_from_scope_first()
        {
            var scope = Substitute.For <IDependencyScope>();

            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = Substitute.For <ICacheStrategy>().GetType()
            };

            var provider         = Substitute.For <ICacheStrategyProvider>();
            var expectedStrategy = Substitute.For <ICacheStrategy>();

            provider.GetStrategy(Arg.Any <_IInvocation>(), Arg.Any <IDictionary <string, object> >()).Returns(expectedStrategy);
            scope.GetService(Arg.Is <Type>(t => t == typeof(ICacheStrategyProvider))).Returns(provider);

            // Action
            var startegy = att.GetCacheStrategyPublic(scope, invocation, invocationContext);

            // Assert
            scope.Received(1).GetService(Arg.Is <Type>(t => t == att.CacheStrategyType));
            Assert.That(startegy == expectedStrategy);
        }
Example #2
0
        public void Should_be_able_to_resolve_by_type_from_scope()
        {
            var scop    = Substitute.For <IDependencyScope>();
            var request = CreateHttpRequestMessage(scop);

            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };
            var cacheStrategy = Substitute.For <ICacheStrategy>();

            scop.GetService(cacheStrategy.GetType()).Returns(cacheStrategy);
            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = cacheStrategy.GetType()
            };

            // Action
            var startegy = att.GetCacheStrategyPublic(request, invocation, invocationContext);

            // Assert
            Assert.AreSame(cacheStrategy, startegy);
            scop.Received(1).GetService(Arg.Is <Type>(t => t == att.CacheStrategyType));
        }
Example #3
0
        public void Should_return_WebApiCacheStrategy_by_default()
        {
            // Arrange
            var scope             = Substitute.For <IDependencyScope>();
            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };

            var att = new OutputCacheAttributeWithPublicMethods();

            // Action
            var startegy = att.GetCacheStrategyPublic(scope, invocation, invocationContext);

            // Assert
            Assert.That(startegy is WebApiCacheStrategy);
        }
Example #4
0
        public void Should_be_able_to_resolve_from_provider_when_CacheStrategyType_not_available()
        {
            var request = CreateHttpRequestMessage();

            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };

            var att = new OutputCacheAttributeWithPublicMethods();

            // Action
            var startegy = att.GetCacheStrategyPublic(request, invocation, invocationContext);

            // Assert
            Assert.IsInstanceOf <WebApiCacheStrategy>(startegy);
        }
Example #5
0
        public void Should_throw_if_cannot_resolve_srategy_from_scope()
        {
            var request           = CreateHttpRequestMessage();
            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };
            var cacheStrategy = Substitute.For <ICacheStrategy>();

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = cacheStrategy.GetType()
            };

            // Action
            Assert.Throws <Exception>(() => { att.GetCacheStrategyPublic(request, invocation, invocationContext); });
        }
Example #6
0
        public void Should_throw_exception_if_cannot_find_cache_strategy()
        {
            var request = CreateHttpRequestMessage();

            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };

            var att = new OutputCacheAttributeWithPublicMethods();

            Global.CacheStrategyProvider = Substitute.For <ICacheStrategyProvider>();
            Global.CacheStrategyProvider.GetStrategy(Arg.Any <_IInvocation>(), Arg.Any <IDictionary <string, object> >()).Returns(default(ICacheStrategy));

            // Action
            Assert.Throws <Exception>(() => { att.GetCacheStrategyPublic(request, invocation, invocationContext); });
        }
        public void Should_return_WebApiCacheStrategy_by_default()
        {
            // Arrange
            var scope = Substitute.For<IDependencyScope>();
            var invocation = Substitute.For<_IInvocation>();
            var invocationContext = new Dictionary<string, object>
            {
                {WebApiExtensions.__webApi, true}
            };

            var att = new OutputCacheAttributeWithPublicMethods();

            // Action
            var startegy = att.GetCacheStrategyPublic(scope, invocation, invocationContext);

            // Assert
            Assert.That(startegy is WebApiCacheStrategy);
        }
Example #8
0
        public void Should_try_to_resolve_by_type()
        {
            var scope             = Substitute.For <IDependencyScope>();
            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = Substitute.For <ICacheStrategy>().GetType()
            };

            // Action
            var startegy = att.GetCacheStrategyPublic(scope, invocation, invocationContext);

            // Assert
            scope.Received(1).GetService(Arg.Is <Type>(t => t == att.CacheStrategyType));
            Assert.That(startegy is WebApiCacheStrategy);
        }
        public void Should_try_to_resolve_by_type()
        {
            var scope = Substitute.For<IDependencyScope>();
            var invocation = Substitute.For<_IInvocation>();
            var invocationContext = new Dictionary<string, object>
            {
                {WebApiExtensions.__webApi, true}
            };

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = Substitute.For<ICacheStrategy>().GetType()
            };

            // Action
            var startegy = att.GetCacheStrategyPublic(scope, invocation, invocationContext);

            // Assert
            scope.Received(1).GetService(Arg.Is<Type>(t => t == att.CacheStrategyType));
            Assert.That(startegy is WebApiCacheStrategy);
        }
Example #10
0
        public void Should_throw_if_cannot_resolve_srategy()
        {
            var scope = Substitute.For <IDependencyScope>();

            var invocation        = Substitute.For <_IInvocation>();
            var invocationContext = new Dictionary <string, object>
            {
                { WebApiExtensions.__webApi, true }
            };

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = Substitute.For <ICacheStrategy>().GetType()
            };

            var provider = Substitute.For <ICacheStrategyProvider>();

            provider.GetStrategy(Arg.Any <_IInvocation>(), Arg.Any <IDictionary <string, object> >()).Returns((ICacheStrategy)null);
            scope.GetService(Arg.Is <Type>(t => t == typeof(ICacheStrategyProvider))).Returns(provider);

            // Action
            Assert.Throws <Exception>(() => { att.GetCacheStrategyPublic(scope, invocation, invocationContext); });
        }
        public void Should_try_to_resolve_strategy_provider_from_scope_first()
        {
            var scope = Substitute.For<IDependencyScope>();

            var invocation = Substitute.For<_IInvocation>();
            var invocationContext = new Dictionary<string, object>
            {
                {WebApiExtensions.__webApi, true}
            };

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = Substitute.For<ICacheStrategy>().GetType()
            };

            var provider = Substitute.For<ICacheStrategyProvider>();
            var expectedStrategy = Substitute.For<ICacheStrategy>();
            provider.GetStrategy(Arg.Any<_IInvocation>(), Arg.Any<IDictionary<string, object>>()).Returns(expectedStrategy);
            scope.GetService(Arg.Is<Type>(t => t == typeof(ICacheStrategyProvider))).Returns(provider);

            // Action
            var startegy = att.GetCacheStrategyPublic(scope, invocation, invocationContext);

            // Assert
            scope.Received(1).GetService(Arg.Is<Type>(t => t == att.CacheStrategyType));
            Assert.That(startegy == expectedStrategy);
        }
        public void Should_throw_if_cannot_resolve_srategy()
        {
            var scope = Substitute.For<IDependencyScope>();

            var invocation = Substitute.For<_IInvocation>();
            var invocationContext = new Dictionary<string, object>
            {
                {WebApiExtensions.__webApi, true}
            };

            var att = new OutputCacheAttributeWithPublicMethods
            {
                CacheStrategyType = Substitute.For<ICacheStrategy>().GetType()
            };

            var provider = Substitute.For<ICacheStrategyProvider>();
            provider.GetStrategy(Arg.Any<_IInvocation>(), Arg.Any<IDictionary<string, object>>()).Returns((ICacheStrategy)null);
            scope.GetService(Arg.Is<Type>(t => t == typeof(ICacheStrategyProvider))).Returns(provider);

            // Action
            Assert.Throws<Exception>(() => { att.GetCacheStrategyPublic(scope, invocation, invocationContext); });
        }