// Declaring methods public void ProcessOrder(Cart cart, ShipingDetails shippingInfo) { using (var smtpClient = new SmtpClient()) { smtpClient.EnableSsl = emailSettings.UseSl; smtpClient.Host = emailSettings.ServerName; smtpClient.Port = emailSettings.ServerPort; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential(emailSettings.UserName, emailSettings.Password); if (emailSettings.WriteAsFile) { smtpClient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; smtpClient.PickupDirectoryLocation = emailSettings.FileLocation; smtpClient.EnableSsl = false; } StringBuilder body = new StringBuilder().AppendLine("Новый заказ обработан").AppendLine("---").AppendLine("Товары:"); foreach (var line in cart.Lines) { var subtotal = line.Game.Price * line.Quantity; body.AppendFormat("{0} x {1} (итого: {2:c})", line.Quantity, line.Game.Name, subtotal); } body.AppendFormat("общая стогмость: {0:c}", cart.ComputeTotalValue()) .AppendLine("---") .AppendLine("Доставка") .AppendLine(shippingInfo.Name) .AppendLine(shippingInfo.Line1) .AppendLine(shippingInfo.Line2 ?? "") .AppendLine(shippingInfo.Line3 ?? "") .AppendLine(shippingInfo.City) .AppendLine(shippingInfo.Country) .AppendLine("---") .AppendFormat("Подарочная упаковка: {0}", shippingInfo.GiftWrap ? "Да" : "Нет"); MailMessage mailMessage = new MailMessage(emailSettings.MailFromAddress, // От кого emailSettings.MailToAddress, // Кому "Новый заказ отправлен!", // Тема body.ToString()); // Тело письма if (emailSettings.WriteAsFile) { mailMessage.BodyEncoding = Encoding.UTF8; } //smtpClient.Send(mailMessage); <============================== Don't work !!! } // end using } // end ProcessorOrder()
public void Cannot_Checkout_Empty_Cart() { // Arrange Mock <IOrderProcessor> mock = new Mock <IOrderProcessor>(); Cart cart = new Cart(); ShipingDetails shippingDetails = new ShipingDetails(); CartController controller = new CartController(null, mock.Object); // Act ViewResult result = controller.Checkout(cart, shippingDetails); // Assert mock.Verify(m => m.ProcessOrder(It.IsAny <Cart>(), It.IsAny <ShipingDetails>()), Times.Never()); // order not received Assert.AreEqual("", result.ViewName); // show default view Assert.AreEqual(false, result.ViewData.ModelState.IsValid); } // end Cannot_Checkout_Empty_Cart()
public ViewResult Checkout(Cart cart, ShipingDetails shipingDetails) { if (cart.Lines.Count() == 0) { ModelState.AddModelError("", "Извините, ваша корзина пуста!"); } if (ModelState.IsValid) { orderProcessor.ProcessOrder(cart, shipingDetails); cart.Clear(); return View("Completed"); } else { return View(shipingDetails); } } // end Checkout()