コード例 #1
0
        public void AddHardwareTicket_WithValidTicket_ReturnsAddedTicket()
        {
            // arrange
            int    accountid = 1;
            string problem   = "Ticket text";
            string device    = "PC-1";
            int    ticketId  = 1;         // will be added in repo

            var repo = new Mock <ITicketRepository>();

            repo
            .Setup(x => x.CreateTicket(It.IsAny <Ticket>()))
            .Returns((Ticket t) =>
            {
                t.TicketNumber = ticketId;
                return(t);
            });
            var mgr = new TicketManager(repo.Object);

            // act
            var result = mgr.AddTicket(accountid, device, problem);

            // assert
            Assert.Equal(ticketId, result.TicketNumber);
        }
コード例 #2
0
 public HttpResponseMessage PostTicket(TicketSave ticket)
 {
     try
     {
         return(Request.CreateResponse(manager.AddTicket(ticket)));
     }
     catch (Exception ex)
     {
         GlobalVariable.log.Write(LogLevel.Error, ex);
         return(Request.CreateResponse(HttpStatusCode.BadRequest, "Ticket cannot be created!"));
     }
 }
コード例 #3
0
 public ActionResult AddTicket(TicketCreateView TCV)
 {
     if (ModelState.IsValid)
     {
         TicketManager TM = new TicketManager();
         UserManager   UM = new UserManager();
         TCV.UserID = UM.GetUserID(TCV.LoginName);
         TM.AddTicket(TCV);
         return(RedirectToAction("Welcome", "Home"));
     }
     return(View());
 }
コード例 #4
0
        public void AddTicket_TicketIsinvalid_ReturnsValidationException()
        {
            //Arrange
            TicketManager ticketManager = new TicketManager(ticketRepository);

            //Act
            var result = ticketManager.AddTicket(1, "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");

            //Assert
            //assertion happens using attribute added to method
            //implicite private validation method testing
            //avoiding reflection
        }
コード例 #5
0
        public void ChangeTicketStateToClosed_ChangeOpenStateToClosed_StateHasChanged()
        {
            //Arrange
            TicketManager ticketManager = new TicketManager(ticketRepository);

            //Act
            ticketManager.AddTicket(1, "Unit test");
            ticketManager.ChangeTicketStateToClosed(1);
            var result = ticketManager.GetTicket(1);

            //Assert
            Assert.AreEqual(result.State, TicketState.Closed);
        }
コード例 #6
0
        public void AddItems(Order orderEditing)
        {
            while (true)
            {
                view.Clear();
                view.ShowOrder(orderEditing.TableNumber(), orderEditing.OpenedFor(), orderEditing.FormattedTempItemsOnOrder(), orderEditing.GetTempOrderCost());
                view.ShowMessage("==========================================");
                view.ShowMessage("Items available to add:");
                view.ShowMessage(itemManager.GetFormattedItems());
                view.ShowMessage("Enter the product ID to add to this order, or press 's' to save, or 'c' to cancel changes.");

                string cmd    = Console.ReadLine();
                int    i      = -1;
                bool   status = Int32.TryParse(cmd, out (i));
                if (cmd == "s")
                {
                    // save the order, generate ticket
                    // first save the temp ticket as a real ticket
                    ticketManager.AddTicket(orderEditing.TempTicket());

                    // add the tempTicket items to the order for real
                    orderEditing.AddItems(orderEditing.TempTicket().Items());

                    // delete the temp ticket reference
                    orderEditing.SetTempTicket(null);
                    Show();
                }
                else if (cmd == "c")
                {
                    // purge the temp ticket
                    orderEditing.SetTempTicket(null);
                    Show();
                }
                else if (!status)
                {
                    view.ShowError("Please enter a valid letter command.");
                }
                else if (!(i > 0 && i < itemManager.GetItems().Count + 1))
                {
                    view.ShowError("Please enter an item ID in range.");
                }
                else
                {
                    // it's a number. lookup item and add to ticket.
                    orderEditing.TempTicket().AddItem(itemManager.GetItem(i));

                    // go back to the start of this screen
                    AddItems(orderEditing);
                }
            }
        }
コード例 #7
0
        public void RemoveTicket_RemoveTheTicket_TicketRemoved()
        {
            //Arrange
            TicketManager ticketManager = new TicketManager(ticketRepository);

            //Ticket t = ticketRepository(1);

            //Act
            ticketManager.AddTicket(1, "Unit test");
            //ticketManager.RemoveTicket(t.TicketNumber);
            ticketManager.RemoveTicket(1);
            var result = ticketManager.GetTicket(1); // should throw an exception... but it does not (WIP)
            //Assert
        }
コード例 #8
0
        public void AddTicket_WithInvalidText_ReturnsValidationError()
        {
            // arrange
            int    accountid = 1;
            string question  = "Ticket text should be longer than 100 characters in order to make the verification step of the AddTicket process fail.";

            var repo = new Mock <ITicketRepository>();
            // repo won't be called when validation fails
            // so we don't need any setup here
            var mgr = new TicketManager(repo.Object);

            // act
            Action result = () => mgr.AddTicket(accountid, question);

            // assert
            Assert.Throws <ValidationException>(result);
        }
コード例 #9
0
        public void AddTicket_TicketIsValid_ReturnsTicket()
        {
            //Arrange
            TicketManager ticketManager = new TicketManager(ticketRepository);

            //When mocking
            //mockedRepository.Setup(x => x.CreateTicket(It.IsAny<Ticket>())).Returns<Ticket>(x => x);

            //Act
            var result = ticketManager.AddTicket(1, "I can't run my unit test, is it broken?");

            //Assert
            Assert.IsInstanceOfType(result, typeof(Ticket));
            Assert.AreEqual(result.AccountId, 1);
            Assert.AreEqual(result.State, TicketState.Open);
            Assert.AreEqual(result.Text, "I can't run my unit test, is it broken?");
        }
コード例 #10
0
        public void AddHardwareTicket_WithInvalidDeviceName_ReturnsValidationError()
        {
            // arrange
            int    accountid = 1;
            string problem   = "Ticket text";
            string device    = "1";

            var repo = new Mock <ITicketRepository>();
            // repo won't be called when validation fails
            // so we don't need any setup here
            var mgr = new TicketManager(repo.Object);

            // act
            Action result = () => mgr.AddTicket(accountid, device, problem);

            // assert
            Assert.Throws <ValidationException>(result);
        }
コード例 #11
0
        /// <summary>
        /// 投注购票
        /// </summary>
        public void BuyTicket(TicketMappingInfo ticket, UserInfo user)
        {
            try
            {
                using (ILHDBTran tran = BeginTran())
                {
                    UserManager   userManager   = new UserManager(tran);
                    TicketManager ticketManager = new TicketManager(tran);

                    UserBalanceEntity balance = userManager.GetBalance(user.UserId);
                    if (balance == null)
                    {
                        throw new FacadeException("帐户不存在,请先充值!");
                    }
                    decimal balanceMoney = balance.Balance.HasValue ? balance.Balance.Value : 0;
                    decimal freezeMoney  = balance.Freeze.HasValue ? balance.Freeze.Value : 0;
                    decimal enableMoney  = balanceMoney - freezeMoney;
                    if (enableMoney < ticket.Money)
                    {
                        throw new FacadeException("帐户余额不足,请先充值!");
                    }

                    TicketDetailEntity detail = new TicketDetailEntity();
                    detail.UserId        = user.UserId;
                    detail.TicketId      = ticket.TicketId;
                    detail.BalanceBefore = balanceMoney;
                    detail.FreezeBefore  = freezeMoney;
                    detail.PayMoney      = ticket.Money;
                    detail.BalanceAfter  = balanceMoney;
                    detail.FreezeAfter   = freezeMoney + ticket.Money;
                    detail.Status        = (int)TicketStatus.Requesting;
                    detail.Message       = "投注 - 冻结金额" + ticket.Money;
                    detail.CurrentTime   = DateTime.Now;
                    // 添加彩票购买明细日志记录 - 状态为请求中
                    ticketManager.AddTicketDetail(detail);
                    // 更新用户余额 - 冻结金额
                    balance.Freeze += ticket.Money;
                    userManager.ModifyBalance(balance);

                    TicketEntity entity = new TicketEntity();
                    entity.TicketId     = ticket.TicketId;
                    entity.BuyType      = (int)ticket.BuyType;
                    entity.Amount       = ticket.Amount;
                    entity.Money        = ticket.Money;
                    entity.UserId       = user.UserId;
                    entity.GameName     = ticket.IssueInfo.GameName;
                    entity.IssuseNumber = ticket.IssueInfo.Number;
                    entity.Status       = (int)TicketStatus.Requesting;
                    entity.RequestTime  = DateTime.Now;
                    ticketManager.AddTicket(entity);
                    foreach (string code in ticket.AnteCodes)
                    {
                        TicketAnteCodeEntity anteCode = new TicketAnteCodeEntity();
                        anteCode.TicketId = ticket.TicketId;
                        anteCode.AnteCode = code;
                        ticketManager.AddAnteCode(anteCode);
                    }
                    tran.Commit();
                }
            }
            catch (Exception ex)
            {
                throw HandleException(LogCategory.Ticket, "投注购票失败!", ex, ticket, user);
            }
        }
コード例 #12
0
        /// <summary>
        /// 投注购票
        /// </summary>
        public void BuyTicket(TicketMappingInfo ticket, UserInfo user)
        {
            try
            {
                using (ILHDBTran tran = BeginTran())
                {
                    UserManager userManager = new UserManager(tran);
                    TicketManager ticketManager = new TicketManager(tran);

                    UserBalanceEntity balance = userManager.GetBalance(user.UserId);
                    if (balance == null)
                    {
                        throw new FacadeException("帐户不存在,请先充值!");
                    }
                    decimal balanceMoney = balance.Balance.HasValue ? balance.Balance.Value : 0;
                    decimal freezeMoney = balance.Freeze.HasValue ? balance.Freeze.Value : 0;
                    decimal enableMoney = balanceMoney - freezeMoney;
                    if (enableMoney < ticket.Money)
                    {
                        throw new FacadeException("帐户余额不足,请先充值!");
                    }

                    TicketDetailEntity detail = new TicketDetailEntity();
                    detail.UserId = user.UserId;
                    detail.TicketId = ticket.TicketId;
                    detail.BalanceBefore = balanceMoney;
                    detail.FreezeBefore = freezeMoney;
                    detail.PayMoney = ticket.Money;
                    detail.BalanceAfter = balanceMoney;
                    detail.FreezeAfter = freezeMoney + ticket.Money;
                    detail.Status = (int)TicketStatus.Requesting;
                    detail.Message = "投注 - 冻结金额" + ticket.Money;
                    detail.CurrentTime = DateTime.Now;
                    // 添加彩票购买明细日志记录 - 状态为请求中
                    ticketManager.AddTicketDetail(detail);
                    // 更新用户余额 - 冻结金额
                    balance.Freeze += ticket.Money;
                    userManager.ModifyBalance(balance);

                    TicketEntity entity = new TicketEntity();
                    entity.TicketId = ticket.TicketId;
                    entity.BuyType = (int)ticket.BuyType;
                    entity.Amount = ticket.Amount;
                    entity.Money = ticket.Money;
                    entity.UserId = user.UserId;
                    entity.GameName = ticket.IssueInfo.GameName;
                    entity.IssuseNumber = ticket.IssueInfo.Number;
                    entity.Status = (int)TicketStatus.Requesting;
                    entity.RequestTime = DateTime.Now;
                    ticketManager.AddTicket(entity);
                    foreach (string code in ticket.AnteCodes)
                    {
                        TicketAnteCodeEntity anteCode = new TicketAnteCodeEntity();
                        anteCode.TicketId = ticket.TicketId;
                        anteCode.AnteCode = code;
                        ticketManager.AddAnteCode(anteCode);
                    }
                    tran.Commit();
                }
            }
            catch (Exception ex)
            {
                throw HandleException(LogCategory.Ticket, "投注购票失败!", ex, ticket, user);
            }
        }