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)); }
public void SutIsBasketDiscountPolicy(RepositoryBasketDiscountPolicy sut) { // Fixture setup // Exercise system // Verify outcome Assert.IsAssignableFrom<BasketDiscountPolicy>(sut); // Teardown }
public void SutIsBasketDiscountPolicy(RepositoryBasketDiscountPolicy sut) { // Fixture setup // Exercise system // Verify outcome Assert.IsAssignableFrom <BasketDiscountPolicy>(sut); // Teardown }
public void RepositoryIsCorrect([Frozen]DiscountRepository expectedRepository, RepositoryBasketDiscountPolicy sut) { // Fixture setup // Exercise system DiscountRepository result = sut.Repository; // Verify outcome Assert.Equal(expectedRepository, result); // Teardown }
public void OriginalCommerceExampleFragment(string connectionString) { var discountRepository = new SqlDiscountRepository(connectionString); var discountPolicy = new RepositoryBasketDiscountPolicy( discountRepository); }
public void TwoConsumersSharingOneDependency(string connectionString) { var repository = new SqlDiscountRepository(connectionString); var discountPolicy = new RepositoryBasketDiscountPolicy(repository); var campaign = new DiscountCampaign(repository); }
public IController ResolveHomeController() { // Delegates resolution of DiscountRepository to separate method var discountPolicy = new RepositoryBasketDiscountPolicy(ResolveDiscountRepository()); // Delegates resolution of DiscountRepository to separate method var campaign = new DiscountCampaign(ResolveDiscountRepository()); return(new HomeController(campaign, discountPolicy)); }
public IController ResolveHomeController() { var discountPolicy = new RepositoryBasketDiscountPolicy( this.ResolveDiscountRepository()); var campaign = new DiscountCampaign( this.ResolveDiscountRepository()); return(new HomeController( campaign, discountPolicy)); }
public void TwoConsumersRequiringTheSameDependencyButConsumingSeperateInstance(string connectionString) { var repositoryForPolicy = new SqlDiscountRepository(connectionString); var repositoryForCampaign = new SqlDiscountRepository(connectionString); var discountPolicy = new RepositoryBasketDiscountPolicy( repositoryForPolicy); var campaign = new DiscountCampaign(repositoryForCampaign); }
public IController ResolveHomeController() { var connStr = ConfigurationManager. ConnectionStrings["CommerceObjectContext"]. ConnectionString; // acts as a locally scoped singleton var repository = new SqlDiscountRepository(connStr); // instance of repository is only shared with objects in this graph, // and not others var discountCampaign = new DiscountCampaign(repository); var discountPolicy = new RepositoryBasketDiscountPolicy(repository); return(new HomeController(discountCampaign, discountPolicy)); }
public IController ResolveHomeController() { var connStr = ConfigurationManager .ConnectionStrings["CommerceObjectContext"] .ConnectionString; var repository = new SqlDiscountRepository(connStr); var discountCampaign = new DiscountCampaign(repository); var discountPolicy = new RepositoryBasketDiscountPolicy(repository); return(new HomeController(discountCampaign, discountPolicy)); }
internal static BasketManager ResolveManager() { BasketRepository basketRepository = new SqlBasketRepository(BasketContainer.connectionString); DiscountRepository discountRepository = new SqlDiscountRepository(BasketContainer.connectionString); BasketDiscountPolicy discountPolicy = new RepositoryBasketDiscountPolicy(discountRepository); IBasketService basketService = new BasketService(basketRepository, discountPolicy); return(new BasketManager(basketService)); }
public IController ResolveHomeController() { var connStr = ConfigurationManager .ConnectionStrings["CommerceObjectContext"] .ConnectionString; // Creates new instance of repository per object requested // Each request gets a seperate instance of SqlDiscountRepository var discountCampaign = new DiscountCampaign( new SqlDiscountRepository(connStr)); // Again Creates new instance of repository per object requested var discountPolicy = new RepositoryBasketDiscountPolicy( new SqlDiscountRepository(connStr)); return(new HomeController( discountCampaign, discountPolicy)); }
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)); }
public void RepositoryIsCorrect([Frozen] DiscountRepository expectedRepository, RepositoryBasketDiscountPolicy sut) { // Fixture setup // Exercise system DiscountRepository result = sut.Repository; // Verify outcome Assert.Equal(expectedRepository, result); // Teardown }