public void Add_second_computer_to_existing_order()
        {
            ComputersController computersController = new ComputersController();
            ComputerInfoDto     computerInfoDto     = computersController.FindComputerByName("MacBook Pro 15");
            Decimal             expectedPrice       = computerInfoDto.Price;
            NewOrderDto         newOrderDto         = new NewOrderDto
            {
                OrderLines = new List <NewOrderLineDto> {
                    new NewOrderLineDto {
                        ComputerId = computerInfoDto.Id, Quantity = 1
                    }
                }
            };
            NewOrderIdDto newOrderIdDto = ordersController.CreateNewOrder(newOrderDto);

            Assert.IsNotNull(newOrderIdDto);

            ComputerInfoDto secondComputerInfoDto = computersController.FindComputerByName("iMac 27");

            expectedPrice += secondComputerInfoDto.Price * 2;
            ordersController.AddComputerToOrder(newOrderIdDto.Id, new AddComputersToOrderDto
            {
                OrderLines = new List <AddOrderLineDto> {
                    new AddOrderLineDto {
                        ComputerId = secondComputerInfoDto.Id, Quantity = 2
                    }
                }
            });
            OrderInformationDto orderInformationDto = ordersController.GetOrderInformation(newOrderIdDto.Id);

            Assert.AreEqual(2, orderInformationDto.OrderLinesInfo.Count);
            Assert.AreEqual(computerInfoDto.Id, orderInformationDto.OrderLinesInfo[0].ComputerId);
            Assert.AreEqual(secondComputerInfoDto.Id, orderInformationDto.OrderLinesInfo[1].ComputerId);
            Assert.AreEqual(expectedPrice, orderInformationDto.Price);
        }
        public void Raise_an_error_when_adding_a_computer_to_existing_order_with_negative_quantity()
        {
            ComputersController computersController = new ComputersController();
            ComputerInfoDto     computerInfoDto     = computersController.FindComputerByName("MacBook Pro 15");
            NewOrderDto         newOrderDto         = new NewOrderDto
            {
                OrderLines = new List <NewOrderLineDto> {
                    new NewOrderLineDto {
                        ComputerId = computerInfoDto.Id, Quantity = 1
                    }
                },
            };
            NewOrderIdDto newOrderIdDto = ordersController.CreateNewOrder(newOrderDto);

            Assert.IsNotNull(newOrderIdDto);

            Exception exception = Assert.Throws <Exception>(() =>
                                                            ordersController.AddComputerToOrder(newOrderIdDto.Id, new AddComputersToOrderDto
            {
                OrderLines = new List <AddOrderLineDto> {
                    new AddOrderLineDto {
                        ComputerId = computerInfoDto.Id, Quantity = -1
                    }
                },
            }));

            Assert.AreEqual("Computer quantity cannot be negative", exception.Message);
        }
        public void Create_new_order_with_one_computer()
        {
            ComputersController computersController = new ComputersController();
            ComputerInfoDto     computerInfoDto     = computersController.FindComputerByName("MacBook Pro 15");
            int     computerQuantity = 1;
            Decimal expectedPrice    = computerInfoDto.Price;

            List <OrderInformationDto> orders = ordersController.All();
            int previousNumberOfItems         = orders.Count;

            NewOrderDto newOrderDto = new NewOrderDto
            {
                OrderLines = new List <NewOrderLineDto> {
                    new NewOrderLineDto {
                        ComputerId = computerInfoDto.Id, Quantity = computerQuantity
                    }
                }
            };

            NewOrderIdDto newOrderIdDto = ordersController.CreateNewOrder(newOrderDto);

            Assert.IsNotNull(newOrderIdDto);

            orders = ordersController.All();
            OrderInformationDto order = ordersController.All().First(ord => ord.OrderId == newOrderIdDto.Id);

            Assert.AreEqual(previousNumberOfItems + 1, orders.Count);
            List <OrderLineInfoDto> newOrderOrderLinesInfo = order.OrderLinesInfo;

            Assert.AreEqual(1, newOrderOrderLinesInfo.Count);
            Assert.AreEqual(computerInfoDto.Id, newOrderOrderLinesInfo.First().ComputerId);
            Assert.AreEqual(computerQuantity, newOrderOrderLinesInfo.First().Quantity);
            Assert.AreEqual(expectedPrice, order.Price);
        }
Ejemplo n.º 4
0
        public void Delete_existing_order()
        {
            ComputersController computersController = new ComputersController();
            string      macBookId   = computersController.FindComputerByName("MacBook Pro 15").Id;
            string      imacId      = computersController.FindComputerByName("iMac 27").Id;
            NewOrderDto newOrderDto = new NewOrderDto
            {
                OrderLines = new List <NewOrderLineDto>
                {
                    new NewOrderLineDto {
                        ComputerId = macBookId, Quantity = 2
                    },
                    new NewOrderLineDto {
                        ComputerId = imacId, Quantity = 2
                    }
                }
            };
            OrdersController ordersController = new OrdersController("emilybeck", "password1");
            NewOrderIdDto    orderIdDto       = ordersController.CreateNewOrder(newOrderDto);

            Assert.IsTrue(ordersController.All().Exists(order => order.OrderId.Equals(orderIdDto.Id)));

            _managementController.DeleteOrder(orderIdDto.Id);

            List <OrderInformationDto> allOrders = ordersController.All();

            Assert.IsFalse(allOrders.Exists(order => order.OrderId.Equals(orderIdDto.Id)));
        }