public void GetDisponibilityNowAnd1Hour() { const string shopName = "name"; Guid shopId = Guid.NewGuid(); var returnShop = new Shop("codigo", shopName) { Id = shopId, Turns = new List <Turn>() }; var date = new DateTime(2020, 5, 6, 9, 0, 0); do { if (new DateTime(2020, 5, 6, 10, 0, 0) != date && new DateTime(2020, 5, 6, 11, 10, 0) != date) { returnShop.Turns.Add(new Turn(shopId, date, "pepe", new List <int>())); } date = date.AddMinutes(5); } while (date.Hour < 20); var model = new GetDisponibilityShopModel() { Code = "codigo" }; _shopRepo.Setup(x => x.GetByCodeWithTurns(It.IsAny <string>())) .Returns(returnShop) .Verifiable(); _utilDateTime.Setup(x => x.GetNow()) .Returns(new DateTime(2020, 5, 6, 10, 0, 0)) .Verifiable(); var expected = new GetDisponibilityShopResponse() { ShopId = shopId, ShopName = shopName, Hours = new List <HourDisponibilityShop>() { new HourDisponibilityShop() { Range = HoursDisponibilityRange.Now }, new HourDisponibilityShop() { Range = HoursDisponibilityRange.Hour1 }, } }; var resolve = _service.Execute(model); Assert.Equal(expected.ShopId, resolve.ShopId); Assert.Equal(expected.ShopName, resolve.ShopName); Assert.Equal( JsonConvert.SerializeObject(expected.Hours.OrderBy(h => h.Range)), JsonConvert.SerializeObject(resolve.Hours.OrderBy(h => h.Range)) ); _shopRepo.VerifyAll(); _utilDateTime.VerifyAll(); }
public void GetDisponibilityWhereSopClosed() { const string shopName = "name"; Guid shopId = Guid.NewGuid(); var returnShop = new Shop("codigo", shopName) { Id = shopId }; var model = new GetDisponibilityShopModel() { Code = "codigo" }; _shopRepo.Setup(x => x.GetByCodeWithTurns(It.IsAny <string>())) .Returns(returnShop) .Verifiable(); _utilDateTime.Setup(x => x.GetNow()) .Returns(new DateTime(2020, 5, 6, 0, 0, 0)) .Verifiable(); var expected = new GetDisponibilityShopResponse() { ShopId = shopId, ShopName = shopName, Hours = new List <HourDisponibilityShop>() { } }; var resolve = _service.Execute(model); Assert.Equal(expected.ShopId, resolve.ShopId); Assert.Equal(expected.ShopName, resolve.ShopName); Assert.Equal( JsonConvert.SerializeObject(expected.Hours.OrderBy(h => h.Range)), JsonConvert.SerializeObject(resolve.Hours.OrderBy(h => h.Range)) ); _shopRepo.VerifyAll(); _utilDateTime.VerifyAll(); }
public GetDisponibilityShopResponse Execute(GetDisponibilityShopModel model) { var shop = _shopRepo.GetByCodeWithTurns(model.Code); if (shop == null) { return(null); } var now = _utilDateTime.GetNow(); var availableNow = shop.IsAvailable(now, 2); var available15Min = shop.IsAvailable(now.AddMinutes(15), 5); var available30Min = shop.IsAvailable(now.AddMinutes(30), 10); var available1Hour = shop.IsAvailable(now.AddHours(1), 20); var available2Hour = shop.IsAvailable(now.AddHours(2), 30); var available4Hour = shop.IsAvailable(now.AddHours(4), 60); var hoursDisponibilities = new List <HourDisponibilityShop>(); if (availableNow) { hoursDisponibilities.Add(new HourDisponibilityShop() { Range = HoursDisponibilityRange.Now }); } if (available15Min) { hoursDisponibilities.Add(new HourDisponibilityShop() { Range = HoursDisponibilityRange.Min15 }); } if (available30Min) { hoursDisponibilities.Add(new HourDisponibilityShop() { Range = HoursDisponibilityRange.Min30 }); } if (available1Hour) { hoursDisponibilities.Add(new HourDisponibilityShop() { Range = HoursDisponibilityRange.Hour1 }); } if (available2Hour) { hoursDisponibilities.Add(new HourDisponibilityShop() { Range = HoursDisponibilityRange.Hour2 }); } if (available4Hour) { hoursDisponibilities.Add(new HourDisponibilityShop() { Range = HoursDisponibilityRange.Hour4 }); } return(new GetDisponibilityShopResponse() { ShopId = shop.Id, ShopName = shop.Name, Hours = hoursDisponibilities }); }