Exemple #1
0
        public void MakeItem_NullProduct_ExceptionThrown()
        {
            // arrange
            var provider      = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder = ProviderOrder.MakeProviderOrder(7, provider);

            // act
            Assert.Throws <ArgumentNullException>(() => ProviderOrderItem.MakeProviderOrderItem(providerOrder, null, 5));
        }
Exemple #2
0
        public void MakeItem_NullOrder_ExceptionThrown()
        {
            // arrange
            var product = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);

            // act
            Assert.Throws <ArgumentNullException>(() => ProviderOrderItem.MakeProviderOrderItem(null, product, 5));
        }
Exemple #3
0
        public void ChangePrice_NegativePrice_ExceptionThrown()
        {
            // arrange
            var provider          = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder     = ProviderOrder.MakeProviderOrder(7, provider);
            var product           = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));
            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, 5);

            // act
            Assert.Throws <ArgumentException>(() => providerOrderItem.ChangePrice(-15));
        }
Exemple #4
0
        public void MakeItem_NegativeAmount_ExceptionThrown()
        {
            // arrange
            var provider      = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder = ProviderOrder.MakeProviderOrder(7, provider);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(15);

            // act
            Assert.Throws <ArgumentException>(() => ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, -5));
        }
Exemple #5
0
        public void ChangeAmount_AmountSmallerThanProductAmount_ExceptionThrown()
        {
            // arrange
            var provider          = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder     = ProviderOrder.MakeProviderOrder(7, provider);
            var product           = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));
            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, 10);

            product.UpdateAmount(-5);

            // act
            Assert.Throws <ArgumentException>(() => providerOrderItem.ChangeAmount(4));
        }
Exemple #6
0
        public void DeleteProviderOrderItem_ValidParameters_ProviderOrderItemDeleted()
        {
            // arrange
            var provider          = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder     = ProviderOrder.MakeProviderOrder(7, provider);
            var product           = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));
            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, 5);

            //act
            providerOrderItem.Delete();

            // assert
            Assert.True(providerOrderItem.IsDeleted);
        }
Exemple #7
0
        public void DeleteProviderOrder_DeletedProviderOrder_ExceptionThrown()
        {
            // arrange
            var provider      = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder = ProviderOrder.MakeProviderOrder(7, provider);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            product.UpdateAmount(50);
            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, 5);

            providerOrderItem.Delete();

            // act
            Assert.Throws <InvalidOperationException>(() => providerOrderItem.Delete());
        }
Exemple #8
0
        public void ChangePrice_PriceBiggerThanPrevious_PriceUpdated()
        {
            // arrange
            var provider          = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder     = ProviderOrder.MakeProviderOrder(7, provider);
            var product           = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));
            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, 5);

            // act
            providerOrderItem.ChangePrice(20);

            // assert
            Assert.Equal(providerOrderItem.Amount, 5);
            Assert.Equal(providerOrderItem.Deposits.Count, 1);
            Assert.Equal(providerOrderItem.Price, 20);
            Assert.Equal(providerOrderItem.TotalValue, 100);
            Assert.Equal(providerOrder.TotalValue, 100);
            Assert.Equal(product.Amount, 5);
        }
Exemple #9
0
        public void MakeItem_ValidParameters_ItemCreated()
        {
            // arrange
            var provider      = Provider.MakeProvider("Julio", "09883060000174");
            var providerOrder = ProviderOrder.MakeProviderOrder(7, provider);
            var product       = Product.MakeProduct("Test product", "Test product", 15, Dimensions.MakeDimensions(11, 12, 13));

            // act
            var providerOrderItem = ProviderOrderItem.MakeProviderOrderItem(providerOrder, product, 5);

            // assert
            Assert.Equal(providerOrderItem.Amount, 5);
            Assert.Equal(providerOrderItem.Deposits.Count, 1);
            Assert.Equal(providerOrderItem.Price, 15);
            Assert.Equal(providerOrderItem.ProductId, product.Id);
            Assert.Equal(providerOrderItem.ProviderOrderId, providerOrder.Id);
            Assert.Equal(providerOrderItem.TotalValue, 75);
            Assert.Equal(providerOrder.TotalValue, 75);
            Assert.Equal(product.Amount, 5);
        }
        public async Task <IActionResult> PutProviderOrder(int id, ProviderOrder providerOrder)
        {
            var response = new SingleResponse <ProviderOrder>();

            if (id != providerOrder.Id)
            {
                return(BadRequest());
            }

            ProviderOrder po = _context.ProviderOrders.Where(po => po.Id == providerOrder.Id).AsNoTracking().Include(po => po.ProviderOrderItems).SingleOrDefault();

            _context.Entry(po).CurrentValues.SetValues(providerOrder);
            _context.Entry(po).State = EntityState.Modified;

            if (po != null)
            {
                response.Model = providerOrder;

                foreach (ProviderOrderItem providerOrderItem in po.ProviderOrderItems)
                {
                    if (!providerOrder.ProviderOrderItems.Any(c => c.Id == providerOrderItem.Id))
                    {
                        _context.ProviderOrderItems.Remove(providerOrderItem);
                    }
                }

                foreach (ProviderOrderItem providerOrderItem in providerOrder.ProviderOrderItems)
                {
                    ProviderOrderItem existingChild = po.ProviderOrderItems
                                                      .Where(c => c.Id == providerOrderItem.Id)
                                                      .SingleOrDefault();

                    if (existingChild != null)
                    {
                        _context.Entry(existingChild).CurrentValues.SetValues(providerOrderItem);
                        _context.Entry(existingChild).State = EntityState.Modified;
                    }
                    else
                    {
                        ProviderOrderItem newProviderOrderItem = new ProviderOrderItem
                        {
                            ProductId       = providerOrderItem.ProductId,
                            ProviderOrderId = providerOrderItem.ProviderOrderId,
                            Quantity        = providerOrderItem.Quantity
                        };

                        Console.WriteLine("New " + newProviderOrderItem.Quantity);

                        _context.ProviderOrderItems.Add(newProviderOrderItem);
                    }
                }

                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProviderOrderExists(id))
                    {
                        response.DidError     = true;
                        response.ErrorMessage = "Product not found";
                    }
                    throw;
                }
            }

            return(response.ToHttpResponse());
        }