public Result Execute(int productId, int amount = 1) { if (amount <= 0) { return(Fail(() => InvalidAmount, "Указано некорректное количество товаров: " + amount)); } // получаем корзину var cartResult = _getCartCmd.Execute(GetShoppingCartCommand.FetchMode.GetOrCreate); if (cartResult.HasErrors) { return(cartResult.Outcome); } var cart = cartResult.Value; // добавляем товар var item = cart.Items.FirstOrDefault(c => c.ProductId == productId); if (item == null) { item = new CartItem { ProductId = productId, }; cart.Items.Add(item); } item.Amount += amount; return(Ok()); }
public void When_user_is_not_signed_in_and_has_no_cart_Must_return_new_cart_and_store_id_in_session() { // Arrange var session = new Dictionary<string, object>(); // Act var cmd = new GetShoppingCartCommand(Db, null, session); var result = cmd.Execute(); // Assert AssertSuccess(result); Assert.IsNotNull(result.Value, "Не вернулась корзина"); Assert.AreEqual(result.Value.Id, session[GetShoppingCartCommand.CART_SESSION_KEY], "Id корзины не сохранился в сессию"); }
public void When_there_is_no_cart_for_user_Must_create_new() { // Arrange CreateCart(); // просто корзина, не привязанная к пользователю var user = CreateUser(); Db.SaveChanges(); // Act var cmd = new GetShoppingCartCommand(Db, user); var result = cmd.Execute(); // Assert AssertSuccess(result); Assert.IsNotNull(result.Value, "Не вернулась корзина"); Assert.AreEqual(user.Id, result.Value.User.Id, "Вернулась чужая корзина"); Assert.AreEqual(1, Db.ShoppingCarts.Count(c => c.User.Id == user.Id), "Не создалась новая корзина, либо появилась лишняя"); }
public Result Execute(string userEmail) { if (!IsValidEmail(userEmail)) { return(Fail(() => InvalidEmail, "Невалидный email: " + userEmail)); } var request = new RegistrationRequest { Id = Guid.NewGuid(), Email = userEmail }; if (IsEmailRegistered(userEmail)) { return(Fail(() => EmailAlreadyRegistered, "Пользователь с таким email уже существует")); } // получаем корзину var cartResult = _getCartCmd.Execute(GetShoppingCartCommand.FetchMode.GetOrCreate); if (cartResult.HasErrors) { return(cartResult.Outcome); } // если корзина не пуста, созраняем ссылку в заявке if (cartResult.Value.Items.Any()) { request.Cart = cartResult.Value; } // добавляем заявку _db.RegistrationRequests.Add(request); // отправляем письмо _mailService.SendUserConfirmatiom(userEmail, request.Id.ToString()); return(Ok()); }
public void When_there_is_cart_for_user_Must_return_existing_cart() { // Arrange CreateCart(); var user = CreateUser(); var cart = CreateCart(user); // тестируемая корзина CreateCart(); Db.SaveChanges(); // Act var cmd = new GetShoppingCartCommand(Db, user); var result = cmd.Execute(); // Assert AssertSuccess(result); Assert.IsNotNull(result.Value, "Не вернулась корзина"); Assert.AreEqual(1, Db.ShoppingCarts.Count(c => c.User.Id == user.Id), "Создалась новая корзина, либо удалилась старая"); Assert.AreEqual(cart.Id, result.Value.Id, "Вернулась чужая корзина"); }
public void When_user_is_not_signed_in_Must_return_existing_cart_for_session() { // Arrange var cart = CreateCart(); Db.SaveChanges(); var session = new Dictionary<string, object>(); session[GetShoppingCartCommand.CART_SESSION_KEY] = cart.Id; // Act var cmd = new GetShoppingCartCommand(Db, null, session); var result = cmd.Execute(); // Assert AssertSuccess(result); Assert.IsNotNull(result.Value, "Не вернулась корзина"); Assert.AreEqual(cart.Id, result.Value.Id, "Вернулась чужая корзина"); }