Example #1
0
        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["CommerceObjectContext"].ConnectionString;

            var productRepository  = new SqlProductRepository(connectionString);
            var basketRepository   = new SqlBasketRepository(connectionString);
            var discountRepository = new SqlDiscountRepository(connectionString);

            var discountPolicy = new RepositoryBasketDiscountPolicy(discountRepository);

            var basketService = new BasketService(basketRepository, discountPolicy);

            var currencyProvider = new CachingCurrencyProvider(new SqlCurrencyProvider(connectionString), TimeSpan.FromHours(1));

            if (controllerType == typeof(BasketController))
            {
                return(new BasketController(basketService, currencyProvider));
            }

            if (controllerType == typeof(HomeController))
            {
                return(new HomeController(productRepository, currencyProvider));
            }

            return(base.GetControllerInstance(requestContext, controllerType));
        }
Example #2
0
        public void CacheTimeoutWillReflectConstructorArgument()
        {
            // Fixture setup
            var fixture = new Fixture();
            var expectedCacheTimeout = fixture.CreateAnonymous <TimeSpan>();
            var sut = new CachingCurrencyProvider(new Mock <CurrencyProvider>().Object, expectedCacheTimeout);
            // Exercise system
            TimeSpan result = sut.CacheTimeout;

            // Verify outcome
            Assert.Equal <TimeSpan>(expectedCacheTimeout, result);
            // Teardown
        }
        protected override IController GetControllerInstance(
            RequestContext requestContext, Type controllerType)
        {
            // Creates the dependencies
            string connectionString =
                ConfigurationManager.ConnectionStrings
                ["CommerceObjectContext"].ConnectionString;

            var productRepository =
                new SqlProductRepository(connectionString);
            var basketRepository =
                new SqlBasketRepository(connectionString);
            var discountRepository =
                new SqlDiscountRepository(connectionString);

            var discountPolicy =
                new RepositoryBasketDiscountPolicy(discountRepository);

            var basketService =
                new BasketService(basketRepository, discountPolicy);

            var currencyProvider = new CachingCurrencyProvider(
                new SqlCurrencyProvider(connectionString),
                TimeSpan.FromHours(1));

            // returns when the appropriate controller is found
            if (controllerType == typeof(BasketController))
            {
                return(new BasketController(
                           basketService, currencyProvider));
            }
            if (controllerType == typeof(HomeController))
            {
                return(new HomeController(
                           productRepository, currencyProvider));
            }

            // handles types not specifically requested for by using their default constructor.
            // This uses bastard injection, and should be avoided in your own code base when possible
            return(base.GetControllerInstance(requestContext, controllerType));
        }