Beispiel #1
0
        private static void ConfigureServices(IServiceCollection serviceCollection)
        {
            // Setup prices
            var productSet = new Tuple <Apple, Biscuit, Cheese, DairyMilk>(
                ProductHelper.AppleProduct, ProductHelper.BiscuitProduct,
                ProductHelper.CheeseProduct, ProductHelper.DairyMilkProduct);
            var portfolio = new ProductPortfolio <Tuple <Apple, Biscuit, Cheese, DairyMilk> >();

            portfolio.Grocery = productSet;

            // Inserts services into service collection
            serviceCollection.AddSingleton <IPosService>(service => new PosService(portfolio,
                                                                                   service.GetService <IPromoProcessor <Apple> >(), service.GetService <IPromoProcessor <Biscuit> >(),
                                                                                   service.GetService <IPromoProcessor <Cheese> >(), service.GetService <IPromoProcessor <DairyMilk> >()));
            serviceCollection.AddSingleton <IPromoProcessor <Apple>, ApplePromoProcessor>();
            serviceCollection.AddSingleton <IPromoProcessor <Biscuit>, BiscuitPromoProcessor>();
            serviceCollection.AddSingleton <IPromoProcessor <Cheese>, CheesePromoProcessor>();
            serviceCollection.AddSingleton <IPromoProcessor <DairyMilk>, DairyMilkPromoProcessor>();

            // Register logging for the app
            serviceCollection.AddLogging(configure => configure.AddConsole())
            .AddTransient <PosService>();

            // Includes the app.
            serviceCollection.AddTransient <App>();
        }
Beispiel #2
0
 /// <summary>
 /// Constructor for Pos service.
 /// </summary>
 /// <param name="portfolio">Prodcut portfolio.</param>
 /// <param name="applePromoProcessor">Apple promo processor.</param>
 /// <param name="biscuitPromoProcessor">Biscuit promo processor.</param>
 /// <param name="cheesePromoProcessor">Cheese promo processor.</param>
 /// <param name="dairyPromoProcessor">DairyMilk promo processor.</param>
 public PosService(ProductPortfolio <Tuple <Apple, Biscuit, Cheese, DairyMilk> > portfolio,
                   IPromoProcessor <Apple> applePromoProcessor, IPromoProcessor <Biscuit> biscuitPromoProcessor,
                   IPromoProcessor <Cheese> cheesePromoProcessor, IPromoProcessor <DairyMilk> dairyPromoProcessor)
 {
     _portfolio             = portfolio;
     _applePromoProcessor   = applePromoProcessor;
     _biscuitPromoProcessor = biscuitPromoProcessor;
     _cheesePromoProcessor  = cheesePromoProcessor;
     _dairyPromoProcessor   = dairyPromoProcessor;
 }
Beispiel #3
0
        /// <summary>
        /// Constructor for pos service test.
        /// </summary>
        public PosServiceTest()
        {
            _applePromoProcessor     = new Mock <IPromoProcessor <Apple> >();
            _biscuitPromoProcessor   = new Mock <IPromoProcessor <Biscuit> >();
            _cheesePromoProcessor    = new Mock <IPromoProcessor <Cheese> >();
            _dairyMilkPromoProcessor = new Mock <IPromoProcessor <DairyMilk> >();
            var productSet = new Tuple <Apple, Biscuit, Cheese, DairyMilk>(
                PosServiceTestHelper.AppleProduct, PosServiceTestHelper.BiscuitProduct,
                PosServiceTestHelper.CheeseProduct, PosServiceTestHelper.DairyMilkProduct);

            _portfolio         = new ProductPortfolio <Tuple <Apple, Biscuit, Cheese, DairyMilk> >();
            _portfolio.Grocery = productSet;
        }