Example #1
0
        public static MeasurentUnit CreateMeasurentUnit(MeasurentUnitType measurentUnitType, string name)
        {
            //crear nueva instancia y establecer identidad
            var measurentUnit = new MeasurentUnit(measurentUnitType, name);

            measurentUnit.GenerateNewIdentity();

            return(measurentUnit);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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;
        }
Example #4
0
        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);
        }