public static MeasurentUnit CreateMeasurentUnit(MeasurentUnitType measurentUnitType, string name) { //crear nueva instancia y establecer identidad var measurentUnit = new MeasurentUnit(measurentUnitType, name); measurentUnit.GenerateNewIdentity(); return(measurentUnit); }
public void AddOrderItem(Product product, MeasurentUnit measurentUnit, int units = 1) { var existingOrderForProduct = OrderIncomeLines .SingleOrDefault(o => (o.ProductId == product.Id && o.MeasurentUnitId == measurentUnit.Id)); if (existingOrderForProduct != null) { existingOrderForProduct.AddAmount(units); } else { var orderItem = new OrderIncomeLine(Id, product, measurentUnit, units); OrderIncomeLines.Add(orderItem); } }
public OrderIncomeLine(Guid orderIncomeId, Product product, MeasurentUnit measurentUnit, int amount) { if (product == null || product.IsTransient()) { throw new ArgumentNullException(nameof(product)); } if (measurentUnit == null || measurentUnit.IsTransient()) { throw new ArgumentNullException(nameof(measurentUnit)); } OrderIncomeId = orderIncomeId; ProductId = product.Id; ProductName = product.Name; MeasurentUnitId = measurentUnit.Id; MeasurentUnitName = measurentUnit.Name; Amount = amount; }
public void AddOrderItemOk() { //Arrange(Preparar) OrderIncome order = OrderFactory.CreateOrder(_customer, "", "", ""); MeasurentUnit measurentUnit = MeasurentUnitFactory.CreateMeasurentUnit(MeasurentUnitType.Longitud, "Litro"); //Act(Actuar) Product product = _products.First(); int amount = 1; order.AddOrderItem(product, measurentUnit, amount); //Assert(Afirmar) order.OrderIncomeLines.Count.ShouldBe(1); OrderIncomeLine xline = order.OrderIncomeLines .SingleOrDefault(o => (o.ProductId == product.Id && o.MeasurentUnitId == measurentUnit.Id)); xline.ShouldNotBeNull(); xline?.ProductId.ShouldBe(product.Id); xline?.Amount.ShouldBe(amount); }