Ejemplo n.º 1
0
        public static IProcessOrder GetPaymentMethod(PaymentType type)
        {
            IProcessOrder _processOrder = null;

            switch (type)
            {
            case PaymentType.PHYSICAL_PRODUCT:
                _processOrder = new PhysicalProductPayment();
                break;

            case PaymentType.BOOK:
                _processOrder = new BookPayment();
                break;

            case PaymentType.BOOKORPHYSICAL:
                _processOrder = new PhysicalorBookPayment();
                break;

            case PaymentType.VIDEO:
                _processOrder = new VideoPayment();
                break;

            case PaymentType.MEMBERSHIP:
                _processOrder = new MemberShipPayment();
                break;

            default:
                break;
            }
            return(_processOrder);
        }
        public static IProcessOrder GetPaymentMethod(PaymentFor type)
        {
            IProcessOrder _processOrder = null;

            switch (type)
            {
            case PaymentFor.PHYSICALPRODUCT:
                _processOrder = new PhysicalProductPayment();
                break;

            case PaymentFor.BOOK:
                _processOrder = new BookPayment();
                break;

            case PaymentFor.BOOKORPHYSICAL:
                _processOrder = new PhysicalorBookPayment();
                break;

            case PaymentFor.VIDEO:
                _processOrder = new VideoPayment();
                break;

            default:
                break;
            }
            return(_processOrder);
        }
 /// <summary>
 /// Initialise a new <see cref="OrderController"/> instance
 /// </summary>
 /// <param name="orderStore">
 /// The order store dependancy
 /// </param>
 /// <param name="processOrder">
 /// The process order action dependancy
 /// </param>
 /// <param name="addItemsToOrder">
 /// The add items to order action dependancy
 /// </param>
 /// <param name="removeItemsFromOrder">
 /// The remove items from order action dependancy
 /// </param>
 /// <param name="clearOrder">
 /// The clear order action dependancy
 /// </param>
 public OrderController(IOrderStore <Order> orderStore,
                        IProcessOrder processOrder,
                        IAddItemsToOrder addItemsToOrder,
                        IRemoveItemsFromOrder removeItemsFromOrder,
                        IClearOrder clearOrder)
 {
     this.orderStore           = orderStore;
     this.processOrder         = processOrder;
     this.addItemsToOrder      = addItemsToOrder;
     this.removeItemsFromOrder = removeItemsFromOrder;
     this.clearOrder           = clearOrder;
 }
Ejemplo n.º 4
0
        public void ProcessOrder_BookName_Empty_Test()
        {
            //arrange
            var video = GetProductInfo().Where(x => x.ProductType == Models.ProductTypes.VIDEO).FirstOrDefault();

            OrderProcess      = ProcessOrders.GetPaymentMethod(Models.PaymentType.VIDEO);
            video.Description = string.Empty;

            var ex = Assert.Throws <InvalidOperationException>(() => OrderProcess.ProcessPayment(video));

            Assert.That(ex.Message, Is.EqualTo("Video Descrption is missing"));
        }
        public void ProcessOrder_PhysicalProduct_Name_Empty_Test()
        {
            //arrange
            var product = GetProductInfo().Where(x => x.ProductType == Models.ProductTypes.PHYSICAL_PRODUCT).FirstOrDefault();

            product.Name = string.Empty;
            OrderProcess = ProcessOrders.GetPaymentMethod(Models.PaymentType.PHYSICAL_PRODUCT);

            //assert
            var ex = Assert.Throws <InvalidOperationException>(() => OrderProcess.ProcessPayment(product));

            Assert.That(ex.Message, Is.EqualTo("Physical Product Name is missing"));
        }
Ejemplo n.º 6
0
        public void Process_Empty_PhysicalProduct()
        {
            //arrange
            var video = GetProductInfo().Where(x => x.ProductType == BL.Models.ProductFor.VIDEO).FirstOrDefault();

            OrderProcess      = ProcessOrders.GetPaymentMethod(BL.Models.PaymentFor.VIDEO);
            video.Description = string.Empty;

            //Act
            var ex = OrderProcess.ProcessPayment(video);

            //Assert
            Assert.AreEqual(ex.Message, "Video Descrption is missing");
        }
        public void ProcessOrder_BookName_Empty_Test()
        {
            //arrange
            var book = GetProductInfo().Where(x => x.ProductType == Models.ProductTypes.BOOK).FirstOrDefault();

            book.Name    = string.Empty;
            OrderProcess = ProcessOrders.GetPaymentMethod(Models.PaymentType.BOOK);
            double royaltyAmount = book.Price * book.Quantity * book.Commission;

            //assert
            var ex = Assert.Throws <InvalidOperationException>(() => OrderProcess.ProcessPayment(book));

            Assert.That(ex.Message, Is.EqualTo("Book Name is missing"));
        }
        public void Process_Empty_PhysicalProduct()
        {
            //Arrange
            var product = GetProductInfo().Where(x => x.ProductType == BL.Models.ProductFor.BOOKORPHYSICAL).FirstOrDefault();

            product.AgentName = string.Empty;
            OrderProcess      = ProcessOrders.GetPaymentMethod(BL.Models.PaymentFor.BOOKORPHYSICAL);

            //Act
            var ex = OrderProcess.ProcessPayment(product);

            //Assert
            Assert.AreEqual(ex.Message, "Agent Name is missing.");
        }
        public void When_I_Pass_Valid_PhysicalProduct_Order_it_should_process()
        {
            //arrange
            var physcialProduct = GetProductInfo().Where(x => x.ProductType == Models.ProductTypes.PHYSICAL_PRODUCT).FirstOrDefault();

            OrderProcess = ProcessOrders.GetPaymentMethod(Models.PaymentType.PHYSICAL_PRODUCT);


            //act
            var result = OrderProcess.ProcessPayment(physcialProduct);

            //assert
            Assert.IsTrue(result.IsSuccess);
            Assert.AreEqual("Packing slip for shipping generated for physical product", result.Message);
        }
Ejemplo n.º 10
0
        public void Process_Empty_BookOrder()
        {
            //arrange
            var book = GetProductInfo().Where(x => x.ProductType == BL.Models.ProductFor.BOOK).FirstOrDefault();

            book.Name    = string.Empty;
            OrderProcess = ProcessOrders.GetPaymentMethod(BL.Models.PaymentFor.BOOK);
            double royaltyAmount = book.Price * book.Quantity * book.Commission;

            //Act
            var ex = OrderProcess.ProcessPayment(book);

            //assert

            Assert.AreEqual(ex.Message, "Book Name is missing");
        }
Ejemplo n.º 11
0
        public void Valid_BookOrder()
        {
            //Arrange
            var book = GetProductInfo().Where(x => x.ProductType == BL.Models.ProductFor.BOOK).FirstOrDefault();

            OrderProcess = ProcessOrders.GetPaymentMethod(BL.Models.PaymentFor.BOOK);
            double royaltyAmount = book.Price * book.Quantity * book.Commission;
            string message       = "Payment slip created with Amount -" + royaltyAmount;

            //Act
            var result = OrderProcess.ProcessPayment(book);

            //Assert
            Assert.IsTrue(result.IsSuccess);
            Assert.AreEqual(message, result.Message);
        }
Ejemplo n.º 12
0
        public void Valid_VideoOrder()
        {
            //arrange
            var video = GetProductInfo().Where(x => x.ProductType == BL.Models.ProductFor.VIDEO).FirstOrDefault();

            OrderProcess        = ProcessOrders.GetPaymentMethod(BL.Models.PaymentFor.VIDEO);
            video.Description   = "learning to msi";
            video.PackagingDate = DateTime.Today;

            //act
            var result = OrderProcess.ProcessPayment(video);

            //assert
            Assert.IsTrue(result.IsSuccess);
            Assert.AreEqual("Added First Aid video to the packing slip.", result.Message);
        }
Ejemplo n.º 13
0
        public void When_I_Pass_Valid_VideoOrder_it_should_process()
        {
            //arrange
            var video = GetProductInfo().Where(x => x.ProductType == Models.ProductTypes.VIDEO).FirstOrDefault();

            OrderProcess        = ProcessOrders.GetPaymentMethod(Models.PaymentType.VIDEO);
            video.Description   = "TestVideos";
            video.PackagingDate = DateTime.Today;

            //act
            var result = OrderProcess.ProcessPayment(video);

            //assert
            Assert.IsTrue(result.IsSuccess);
            Assert.AreEqual("Generated Packing slip", result.Message);
        }
        public void When_I_Pass_Valid_BookOrder_it_should_process()
        {
            //arrange
            var book = GetProductInfo().Where(x => x.ProductType == Models.ProductTypes.BOOK).FirstOrDefault();

            OrderProcess = ProcessOrders.GetPaymentMethod(Models.PaymentType.BOOK);
            double royaltyAmount = book.Price * book.Quantity * book.Commission;
            string message       = "Royalty payment slip created with Amount -" + royaltyAmount;

            //act
            var result = OrderProcess.ProcessPayment(book);

            //assert
            Assert.IsTrue(result.IsSuccess);
            Assert.AreEqual(message, result.Message);
        }
        public void Valid_PhysicalProduct_Order()
        {
            //arrange
            var physcialProduct = GetProductInfo().Where(x => x.ProductType == BL.Models.ProductFor.BOOKORPHYSICAL).FirstOrDefault();

            double Commission = (physcialProduct.Quantity * physcialProduct.Price) / 0.20;

            OrderProcess = ProcessOrders.GetPaymentMethod(BL.Models.PaymentFor.BOOKORPHYSICAL);
            string message = "Commision paid to agent -" + Commission;

            //act
            var result = OrderProcess.ProcessPayment(physcialProduct);

            //assert
            Assert.IsTrue(result.IsSuccess);
            Assert.AreEqual(message, result.Message);
        }
Ejemplo n.º 16
0
        private static void ProcessPayment(int options)
        {
            int memberShipType = 0;
            var paymentType    = (PaymentType)Enum.Parse(typeof(PaymentType), options.ToString());

            if (options == 3 || options == 6)
            {
                paymentType    = (PaymentType)Enum.Parse(typeof(PaymentType), "3".ToString());
                memberShipType = options == 3 ? 1 : 2;
                var result      = ProcessOrders.GetPaymentMethod(paymentType);
                var sampleInput = SampleInput.GetSampleDataMember(memberShipType);

                if (result != null)
                {
                    var data = result.ProcessPayment(sampleInput);

                    Console.WriteLine($"Order of {paymentType.ToString()} and  {data.Message}\n");
                }
                else
                {
                    Console.WriteLine("Invalid operation");
                }
            }
            else
            {
                IProcessOrder processor = ProcessOrders.GetPaymentMethod(paymentType);
                var           data      = SampleInput.GetSampleDataForOrder(paymentType);
                if (processor != null)
                {
                    var result = processor.ProcessPayment(data);

                    Console.WriteLine($"Order of {paymentType.ToString()} and  {result.Message}\n");
                }
                else
                {
                    Console.WriteLine("Invalid operation");
                }
            }
        }
Ejemplo n.º 17
0
 public Main()
 {
     _parseData    = new ParseData();
     _processOrder = new ProcessOrder();
 }
Ejemplo n.º 18
0
 public void Setup()
 {
     _processOrder = new ProcessOrder();
 }
Ejemplo n.º 19
0
 public CartController(IProduct productParam, IProcessOrder processOrderParam)
 {
     db           = productParam;
     processOrder = processOrderParam;
 }