Example #1
0
        private OrderDataLines SetupOrderDataLines_List(List <string> OrderList, string Key)
        {
            OrderDataLines orderLines = new OrderDataLines();

            orderLines.OrderKey = Key;
            orderLines.Lines    = OrderList;
            return(orderLines);
        }
Example #2
0
        public void OrderHeaderHaveIncorrectDateFormatForCargoReady()
        {
            //Arrange
            OrderDataLines           dataLines = SetupOrderDataLines_Single("H,PO2008-01,SHANGHAI FURNITURE COMPANY,CNSHA,AUMEL,25/25/20", "PO2008-01");
            Mock <OrderHeaderMapper> sut       = new Mock <OrderHeaderMapper>();

            //Assert
            Assert.Throws <Exception>(() => sut.Object.Map(dataLines));
        }
Example #3
0
        public void OrderHeaderHaveMissingDestination()
        {
            //Arrange
            OrderDataLines           dataLines = SetupOrderDataLines_Single("H,PO2008-01,SHANGHAI FURNITURE COMPANY,CNSHA,,1/05/2014", "PO2008-01");
            Mock <OrderHeaderMapper> sut       = new Mock <OrderHeaderMapper>();

            //Assert
            Assert.Throws <Exception>(() => sut.Object.Map(dataLines));
        }
Example #4
0
        public void OrderHeaderHaveMissingSupplierName()
        {
            //Arrange
            OrderDataLines           dataLines = SetupOrderDataLines_Single("H,PO2008-01,,CNSHA,AUMEL,1/05/2014", "PO2008-01");
            Mock <OrderHeaderMapper> sut       = new Mock <OrderHeaderMapper>();

            //Assert
            Assert.Throws <Exception>(() => sut.Object.Map(dataLines));
        }
        public void OrderDetailsHaveMissingProductDescription()
        {
            //Arrange
            OrderDataLines            dataLines = SetupOrderDataLines_Single("D,PO2008-01,1,,100,", "PO2008-01");
            Mock <OrderDetailsMapper> sut       = new Mock <OrderDetailsMapper>();

            //Assert
            Assert.Throws <Exception>(() => sut.Object.Map(dataLines));
        }
Example #6
0
        public void OrderDetailsNotFoundForIncorrectOrderNumber()
        {
            //Arrange
            OrderDataLines            dataLines = SetupOrderDataLines_List(fakeOrderList, "PO20007 - 01");
            Mock <OrderDetailsMapper> mockOrderDetailsMapper = new Mock <OrderDetailsMapper>();

            //Assert
            Assert.Throws <Exception>(() => new OrderDetailsReader(dataLines, mockOrderDetailsMapper.Object));
        }
Example #7
0
        public void MissingOrderDetailsForOrderNumber()
        {
            //arrange
            OrderDataLines            orderLines             = SetupOrderDataLines_Single("H,PO2008 - 01,SHANGHAI FURNITURE COMPANY,CNSHA,AUMEL,1 / 05 / 2014", "PO2008 - 01");
            Mock <OrderDetailsMapper> mockOrderDetailsMapper = new Mock <OrderDetailsMapper>();

            //Assert
            Assert.Throws <Exception>(() => new OrderDetailsReader(orderLines, mockOrderDetailsMapper.Object));
        }
        public void OrderDetailsHaveIncorrectDataFormatForOrderQty()
        {
            //Arrange
            OrderDataLines            dataLines = SetupOrderDataLines_Single("D,PO2008-01,1,RED LOUNGES,ABC,", "PO2008-01");
            Mock <OrderDetailsMapper> sut       = new Mock <OrderDetailsMapper>();

            //Assert
            Assert.Throws <Exception>(() => sut.Object.Map(dataLines));
        }
Example #9
0
        public void DoMappingForPurchaseOrderSuccessfully()
        {
            //Arrange
            OrderDataLines           dataLines = SetupOrderDataLines_Single("H,PO2008-01,SHANGHAI FURNITURE COMPANY,CNSHA,AUMEL,01/02/2014", "PO2008-01");
            Mock <OrderHeaderMapper> sut       = new Mock <OrderHeaderMapper>();

            //Assert
            Assert.NotNull(sut.Object.Map(dataLines));
        }
        public void OrderDetailsHaveMissingOrderNumber()
        {
            //Arrange
            OrderDataLines            dataLines = SetupOrderDataLines_Single("D,,1,RED LOUNGES,100,", "PO2008-01");
            Mock <OrderDetailsMapper> sut       = new Mock <OrderDetailsMapper>();

            //Assert
            Assert.Throws <Exception>(() => sut.Object.Map(dataLines));
        }
Example #11
0
        public void MissingLineNumberForOrderDetails()
        {
            //arrange
            OrderDataLines            orderLines             = SetupOrderDataLines_Single("D,PO2008 - 01,,RED LOUNGES,100,", "PO2008 - 01");
            Mock <OrderDetailsMapper> mockOrderDetailsMapper = new Mock <OrderDetailsMapper>();
            OrderDetailsReader        sut = new OrderDetailsReader(orderLines, mockOrderDetailsMapper.Object);

            //assert
            Assert.Throws <Exception>(() => sut.GetPurchaseOrderLineList());
        }
Example #12
0
        public void GetMatchingDetailsForOrderNumber()
        {
            //Arrange
            OrderDataLines            dataLines = SetupOrderDataLines_List(fakeOrderList, "PO2008 - 01");
            Mock <OrderDetailsMapper> mockOrderDetailsMapper = new Mock <OrderDetailsMapper>();
            OrderDetailsReader        sut = new OrderDetailsReader(dataLines, mockOrderDetailsMapper.Object);

            //Assert
            Assert.Equal(2, sut.GetPurchaseOrderLineList().Count);
        }
        public void GetMatchingHeaderForOrderNumber()
        {
            //Arrange
            OrderDataLines           dataLines             = SetupOrderDataLines_List(fakeOrderList, "PO2008 - 01");
            Mock <OrderHeaderMapper> mockOrderHeaderMapper = new Mock <OrderHeaderMapper>();
            OrderHeaderReader        sut = new OrderHeaderReader(dataLines, mockOrderHeaderMapper.Object);

            //Assert
            Assert.NotNull(sut.GetPurchaseOrder());
        }
Example #14
0
        public void OrderDetailsFoundForOrderNumber()
        {
            //Arrange
            OrderDataLines            dataLines = SetupOrderDataLines_List(fakeOrderList, "PO2008 - 01");
            Mock <OrderDetailsMapper> mockOrderDetailsMapper = new Mock <OrderDetailsMapper>();
            OrderDetailsReader        sut = new OrderDetailsReader(dataLines, mockOrderDetailsMapper.Object);

            //Assert
            Assert.NotNull(sut);
        }
Example #15
0
        private OrderDataLines SetupOrderDataLines_Single(string DataList, string Key)
        {
            OrderDataLines orderLines      = new OrderDataLines();
            List <string>  OrderDetailList = new List <string>();

            OrderDetailList.Add(DataList);

            orderLines.OrderKey = Key;
            orderLines.Lines    = OrderDetailList;
            return(orderLines);
        }
Example #16
0
        public OrderDataLines SetupOrderDataLines_Single(string orderHeaderLine, string orderKey)
        {
            List <string> Lines = new List <string>();

            Lines.Add(orderHeaderLine);
            OrderDataLines order = new OrderDataLines();

            order.OrderKey = orderKey;
            order.Lines    = Lines;
            return(order);
        }
        public OrderHeaderReader(OrderDataLines orderDataLines, IOrderHeaderMapper mapper)
        {
            this._orderDataLines = orderDataLines;
            this._mapper         = mapper;
            // Get Single Line that start with H for Order Header
            this.HeaderLine = orderDataLines.Lines.Where(x => x.ToUpper().StartsWith("H") &&
                                                         x.Split(",")[1].ToString() == orderDataLines.OrderKey)
                              .FirstOrDefault();

            if (this.HeaderLine == null)
            {
                throw new Exception(String.Format(Messages.No_Header_Found_For, this._orderDataLines.OrderKey));
            }
        }
        public void MissingHeaderForOrderDetails()
        {
            //arrange
            List <string> OrderDetailsList = new List <string>();

            OrderDetailsList.Add("D,PO2008 - 01,1,RED LOUNGES,100,");
            OrderDetailsList.Add("D,PO2008 - 01,2,GREY LOUNGES,50,");
            OrderDataLines dataLines = SetupOrderDataLines_List(OrderDetailsList, "PO2008 - 01");

            Mock <OrderHeaderMapper> sut = new Mock <OrderHeaderMapper>();

            //Assert
            Assert.Throws <Exception>(() => new OrderHeaderReader(dataLines, sut.Object));
        }
Example #19
0
        /// <summary>
        /// Get Purchase order based on both the Header and Details
        /// </summary>
        /// <param name="orderDataLine"></param>
        /// <returns></returns>
        public PurchaseOrder GetPurchaseOrder(OrderDataLines orderDataLine)
        {
            PurchaseOrder purchaseOrder = new PurchaseOrder();

            //Get the Header for the orderKey
            OrderHeaderReader header = new OrderHeaderReader(orderDataLine, orderHeaderMapper);

            purchaseOrder = header.GetPurchaseOrder();

            //Then Get the Order Line list for that orderKey
            OrderDetailsReader content = new OrderDetailsReader(orderDataLine, orderDetailsMapper);

            purchaseOrder.Lines = content.GetPurchaseOrderLineList();

            return(purchaseOrder);
        }
        /// <summary>
        /// Return Single PurchaseOrder without any orderlines
        /// </summary>
        /// <returns>PurchaseOrder</returns>
        public PurchaseOrder GetPurchaseOrder()
        {
            var lines = HeaderLine.Split(",").ToList();

            if (lines == null)
            {
                throw new Exception(String.Format(Messages.No_Header_Found_For, this._orderDataLines.OrderKey));
            }
            OrderDataLines order = new OrderDataLines()
            {
                Lines    = lines,
                OrderKey = this._orderDataLines.OrderKey
            };

            return(this._mapper.Map(order));
        }
        public OrderDetailsReader(OrderDataLines orderLines, IOrderDetailsMapper mapper)
        {
            this._orderLines = orderLines;
            this._mapper     = mapper;

            // Filter the Lines to have only ones start with "D" for Order details
            // for specific Order
            this._orderLines.Lines = orderLines.Lines.FindAll(x => x.ToUpper().StartsWith("D") &&
                                                              x.Split(",")[1].ToString() == orderLines.OrderKey)
                                     .ToList();

            if (this._orderLines.Lines.Count() == 0)
            {
                throw new Exception(String.Format(Messages.No_Order_Details_Found_For, this._orderLines.OrderKey));
            }
        }
Example #22
0
        /// <summary>
        /// Validate The ORder Details if it has any missing data or incorrect data type
        /// Map the Order Details to the PurchaseOrderLine object
        /// </summary>
        /// <param name="orderDataLines">PurchaseOrderLine</param>
        /// <returns></returns>
        public PurchaseOrderLine Map(OrderDataLines orderDataLines)
        {
            if (orderDataLines.Lines.Count == 0)
            {
                throw new Exception(String.Format(Messages.No_Order_Details_Found_For, orderDataLines.OrderKey));
            }

            //Perform validation on data and throw exception if there is any before proceed to perform mapping
            this.Validate(orderDataLines);

            var Lines = orderDataLines.Lines.SplitDataArray();

            return(new PurchaseOrderLine()
            {
                LineNumber = int.Parse(Lines[2]),
                ProductDescription = Lines[3],
                OrderQty = int.Parse(Lines[4])
            });
        }
Example #23
0
        /// <summary>
        ///  Validate The ORder Header if it has any missing data or incorrect data type
        ///  throw an exception if any data or incorrect data type
        /// </summary>
        /// <param name="orderDataLines"></param>
        private void Validate(OrderDataLines orderDataLines)
        {
            int    index           = 0;
            string FieldsNewReview = "";


            var Lines = orderDataLines.Lines.SplitDataArray();

            foreach (string item in Lines)
            {
                if (index == 1 && item == "")
                {
                    FieldsNewReview += "CustomerPo,";
                }
                else if (index == 2 && item == "")
                {
                    FieldsNewReview += "Supplier,";
                }
                else if (index == 3 && item == "")
                {
                    FieldsNewReview += "Origin,";
                }
                else if (index == 4 && item == "")
                {
                    FieldsNewReview += "Destination,";
                }
                else if (index == 5 && (item == "" || !item.IsValidDate()))
                {
                    FieldsNewReview += "CargoReady,";
                }
                index += 1;
            }
            if (FieldsNewReview.EndsWith(","))
            {
                FieldsNewReview = FieldsNewReview.Substring(0, FieldsNewReview.Length - 1);
            }

            if (FieldsNewReview.Length > 0)
            {
                throw new Exception(String.Format(Messages.Header_Fields_Need_Review, FieldsNewReview, orderDataLines.OrderKey));
            }
        }
Example #24
0
        /// <summary>
        /// Validate The ORder Header if it has any missing data or incorrect data type
        /// Map the Order Header to the PurchaseOrder object
        /// </summary>
        /// <param name="orderDataLines"></param>
        /// <returns>PurchaseOrderLine</returns>
        public PurchaseOrder Map(OrderDataLines orderDataLines)
        {
            if (orderDataLines.Lines.Count == 0)
            {
                throw new Exception(String.Format(Messages.No_Header_Found_For, orderDataLines.OrderKey));
            }

            //Perform validation on data and throw exception if there is any before proceed to perform mapping
            this.Validate(orderDataLines);

            var Lines = orderDataLines.Lines.SplitDataArray();

            return(new PurchaseOrder()
            {
                CustomerPo = Lines[1],
                Supplier = Lines[2].GenerateCodeId(),
                Origin = Lines[3],
                Destination = Lines[4],
                CargoReady = DateTime.Parse(Lines[5])
            });
        }
        /// <summary>
        ///  Get the Purchase Order Lines for specific Order
        /// </summary>
        /// <returns>List<PurchaseOrderLine></returns>
        public List <PurchaseOrderLine> GetPurchaseOrderLineList()
        {
            List <PurchaseOrderLine> purchaseOrderLineList = new List <PurchaseOrderLine>();
            var OrderLines = this._orderLines.Lines.Select(x => x.Split(",")).ToList();

            if (OrderLines.Count() == 0)
            {
                throw new Exception(String.Format(Messages.No_Order_Details_Found_For, this._orderLines.OrderKey));
            }


            foreach (string[] data in OrderLines)
            {
                OrderDataLines order = new OrderDataLines()
                {
                    OrderKey = this._orderLines.OrderKey,
                    Lines    = data.ToList()
                };
                purchaseOrderLineList.Add(this._mapper.Map(order));
            }

            return(purchaseOrderLineList);
        }