public void AddPayment_CorrectAttributes_Success(int _clientId, string _paymentId)
        {
            var testSessionToken = SessionRepository.StartNewSession(_clientId);

            DatabaseQueryProcessor.Erase();
            Shared.FillTheDatabase();

            var addPaymentCommand = new AddPaymentCommand
            {
                sessionToken = testSessionToken,
                paymentId    = _paymentId
            };

            var lastOrder = DatabaseQueryProcessor.GetTheMostRecentOrder(_clientId);
            var total     = DatabaseQueryProcessor.GetTotal(lastOrder.orderId);

            var isSuccessfulPayment = PaymentMethod.Check(_paymentId, total);
            var handler             = new AddPaymentCommandHandler();
            var result = (SuccessInfoDto)handler.Handle(addPaymentCommand);

            DatabaseQueryProcessor.Erase();

            SessionRepository.RemoveSession(testSessionToken);
            Assert.IsTrue(result.isSuccess);
            Assert.IsTrue(isSuccessfulPayment);
        }
        public IResult Handle(AddPaymentCommand command)
        {
            int clientId = SessionRepository.GetClientIdOfSession(command.sessionToken);

            if (clientId == -1)
            {
                throw new Exception();
            }

            var order = DatabaseQueryProcessor.GetTheMostRecentOrder(clientId);

            if (order == null)
            {
                throw new Exception();
            }

            var totalPrice = DatabaseQueryProcessor.GetTotal(order.orderId);

            DatabaseQueryProcessor.CreateNewPayment(
                command.paymentId,
                order.orderId,
                totalPrice,
                DateTime.Now.ToString("yyyy-MM-dd")
                );

            ThreadPool.QueueUserWorkItem(
                o => new OrderPlacementEmail().Send(clientId));



            var isSuccessPayment = PaymentMethod.Check(command.paymentId, totalPrice);

            if (isSuccessPayment)
            {
                DatabaseQueryProcessor.UpdateOrder(order.orderId, 1);
                ThreadPool.QueueUserWorkItem(o =>
                                             new SuccessfullPaymentEmail().Send(clientId));
            }
            else
            {
                ThreadPool.QueueUserWorkItem(o =>
                                             new UnsuccessfullPaymentEmail().Send(clientId));
            }

            return(new SuccessInfoDto
            {
                isSuccess = true
            });
        }
Exemplo n.º 3
0
        public void AddOrder_CorrectAttributes_Success(int _clientId)
        {
            int    _key             = 0;
            string _country         = "Poland";
            string _city            = "Gdynia";
            string _street          = "Rzemieslnicza";
            int    _ZIPCode         = 30445;
            int    _buildingNumber  = 12;
            string _apartmentNumber = "1a";

            var testSessionToken = SessionRepository.StartNewSession(_clientId);

            DatabaseQueryProcessor.Erase();
            Shared.FillTheDatabase();

            var testOrderEntry = new OrderEntryDto
            {
                key      = 0,
                name     = "Lavazza",
                quantity = 1,
                price    = 15
            };
            var testOrderEntries = new OrderEntryDto[1];

            testOrderEntries[0] = testOrderEntry;

            var testAddress = new AddressDto
            {
                key             = _key,
                country         = _country,
                city            = _city,
                street          = _street,
                ZIPCode         = _ZIPCode,
                buildingNumber  = _buildingNumber,
                apartmentNumber = _apartmentNumber
            };


            var addOrderCommand = new AddOrderCommand
            {
                sessionToken = testSessionToken,
                orderEntries = testOrderEntries,
                totalPrice   = "15.00",
                address      = testAddress
            };

            var addressId = DatabaseQueryProcessor.GetAddress(_clientId,
                                                              _country,
                                                              _city,
                                                              _street,
                                                              _ZIPCode,
                                                              _buildingNumber,
                                                              _apartmentNumber);

            var handler = new AddOrderCommandHandler();
            var result  = (SuccessInfoDto)handler.Handle(addOrderCommand);

            var expectedOrder = DatabaseQueryProcessor.GetTheMostRecentOrder(_clientId);

            SessionRepository.RemoveSession(testSessionToken);
            DatabaseQueryProcessor.Erase();


            Assert.IsTrue(result.isSuccess);
        }