public void EnumerableOrderLineToListOrderLineDTOAdapter() { //Arrange Product product = new Software(); product.Id = IdentityGenerator.NewSequentialGuid(); product.Title = "The product title"; product.Description = "The product description"; OrderLine orderLine = new OrderLine() { Id = IdentityGenerator.NewSequentialGuid(), Amount = 1, Discount = 0, UnitPrice = 10, ProductId = product.Id, }; orderLine.SetProduct(product); IEnumerable<OrderLine> lines = new List<OrderLine>(){orderLine}; //Act ITypeAdapter adapter = PrepareTypeAdapter(); var orderLinesDTO = adapter.Adapt<IEnumerable<OrderLine>, List<OrderLineDTO>>(lines); //Assert Assert.IsNotNull(orderLinesDTO); Assert.IsTrue(orderLinesDTO.Any()); Assert.AreEqual(orderLinesDTO[0].Amount, orderLine.Amount); Assert.AreEqual(orderLinesDTO[0].Id, orderLine.Id); Assert.AreEqual(orderLinesDTO[0].Discount, orderLine.Discount); Assert.AreEqual(orderLinesDTO[0].ProductId, orderLine.ProductId); Assert.AreEqual(orderLinesDTO[0].ProductTitle, orderLine.Product.Title); Assert.AreEqual(orderLinesDTO[0].UnitPrice, orderLine.UnitPrice); Assert.AreEqual(orderLinesDTO[0].TotalLine, orderLine.TotalLine); }
public void OrderLineToOrderLineDTOAdapter() { //Arrange Product product = new Software(); product.Id = IdentityGenerator.NewSequentialGuid(); product.Title = "The product title"; product.Description = "The product description"; OrderLine orderLine = new OrderLine() { Id = IdentityGenerator.NewSequentialGuid(), Amount = 1, Discount = 0, UnitPrice = 10, ProductId = product.Id, }; orderLine.SetProduct(product); //Act ITypeAdapter adapter = PrepareTypeAdapter(); var orderLineDTO = adapter.Adapt<OrderLine, OrderLineDTO>(orderLine); //Assert Assert.AreEqual(orderLineDTO.Amount, orderLine.Amount); Assert.AreEqual(orderLineDTO.Id, orderLine.Id); Assert.AreEqual(orderLineDTO.Discount, orderLine.Discount); Assert.AreEqual(orderLineDTO.ProductId, orderLine.ProductId); Assert.AreEqual(orderLineDTO.ProductTitle, orderLine.Product.Title); Assert.AreEqual(orderLineDTO.UnitPrice, orderLine.UnitPrice); Assert.AreEqual(orderLineDTO.TotalLine, orderLine.TotalLine); }
/// <summary> /// Create a new order line /// </summary> /// <param name="product">The associated product</param> /// <param name="amount">the number of items</param> /// <param name="discount">the selected discount for this line</param> /// <returns>The new order line</returns> public OrderLine CreateOrderLine(Product product, int amount, decimal unitPrice, decimal discount) { //check precondition if (amount <= 0 || product.IsTransient()) { throw new ArgumentException(Messages.exception_InvalidDataForOrderLine); } //check discount values if (discount < 0) discount = 0; if (discount > 100) discount = 100; //create and return order line var line = new OrderLine() { OrderId = this.Id, Amount = amount, Discount = discount, UnitPrice = unitPrice }; line.SetProduct(product); return line; }