public void GetSavedDraftOrdersRetrievesOrdersWithDraftStatusAndForCurrentUser()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver    = "WhoCares";
            ordersRow.Creator     = "CurrentUser";
            ordersRow.OrderName   = "Test Order";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRow);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.NewOrderDetailsRow();
            detailRow.OrdersRow = ordersRow;
            detailRow.ProductId = 11;
            detailRow.Quantity  = 3;
            ds.OrderDetails.AddOrderDetailsRow(detailRow);
            ds.AcceptChanges();

            FakeProductService productService = new FakeProductService();

            productService.Products.Add(new Product(11, null, null, 2.99m, null));
            OrdersService ordersService = new OrdersService(ds, productService);

            IList <Order> orders = ordersService.GetSavedDraftOrders("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(1, orders.Count);
            Order order = orders[0];

            Assert.AreEqual("Test Order", order.OrderName);
            Assert.IsNotNull(order);
            Assert.AreEqual(1, order.Details.Count);
            Assert.AreEqual((short)3, order.Details[0].Quantity);
            Assert.AreEqual(2.99m, order.Details[0].UnitPrice);
        }
        public void SearchOrdersWithQuotesSearchesCorrectlyAndPreventsInjection()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 1;
            ordersRowA.OrderName   = "Order A's";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId     = 2;
            ordersRowB.OrderName   = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver    = "User";
            ordersRowB.Creator     = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowB);
            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ICollection <Order> orders = ordersService.SearchOrders("'");

            Assert.AreEqual(1, orders.Count);
            IEnumerator <Order> enumerator = orders.GetEnumerator();

            enumerator.Reset();
            enumerator.MoveNext();
            Assert.AreEqual(1, enumerator.Current.OrderId);
        }
        public void DeleteRemovesOnlyExpectedOrderFromRepository()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 3;
            ordersRowA.OrderName   = "Order A";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId     = 2;
            ordersRowB.OrderName   = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver    = "User";
            ordersRowB.Creator     = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Submitted;
            ds.Orders.AddOrdersRow(ordersRowB);

            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.DeleteOrder(3);

            Assert.AreEqual(1, ds.Orders.Count);
            Assert.AreEqual(2, ds.Orders[0].OrderId);
        }
        public Order GetOrderWithDetails(int orderId)
        {
            OrdersManagementDataSet.OrdersRow ordersRow = repository.Orders.FindByOrderId(orderId);
            if (ordersRow == null)
            {
                return(null);
            }

            Order order = TranslateFromOrdersRowToOrderEntityWithDetails(ordersRow);

            return(order);
        }
 private static void TranslateFromOrderEntityToOrdersRow(Order order, OrdersManagementDataSet.OrdersRow ordersRow)
 {
     ordersRow.CustomerId     = order.CustomerId;
     ordersRow.Description    = order.Description;
     ordersRow.Approver       = order.Approver;
     ordersRow.Creator        = order.Creator;
     ordersRow.OrderName      = order.OrderName;
     ordersRow.OrderStatus    = order.OrderStatus;
     ordersRow.ShipAddress    = order.ShipAddress;
     ordersRow.ShipCity       = order.ShipCity;
     ordersRow.ShipPostalCode = order.ShipPostalCode;
     ordersRow.ShipRegion     = order.ShipRegion;
 }
 private static void TranslateFromOrdersRowToOrderEntity(OrdersManagementDataSet.OrdersRow ordersRow, Order order)
 {
     order.OrderId        = ordersRow.OrderId;
     order.CustomerId     = ordersRow.IsCustomerIdNull() ? null : ordersRow.CustomerId;
     order.Description    = ordersRow.IsDescriptionNull() ? null : ordersRow.Description;
     order.Approver       = ordersRow.Approver;
     order.Creator        = ordersRow.Creator;
     order.OrderName      = ordersRow.IsOrderNameNull() ? null : ordersRow.OrderName;
     order.OrderStatus    = ordersRow.OrderStatus;
     order.ShipAddress    = ordersRow.IsShipAddressNull() ? null : ordersRow.ShipAddress;
     order.ShipCity       = ordersRow.IsShipCityNull() ? null : ordersRow.ShipCity;
     order.ShipPostalCode = ordersRow.IsShipPostalCodeNull() ? null : ordersRow.ShipPostalCode;
     order.ShipRegion     = ordersRow.IsShipRegionNull() ? null : ordersRow.ShipRegion;
 }
        public void RejectOrder(int orderId)
        {
            OrdersManagementDataSet.OrdersRow ordersRow = repository.Orders.FindByOrderId(orderId);
            if (ordersRow == null)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.OrderIdNotExistsInRepository, orderId));
            }

            if (ordersRow.OrderStatus != (int)OrderStatusEnum.Submitted)
            {
                throw new InvalidOperationException(Resources.OrderStatusInvalidForRejectOrder);
            }

            ordersRow.OrderStatus = (int)OrderStatusEnum.Rejected;
        }
        private Order TranslateFromOrdersRowToOrderEntityWithDetails(OrdersManagementDataSet.OrdersRow ordersRow)
        {
            OrdersManagementDataSet.OrderDetailsRow[] detailRows = ordersRow.GetOrderDetailsRows();
            Order order = new Order();

            TranslateFromOrdersRowToOrderEntity(ordersRow, order);

            order.Details = new List <OrderDetail>(detailRows.Length);
            foreach (OrdersManagementDataSet.OrderDetailsRow detailRow in detailRows)
            {
                Product     product = _productService.GetProductById(detailRow.ProductId);
                OrderDetail detail  = new OrderDetail(detailRow.OrderId, detailRow.ProductId, detailRow.Quantity, product.UnitPrice.Value);
                order.Details.Add(detail);
            }
            return(order);
        }
        public void GetSavedDraftOrdersDoesNotRetrieveOrderForApproversWhoAreNotTheCurrentLoggedInOne()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver    = "DifferentWhoCares";
            ordersRow.Creator     = "DifferentUser";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRow);
            ds.AcceptChanges();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            IList <Order> orders = ordersService.GetOrdersForApprover("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(0, orders.Count);
        }
        public void SaveAsDraftCanStoreOrderWithoutDetailsInRepository()
        {
            Order order = new Order();

            order.OrderId  = 0;
            order.Approver = "11";
            order.Creator  = "11";
            order.Details  = null;

            OrdersManagementDataSet ds            = new OrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.SaveAsDraft(order);

            OrdersManagementDataSet.OrdersRow row = ds.Orders.FindByOrderId(order.OrderId);
            Assert.IsNotNull(row);
            Assert.AreEqual(1, ds.Orders.Count);
        }
        public void DeleteNonDraftOrderThrowsException()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 1;
            ordersRowA.OrderName   = "Order A";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Submitted;
            ds.Orders.AddOrdersRow(ordersRowA);

            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.DeleteOrder(1);
        }
Esempio n. 12
0
        public void DeleteOrder(int orderId)
        {
            OrdersManagementDataSet.OrdersRow ordersRow = repository.Orders.FindByOrderId(orderId);
            if (ordersRow == null)
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.OrderIdNotExistsInRepository, orderId));
            }

            if (ordersRow.OrderStatus != (int)OrderStatusEnum.Draft)
            {
                throw new InvalidOperationException(Resources.OrderStatusInvalidForDeleteOrder);
            }

            OrdersRepository.Services.OrdersManagementDataSet.OrderDetailsRow[] details = ordersRow.GetOrderDetailsRows();
            foreach (OrdersRepository.Services.OrdersManagementDataSet.OrderDetailsRow detail in details)
            {
                repository.OrderDetails.RemoveOrderDetailsRow(detail);
            }

            repository.Orders.RemoveOrdersRow(ordersRow);
        }
        public void DeleteRemovesOrderFromRepository()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 1;
            ordersRowA.OrderName   = "Order A";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRowA);

            ds.AcceptChanges();

            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.DeleteOrder(1);

            Assert.AreEqual(0, ds.Orders.Count);
        }
        public void GetOrderWithDetailsGetsBothOrderAndDetails()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.CustomerId     = "11";
            ordersRow.Description    = "MyDescription";
            ordersRow.Approver       = "MyEmployeeId";
            ordersRow.Creator        = "MyEmployeeId";
            ordersRow.OrderName      = "MyOrderName";
            ordersRow.OrderStatus    = (int)OrderStatusEnum.Draft;
            ordersRow.ShipAddress    = "MyShipAddress";
            ordersRow.ShipCity       = "MyShipCity";
            ordersRow.ShipPostalCode = "MyZip";
            ordersRow.ShipRegion     = "MyShipRegion";
            ds.Orders.AddOrdersRow(ordersRow);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.NewOrderDetailsRow();
            detailRow.OrdersRow = ordersRow;
            detailRow.ProductId = 11;
            detailRow.Quantity  = 3;
            ds.OrderDetails.AddOrderDetailsRow(detailRow);
            ds.AcceptChanges();

            FakeProductService productService = new FakeProductService();

            productService.Products.Add(new Product(11, null, null, 2.99m, null));

            OrdersService ordersService = new OrdersService(ds, productService);

            Order order = ordersService.GetOrderWithDetails(ordersRow.OrderId);

            Assert.IsNotNull(order);
            Assert.AreEqual(ordersRow.OrderId, order.OrderId);
            Assert.AreEqual("MyDescription", order.Description);
            Assert.IsNotNull(order.Details);
            Assert.AreEqual(1, order.Details.Count);
            Assert.AreEqual((short)3, order.Details[0].Quantity);
            Assert.AreEqual(2.99m, order.Details[0].UnitPrice);
        }
        public void GetSavedDraftOrdersDoesNotRetrieveOrdersWithoutDraftStatus()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.Approver    = "WhoCares";
            ordersRow.Creator     = "CurrentUser";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Submitted;
            ds.Orders.AddOrdersRow(ordersRow);
            ordersRow             = ds.Orders.NewOrdersRow();
            ordersRow.Approver    = "WhoCares";
            ordersRow.Creator     = "CurrentUser";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Approved;
            ds.Orders.AddOrdersRow(ordersRow);
            ds.AcceptChanges();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            IList <Order> orders = ordersService.GetSavedDraftOrders("CurrentUser");

            Assert.IsNotNull(orders);
            Assert.AreEqual(0, orders.Count);
        }
        public void SaveAsDraftWithExistingOrderUpdatesRepository()
        {
            Order order = GetPopulatedOrder();

            order.OrderId = 0;
            OrdersManagementDataSet ds            = new OrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, GetPopulatedProductService());

            ordersService.SaveAsDraft(order);
            int orderID = order.OrderId;

            order           = GetPopulatedOrder();
            order.OrderId   = orderID;
            order.OrderName = "MyNewName";

            ordersService.SaveAsDraft(order);

            OrdersManagementDataSet.OrdersRow row = ds.Orders.FindByOrderId(orderID);
            Assert.IsNotNull(row);
            Assert.AreEqual("MyNewName", row.OrderName);
            Assert.AreEqual(1, ds.Orders.Count);
        }
        public void SaveAsDraftStoresOrderInRepository()
        {
            Order order = GetPopulatedOrder();

            order.OrderId = 0;
            OrdersManagementDataSet ds            = new OrdersManagementDataSet();
            OrdersService           ordersService = new OrdersService(ds, GetPopulatedProductService());

            ordersService.SaveAsDraft(order);

            OrdersManagementDataSet.OrdersRow row = ds.Orders.FindByOrderId(order.OrderId);
            Assert.IsNotNull(row);
            Assert.AreEqual(1, ds.Orders.Count);
            Assert.AreEqual(order.OrderName, row.OrderName);
            Assert.AreEqual(order.CustomerId, row.CustomerId);
            Assert.AreEqual(order.Description, row.Description);
            Assert.AreEqual(order.Approver, row.Approver);
            Assert.AreEqual(order.OrderStatus, row.OrderStatus);
            Assert.AreEqual(order.ShipAddress, row.ShipAddress);
            Assert.AreEqual(order.ShipCity, row.ShipCity);
            Assert.AreEqual(order.ShipPostalCode, row.ShipPostalCode);
            Assert.AreEqual(order.ShipRegion, row.ShipRegion);
        }
        public void SearchOrdersRetrievesOrdersByName()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 1;
            ordersRowA.OrderName   = "OrderA";
            ordersRowA.Description = string.Empty;
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId     = 2;
            ordersRowB.OrderName   = "OrderB";
            ordersRowB.Description = string.Empty;
            ordersRowB.Approver    = "User";
            ordersRowB.Creator     = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowB);
            ds.AcceptChanges();


            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ICollection <Order> foundOrders = ordersService.SearchOrders("OrderA");

            Assert.AreEqual(1, foundOrders.Count);
            IEnumerator <Order> enumerator = foundOrders.GetEnumerator();

            enumerator.Reset();
            enumerator.MoveNext();
            Assert.AreEqual(1, enumerator.Current.OrderId);
        }
        public void DeleteRemovesOrderDetailsFromRepository()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRow = ds.Orders.NewOrdersRow();
            ordersRow.OrderId     = 2;
            ordersRow.Approver    = "CurrentUser";
            ordersRow.Creator     = "CurrentUser";
            ordersRow.OrderName   = "Test Order";
            ordersRow.OrderStatus = (int)OrderStatusEnum.Draft;
            ds.Orders.AddOrdersRow(ordersRow);
            OrdersManagementDataSet.OrderDetailsRow detailRow = ds.OrderDetails.NewOrderDetailsRow();
            detailRow.OrdersRow = ordersRow;
            detailRow.ProductId = 11;
            detailRow.Quantity  = 3;
            ds.OrderDetails.AddOrderDetailsRow(detailRow);
            ds.AcceptChanges();
            OrdersService ordersService = new OrdersService(ds, new FakeProductService());

            ordersService.DeleteOrder(2);

            Assert.AreEqual(0, ds.Orders.Count);
            Assert.AreEqual(0, ds.OrderDetails.Count);
        }
        private static OrdersManagementDataSet InitOrdersManagementDataSet()
        {
            OrdersManagementDataSet ds = new OrdersManagementDataSet();

            OrdersManagementDataSet.OrdersRow ordersRowA = ds.Orders.NewOrdersRow();
            ordersRowA.OrderId     = 1;
            ordersRowA.OrderName   = "Order A";
            ordersRowA.Description = "Description A";
            ordersRowA.Approver    = "User";
            ordersRowA.Creator     = "User";
            ordersRowA.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowA);

            OrdersManagementDataSet.OrdersRow ordersRowB = ds.Orders.NewOrdersRow();
            ordersRowB.OrderId     = 2;
            ordersRowB.OrderName   = "Order B";
            ordersRowB.Description = "Description B";
            ordersRowB.Approver    = "User";
            ordersRowB.Creator     = "User";
            ordersRowB.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowB);

            OrdersManagementDataSet.OrdersRow ordersRowC = ds.Orders.NewOrdersRow();
            ordersRowC.OrderId     = 3;
            ordersRowC.OrderName   = "Order C";
            ordersRowC.Description = "C";
            ordersRowC.Approver    = "User";
            ordersRowC.Creator     = "User";
            ordersRowC.OrderStatus = (int)OrderStatusEnum.Submitted;

            ds.Orders.AddOrdersRow(ordersRowC);
            ds.AcceptChanges();
            return(ds);
        }