Example #1
0
        public async Task PreferredAsyncShoulReturnOnlyPrefferedDrinks()
        {
            var db = DbInfrastructure.GetDatabase();

            var drinkService = new DrinkService(db);

            const int Drinks = 90;

            // 90 preffered drinks with 3 categories
            await this.SeedData(db, Drinks, 3, true);

            var drinks = await drinkService.PreferredAsync();

            drinks
            .Should()
            .HaveCount(Drinks);

            drinks
            .Should()
            .BeInAscendingOrder(d => d.Name);

            foreach (var drink in drinks)
            {
                var drinkFromDb = await db
                                  .Drinks
                                  .FindAsync(drink.Id);

                drinkFromDb.IsPreferred.Should().BeTrue();
            }
        }
Example #2
0
        public ActionResult Purchases()
        {
            List <PurchaseOrder> purcharse  = new PurchaseOrderService().GetAll();
            List <VMPurchase>    vmPurchase = new List <VMPurchase>();

            foreach (var p in purcharse)
            {
                VMPurchase vm = new VMPurchase()
                {
                    Id       = p.Id,
                    Total    = p.Total,
                    Status   = p.Status,
                    Provider = p.Provider
                };
                foreach (var item in p.Itens)
                {
                    var product = new DrinkService().GetByBarCode(item.BarCode);
                    vm.Itens = new List <VMPurchaseOrderItem>()
                    {
                        new VMPurchaseOrderItem
                        {
                            Amount      = item.Amount,
                            BarCode     = item.BarCode,
                            Total       = item.Total,
                            Value       = item.Value,
                            Description = product.Name
                        }
                    };
                }
                vmPurchase.Add(vm);
            }
            return(View(vmPurchase));
        }
Example #3
0
 public void Add(DrinkAddVM model)
 {
     if (ModelState.IsValid)
     {
         DrinkService.Add(model);
     }
 }
Example #4
0
        public void DrinkService_ReadAll()
        {
            var drinkService = new DrinkService();
            var result       = drinkService.ReadAll();

            Assert.IsNotNull(result.FirstOrDefault());
        }
Example #5
0
        public async Task NonAlcoholicCountAsyncShouldReturnCorrectCount()
        {
            var db = DbInfrastructure.GetDatabase();

            const int NonAlcoholicDrinks = 150;

            var alcoholicCategory = new Category
            {
                Name = "Alcoholic"
            };

            var nonAlcoholicCategory = new Category
            {
                Name = "Non-Alcoholic"
            };

            await db.AddRangeAsync(alcoholicCategory, nonAlcoholicCategory);

            await db.SaveChangesAsync();

            await this.SeedDataByCategory(db, 1234, alcoholicCategory.Id);

            await this.SeedDataByCategory(db, NonAlcoholicDrinks, nonAlcoholicCategory.Id);

            var drinkService = new DrinkService(db);

            var count = await drinkService.NonAlcoholicCountAsync();

            count.Should().Be(NonAlcoholicDrinks);
        }
Example #6
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //Services (Call to the web API)
            WebClientServiceBase coinService  = new CoinStorageService();
            WebClientServiceBase drinkService = new DrinkService();

            //Views
            CoinCRUDView    coinCRUD        = new CoinCRUDView();
            DispenserView   dispenserView   = new DispenserView();
            CoinStorageView coinStorageView = new CoinStorageView();

            dispenserView.SetCoinStorageView(coinStorageView);

            //Presenters
            CoinCRUDPresenter    coinCRUDPresenter    = new CoinCRUDPresenter(coinCRUD, coinService);
            CoinStoragePresenter coinStoragePresenter = new CoinStoragePresenter(coinStorageView, coinService);
            DispenserPresenter   dispenserPresenter   = new DispenserPresenter(dispenserView, coinStoragePresenter, coinService, drinkService);


            //Main
            MainForm main = new MainForm(dispenserView, coinCRUD);



            Application.Run(main);
        }
Example #7
0
        public async Task <ActionResult <string> > Post(string drinkType, double money, int sugars, int extraHot)
        {
            try
            {
                var drinkService = new DrinkService();
                var drink        = new Drink
                {
                    DrinkType = drinkType,
                    Money     = money,
                    Sugars    = sugars,
                    ExtraHot  = extraHot,
                };
                var result = await drinkService.OrderAsync(drink);

                this.log.LogDebug(string.Format("{0}: {1} executed", System.DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod().Name));
                return(this.Ok(result));
            }
            catch (Services.BadParametersException exception)
            {
                log.LogInformation(string.Format("{0}: {1}", System.DateTime.Now, exception.Message));
                return(this.StatusCode(400, exception.Message));
            }
            catch (System.Exception exception)
            {
                log.LogError(exception, string.Format("{0}: Error in {1}", System.DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod().Name));
                return(this.StatusCode(500));
            }
        }
Example #8
0
        public async Task AllAsyncShouldReturnCorrectDrinksByPageWithoutCategory()
        {
            var db = DbInfrastructure.GetDatabase();

            // 270 drinks with 1 categories
            await this.SeedData(db, 270, 1);

            var drinkService = new DrinkService(db);

            const string Search = "0";

            for (var i = 0; i < 3; i++)
            {
                var drinks = await drinkService.AllAsync(i + 1, null, Search);

                drinks
                .Should()
                .HaveCount(WebConstants.DrinksPerPage);

                drinks
                .Should()
                .BeInAscendingOrder(d => d.Name);

                foreach (var drink in drinks)
                {
                    drink
                    .Name
                    .ToLower()
                    .Should()
                    .Contain(Search.ToLower());
                }
            }
        }
Example #9
0
 private static async Task AddDrinkToDb(DrinkService drinkService)
 {
     await drinkService.AddAsync(
         Name,
         Description,
         FullDescription,
         Price,
         ImageUrl,
         ImageThumbnailUrl,
         true,
         false,
         CategoryId);
 }
Example #10
0
        public void AllAsyncShouldThrowExceptionIfCategoryIsNotFound()
        {
            var db = DbInfrastructure.GetDatabase();

            var drinkService = new DrinkService(db);

            Func <Task> func = async() => await drinkService.AllAsync(1, "Invalid CateGorY", null);

            func
            .Should()
            .Throw <InvalidOperationException>()
            .WithMessage("Category Invalid CateGorY is not found.");
        }
Example #11
0
        public IHttpActionResult Post([FromBody] Drink drink)
        {
            var d = DrinkService.Create(drink);

            if (d > 0)
            {
                return(Created("", drink));
            }
            else
            {
                return(NotFound());
            }
        }
Example #12
0
        public void DrinkService_Order_DrinkWithoutData_2()
        {
            // Arrange
            var drinkService = new DrinkService();
            var drink        = new Drink();

            // Act
            BadParametersException exception = Assert.Throws <BadParametersException>(
                delegate { drinkService.OrderAsync(drink).GetAwaiter().GetResult(); });

            // Assert
            Assert.That(exception.Message, Is.EqualTo("The drink type should be tea, coffee or chocolate."));
        }
Example #13
0
        public async Task CountAsyncShouldReturnCorrectCount()
        {
            var db = DbInfrastructure.GetDatabase();

            const int Drinks = 150;

            await this.SeedData(db, Drinks, 5);

            var drinkService = new DrinkService(db);

            var count = await drinkService.CountAsync();

            count.Should().Be(Drinks);
        }
Example #14
0
 public ActionResult <IEnumerable <Drink> > Get()
 {
     try
     {
         var drinkService = new DrinkService();
         var result       = drinkService.ReadAll();
         return(this.Ok(result));
     }
     catch (System.Exception exception)
     {
         log.LogError(exception, string.Format("{0}: Error in {1}", System.DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod().Name));
         return(this.StatusCode(500));
     }
 }
Example #15
0
        public async Task DeleteAsyncShouldDeleteDrink()
        {
            var db = DbInfrastructure.GetDatabase();

            var drinkService = new DrinkService(db);

            await AddDrinkToDb(drinkService);

            var drink = await db.Drinks.FirstAsync();

            await drinkService.DeleteAsync(drink.Id);

            drink = await db.Drinks.FirstOrDefaultAsync();

            drink.Should().BeNull();
        }
Example #16
0
        public ActionResult Index()
        {
            List <Drink>   drinks = new DrinkService().GetAll();
            List <VMDrink> vms    = new List <VMDrink>();

            foreach (var drink in drinks)
            {
                vms.Add(new VMDrink()
                        .SetName(drink.Name)
                        .SetBarCode(drink.BarCode)
                        .SetAmount(drink.Amount)
                        .SetLot(drink.LotID)
                        .SetLot(new LotService().GetByID(drink.LotID))
                        .SetStock(new StockService().GetByDrink(drink.BarCode))
                        );
            }
            return(View(vms));
        }
Example #17
0
        public void DrinkService_Order_DrinkHotWithSugar(string drinkType, float money, int sugars, int extraHot)
        {
            // Arrange
            var drinkService = new DrinkService();
            var drink        = new Drink
            {
                DrinkType = drinkType,
                Money     = money,
                Sugars    = sugars,
                ExtraHot  = extraHot,
            };

            // Act
            string result = drinkService.OrderAsync(drink).Result;

            // Assert
            Assert.AreEqual(string.Format("You have ordered a {0} extra hot with {1} sugars(stick included).", drink.DrinkType.ToLower(), drink.Sugars), result);
        }
Example #18
0
 public IHttpActionResult Post([FromBody] Drink drink)
 {
     try
     {
         if (DrinkService.AddDrink(drink) > 0)
         {
             return(Ok());
         }
         else
         {
             return(NotFound());
         }
     }
     catch (Exception)
     {
         return(NotFound());
     }
 }
Example #19
0
        public void DrinkService_Order_DrinkColdWhithoutSugar(string drinkType, float money, int sugars, int extraHot)
        {
            // Arrange
            var drinkService = new DrinkService();
            var drink        = new Drink
            {
                DrinkType = drinkType,
                Money     = money,
                Sugars    = sugars,
                ExtraHot  = extraHot,
            };

            // Act
            string result = drinkService.OrderAsync(drink).Result;

            // Assert
            Assert.AreEqual(string.Format("You have ordered a {0}", drink.DrinkType.ToLower()), result);
        }
Example #20
0
        public void DrinkService_Order_InventedDrink()
        {
            // Arrange
            var drinkService = new DrinkService();
            var drink        = new Drink
            {
                DrinkType = "invented drink",
                Money     = 0.8F,
                Sugars    = 1,
                ExtraHot  = 1,
            };

            // Act
            BadParametersException exception = Assert.Throws <BadParametersException>(
                delegate { drinkService.OrderAsync(drink).GetAwaiter().GetResult(); });

            // Assert
            Assert.AreEqual("The drink type should be tea, coffee or chocolate.", exception.Message);
        }
Example #21
0
        public async Task EditAsyncShouldEditDrink()
        {
            var db = DbInfrastructure.GetDatabase();

            var drinkService = new DrinkService(db);

            await drinkService.AddAsync(
                "Some name",
                "Stupid description",
                "The full description",
                2.23M,
                "Image URL",
                "Image TURL",
                false,
                true,
                56);

            var actualDrink = await db.Drinks.FirstAsync();

            await drinkService.EditAsync(
                actualDrink.Id,
                Name,
                Description,
                FullDescription,
                Price,
                ImageUrl,
                ImageThumbnailUrl,
                true,
                false,
                CategoryId);

            actualDrink = await db.Drinks.FirstAsync();

            actualDrink.Name.Should().Be(Name);
            actualDrink.Description.Should().Be(Description);
            actualDrink.FullDescription.Should().Be(FullDescription);
            actualDrink.Price.Should().Be(Price);
            actualDrink.ImageUrl.Should().Be(ImageUrl);
            actualDrink.ImageThumbnailUrl.Should().Be(ImageThumbnailUrl);
            actualDrink.IsPreferred.Should().Be(true);
            actualDrink.IsInStock.Should().Be(false);
            actualDrink.CategoryId.Should().Be(CategoryId);
        }
Example #22
0
        public void DrinkService_Order_BadNumberSugars(string drinkType, float money, int sugars, int extraHot)
        {
            // Arrange
            var drinkService = new DrinkService();
            var drink        = new Drink
            {
                DrinkType = drinkType,
                Money     = money,
                Sugars    = sugars,
                ExtraHot  = extraHot,
            };

            // Act
            BadParametersException exception = Assert.Throws <BadParametersException>(
                delegate { drinkService.OrderAsync(drink).GetAwaiter().GetResult(); });

            // Assert
            Assert.AreEqual("The number of sugars should be between 0 and 2.", exception.Message);
        }
Example #23
0
        public async Task ByIdAsyncShouldReturnDrinkById()
        {
            var db = DbInfrastructure.GetDatabase();

            var drink = new Drink
            {
                Name = "Drink"
            };

            await db.AddAsync(drink);

            // 1000 drinks with 10 categories
            await this.SeedData(db, 1000, 10);

            var drinkService = new DrinkService(db);

            var actualDrink = await drinkService.ByIdAsync(drink.Id);

            actualDrink.Should().BeEquivalentTo(drink);
        }
Example #24
0
        public async Task AddAsyncShouldSaveDrinkToDb()
        {
            var db = DbInfrastructure.GetDatabase();

            var drinkService = new DrinkService(db);

            await AddDrinkToDb(drinkService);

            var actualDrink = await db.Drinks.FirstAsync();

            actualDrink.Name.Should().Be(Name);
            actualDrink.Description.Should().Be(Description);
            actualDrink.FullDescription.Should().Be(FullDescription);
            actualDrink.Price.Should().Be(Price);
            actualDrink.ImageUrl.Should().Be(ImageUrl);
            actualDrink.ImageThumbnailUrl.Should().Be(ImageThumbnailUrl);
            actualDrink.IsPreferred.Should().Be(true);
            actualDrink.IsInStock.Should().Be(false);
            actualDrink.CategoryId.Should().Be(CategoryId);
        }
Example #25
0
        public async Task <ActionResult <Drink> > GetById(int id)
        {
            try
            {
                var drinkService = new DrinkService();
                var result       = await drinkService.GetByIdAsync(id);

                if (result == null)
                {
                    return(this.NotFound());
                }

                return(this.Ok(result));
            }
            catch (System.Exception exception)
            {
                log.LogError(exception, string.Format("{0}: Error in {1}", System.DateTime.Now, System.Reflection.MethodBase.GetCurrentMethod().Name));
                return(this.StatusCode(500));
            }
        }
        public static void Register(HttpConfiguration config)
        {
            //Register controllers in the activartor
            //In reality this should be done by IoC container
            var drinkService = new DrinkService();
            var activator    = new SimpleHttpControllerActivator();

            activator.Register(() => new CartController(drinkService));
            activator.Register(() => new DrinkController(drinkService));
            config.Services.Replace(typeof(IHttpControllerActivator), activator);

            //Register routes
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(name: "Cart", routeTemplate: "api/cart", defaults: new { controller = "Cart" });
            config.Routes.MapHttpRoute(name: "Drink", routeTemplate: "api/cart/drink/{name}", defaults: new { controller = "Drink" });

            //Register filters
            config.Filters.Add(new SimpleAuthorizationFilter());
            config.Filters.Add(new ModelVaidationFilter());
        }
Example #27
0
        public async Task CountBySearchAsyncShouldReturnCorrectCount()
        {
            var db = DbInfrastructure.GetDatabase();

            // 100 drinks with 3 categories
            await this.SeedData(db, 100, 3);

            var drinkService = new DrinkService(db);

            const string Search = "0";

            var actualCount = await drinkService.CountBySearchAsync(Search);

            var expectedCount = await db
                                .Drinks
                                .Where(d => d.Name.ToLower().Contains(Search.ToLower()))
                                .CountAsync();

            actualCount.Should().Be(expectedCount);
        }
Example #28
0
        public async Task AllAsyncShouldReturnCorrectDrinksByPageWithoutSearch()
        {
            var db = DbInfrastructure.GetDatabase();

            var category = new Category
            {
                Name = "Some Category"
            };

            await db.AddAsync(category);

            await db.SaveChangesAsync();

            await this.SeedDataByCategory(db, 180, category.Id);

            var drinkService = new DrinkService(db);

            for (var i = 0; i < 20; i++)
            {
                var drinks = await drinkService.AllAsync(i + 1, category.Name, null);

                drinks
                .Should()
                .HaveCount(WebConstants.DrinksPerPage);

                drinks
                .Should()
                .BeInAscendingOrder(d => d.Name);

                foreach (var drink in drinks)
                {
                    var drinkFromDb = await db
                                      .Drinks
                                      .FindAsync(drink.Id);

                    drinkFromDb.CategoryId.Should().Be(category.Id);
                }
            }
        }
Example #29
0
        public async Task AllAsyncShouldReturnCorrectDrinksByPageWithoutCategoryAndSearch()
        {
            var db = DbInfrastructure.GetDatabase();

            // 90 drinks with 5 categories
            await this.SeedData(db, 90, 5);

            var drinkService = new DrinkService(db);

            for (var i = 0; i < 10; i++)
            {
                var drinks = await drinkService.AllAsync(i + 1, null, null);

                drinks
                .Should()
                .HaveCount(WebConstants.DrinksPerPage);

                drinks
                .Should()
                .BeInAscendingOrder(d => d.Name);
            }
        }
Example #30
0
        public void DrinkService_Order_MoneyNotEnought(string drinkType, float money, int sugars, int extraHot)
        {
            // Arrange
            var drinkService = new DrinkService();
            var drink        = new Drink
            {
                DrinkType = drinkType,
                Money     = money,
                Sugars    = sugars,
                ExtraHot  = extraHot,
            };

            // Act
            BadParametersException exception = Assert.Throws <BadParametersException>(
                delegate { drinkService.OrderAsync(drink).GetAwaiter().GetResult(); });

            // Assert
            Assert.AreEqual(
                string.Format(
                    "The {0} costs {1}.",
                    drinkService.DrinkPrices.Single(x => x.Name.ToLower() == drink.DrinkType.ToLower()).Name,
                    drinkService.DrinkPrices.Single(x => x.Name.ToLower() == drink.DrinkType.ToLower()).Price.ToString("N", new System.Globalization.CultureInfo("en-US"))),
                exception.Message);
        }