public List <TravelRequest> EditTravelRequest(int mgrId, int travelId, TravelRequest updatedModel)
        {
            List <TravelRequest> updatedList = new List <TravelRequest>();
            var record = _context.TravelRequests.SingleOrDefault(i => i.TravelId == travelId);

            record.TravelRequestName = updatedModel.TravelRequestName;
            record.TravelTypeId      = updatedModel.TravelTypeId;
            record.StartDate         = updatedModel.StartDate;
            record.EndDate           = updatedModel.EndDate;
            record.Place             = updatedModel.Place;
            record.EmployeeProjectId = (from ep in _context.EmployeesProjects
                                        where ep.EmployeeId == updatedModel.EmployeeId &&
                                        ep.ProjectId == updatedModel.ProjectId
                                        select ep.Id).FirstOrDefault();

            record.ClientId         = updatedModel.ClientId;
            record.StatusId         = updatedModel.StatusId;
            record.TravelType       = _context.TravelTypes.FirstOrDefault(i => i.TravelTypeId == record.TravelTypeId);
            record.Employee_Project = _context.EmployeesProjects.FirstOrDefault(i => i.Id == record.EmployeeProjectId);
            record.Client           = _context.Clients.FirstOrDefault(i => i.ClientId == record.ClientId);
            record.Status           = _context.Statuses.FirstOrDefault(i => i.StatusId == record.StatusId);
            _context.SaveChanges();
            updatedList = this.ViewTravelRequests(mgrId);
            return(updatedList);
        }
示例#2
0
        /// <summary>
        /// <see cref="MyCompany.Travel.Data.Repositories.ITravelRequestRepository"/>
        /// </summary>
        /// <param name="travelRequest"><see cref="MyCompany.Travel.Data.Repositories.ITravelRequestRepository"/></param>
        public async Task UpdateAsync(TravelRequest travelRequest)
        {
            _context.Entry <TravelRequest>(travelRequest)
            .State = EntityState.Modified;

            await _context.SaveChangesAsync();
        }
        public async Task TravelRequestService_UpdateTravelRequest_NotFail_Test()
        {
            var context       = new Data.MyCompanyContext();
            var travelRequest = context.TravelRequests.FirstOrDefault(r => r.Employee.EmployeePictures.Any());
            var client        = new MyCompanyClient(SecurityHelper.UrlBase, SecurityHelper.AccessToken);

            var newTravelRequest = new TravelRequest()
            {
                TravelRequestId = travelRequest.TravelRequestId,
                Name            = travelRequest.Name,
                Description     = travelRequest.Description,
                From            = Guid.NewGuid().ToString(),
                To                 = travelRequest.To,
                Depart             = travelRequest.Depart,
                Return             = travelRequest.Return,
                CreationDate       = travelRequest.CreationDate,
                LastModifiedDate   = travelRequest.LastModifiedDate,
                AccommodationNeed  = travelRequest.AccommodationNeed,
                TransportationNeed = travelRequest.TransportationNeed,
                Comments           = travelRequest.Comments,
                RelatedProject     = travelRequest.RelatedProject,
                Status             = (TravelRequestStatus)(int)travelRequest.Status,
                TravelType         = (TravelType)(int)travelRequest.TravelType,
                EmployeeId         = travelRequest.EmployeeId,
            };

            await client.TravelRequestService.Update(newTravelRequest);

            var newContext = new Data.MyCompanyContext();
            var actual     = newContext.TravelRequests.FirstOrDefault(r => r.TravelRequestId == travelRequest.TravelRequestId);

            Assert.AreEqual(newTravelRequest.From, actual.From);
        }
        public void CreateTravelRequest(TravelRequest travelDetails)
        {
            Context.TravelDetails.Add(new TravelDetail
            {
                TravelFrom = travelDetails.TravelFrom,
                TravelTo   = travelDetails.TravelTo,
                StartDate  = travelDetails.StartDate,
                EndDate    = travelDetails.EndDate,
                Purpose    = travelDetails.PurposeOfTravel,
                ProjectId  = Context.Projects.Where(c => c.ProjectName == travelDetails.ProjectName).Select(c => c.ProjectId).FirstOrDefault(),
            });
            Context.SaveChanges();


            Context.TravelProgresses.Add(new TravelProgress
            {
                TravelInitiatedBy   = Context.Users.Where(c => c.UserName == travelDetails.InitiatorName).Select(x => x.UserId).FirstOrDefault(),
                TravelInitiatedDate = travelDetails.InitiatedDate,
            });

            Context.SaveChanges();
            travelDetails.EmployeeName = travelDetails.EmployeeName.Replace(' ', '.');
            Context.Travels.Add(new Travel
            {
                TravellerId      = Context.Users.Where(c => c.UserName == travelDetails.EmployeeName).Select(x => x.UserId).FirstOrDefault(),
                TravelDetailsId  = Context.TravelDetails.Where(c => c.TravelFrom == travelDetails.TravelFrom && c.StartDate == travelDetails.StartDate).Select(x => x.TravelDetailsId).FirstOrDefault(),
                TravelProgressId = Context.TravelProgresses.Select(z => z.TravelProgressId).FirstOrDefault(),
                IsCancelled      = "Initiated",
            });
            Context.SaveChanges();
        }
        public async Task TravelRequestService_AddTravelRequest_Added_NotFail_Test()
        {
            var context  = new Data.MyCompanyContext();
            int expected = context.TravelRequests.Count() + 1;

            var client        = new MyCompanyClient(SecurityHelper.UrlBase, SecurityHelper.AccessToken);
            var employeeId    = context.Employees.FirstOrDefault().EmployeeId;
            var TravelRequest = new TravelRequest()
            {
                Name               = "Bussiness Travel",
                Description        = "Lorem ipsum dolor sit amet.",
                From               = "From",
                To                 = "To",
                Depart             = DateTime.UtcNow.AddDays(5),
                Return             = DateTime.UtcNow.AddDays(7),
                CreationDate       = DateTime.UtcNow.AddDays(-1),
                LastModifiedDate   = DateTime.UtcNow,
                AccommodationNeed  = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
                TransportationNeed = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
                Comments           = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat",
                RelatedProject     = "MyCompany",
                Status             = TravelRequestStatus.Approved,
                TravelType         = TravelType.Roundtrip,
                EmployeeId         = employeeId,
            };

            int travelRequestId = await client.TravelRequestService.Add(TravelRequest);

            int actual = context.TravelRequests.Count();

            Assert.AreEqual(expected, actual);
        }
        public async Task <int> Add(TravelRequest travelRequest)
        {
            if (travelRequest == null)
            {
                throw new ArgumentNullException("travelRequest");
            }

            var employee = await _employeeRepository.GetAsync(travelRequest.EmployeeId);

            var team = employee.Team;

            if (team == null || team.Manager == null)
            {
                travelRequest.Status = TravelRequestStatus.Approved;
            }

            var newTravelRequestId = await _travelRequestRepository.AddAsync(travelRequest);

            if (team != null)
            {
                var manager = team.Manager;
                if (manager != null)
                {
                    var newTravelRequest = await _travelRequestRepository.GetWithEmployeeInfoAsync(newTravelRequestId);

                    TravelsNotificationHub.NotifyNew(newTravelRequest, manager.Email);
                    await _notificationService.EmailNotifyNewRequest(newTravelRequest);
                }
            }

            return(newTravelRequestId);
        }
示例#7
0
        public IActionResult PostTravelRequest(TravelRequest travelRequest, string id)
        {
            string userId;

            try
            {
                userId = User.Claims.First(c => c.Type == "UserID").Value;
            }
            catch
            {
                return(Unauthorized());
            }
            travelRequest.CreateDate = DateTime.Now;
            var traveler = _userService.GetSingleByCondition(s => s.Id == userId, null);
            var host     = _userService.GetSingleByCondition(s => s.Id == id, null);

            if (host == null || traveler == null)
            {
                return(NotFound());
            }
            var oldTravelRequests = _travelRequestService.GetMultiByCondition(s => s.Sender.Id == traveler.Id && s.Receiver.Id == host.Id, null);

            foreach (TravelRequest i in oldTravelRequests)
            {
                if (i.IsAccepted != true && i.IsCanceled != true)
                {
                    return(BadRequest(new { message = "You already have unaccepted travelrequest with this user!" }));
                }
            }
            travelRequest.Sender   = traveler;
            travelRequest.Receiver = host;
            _travelRequestService.Add(travelRequest);
            _travelRequestService.SaveChanges();
            return(Ok());
        }
示例#8
0
 public void generateLetterOnDesig(int travelId, TravelRequest approvedTravel)
 {
     if (approvedTravel.StatusId == 2)
     {
         string templatePath = repo.getInvitationFormat(travelId, approvedTravel);
         if (templatePath != null)
         {
             string text = File.ReadAllText(templatePath, Encoding.UTF8);
             //keeep the feilds ready for thr file
             feilds = repo.getFeildsForInvitationLetter(approvedTravel);
             if (feilds != null)
             {
                 this.createFile(text, feilds);
             }
             else
             {
                 throw new System.ArgumentException("the feilds to be filled in the text file is null", "feilds:null");
             }
         }
         else
         {
             throw new System.ArgumentException(" NO InvitationTemplaten found for this designation check InvitationLetterFormatsTable In DB", "");
         }
     }
 }
示例#9
0
        public async Task TravelNotificationServiceTests_EmailNotifyStatusChange_Completed_Test()
        {
            var emailer = new Common.Notification.Fakes.StubIEmailer()
            {
                InstanceObserver = new StubObserver()
            };
            var templatesRepository = new Common.Notification.Fakes.StubIEmailTemplatesRepository();
            var employeesRepository = new Data.Repositories.Fakes.StubIEmployeeRepository();

            employeesRepository.GetAsyncInt32 = (id) =>
            {
                return(Task.FromResult(new Employee()
                {
                    EmployeeId = id,
                    FirstName = "My",
                    LastName = "Employee",
                    Email = "*****@*****.**"
                }));
            };

            TravelNotificationService service       = new TravelNotificationService(emailer, templatesRepository, employeesRepository);
            TravelRequest             travelRequest = new TravelRequest()
            {
                Status = TravelRequestStatus.Completed
            };

            await service.EmailNotifyStatusChange(travelRequest, "my reason");

            var observer = (StubObserver)emailer.InstanceObserver;

            Assert.AreEqual(1, observer.GetCalls().Count(c => c.StubbedMethod.Name == "Send"));
        }
示例#10
0
        public HttpResponseMessage GetTravelRequestDetails(int travelRequestId)
        {
            HttpResponseMessage response = null;

            try
            {
                TravelRequest result = travelRequestService.GetTravelRequestDetail(travelRequestId);

                //TravelRequest result = new TravelRequest()
                //{
                //    BadgeNumber                 = 10005,
                //    DepartureDateTime           = DateTime.Now,
                //    MeetingBeginDateTime        = DateTime.Now.AddDays(3),
                //    MeetingEndDateTime          = DateTime.Now.AddDays(4),
                //    MeetingLocation             = "Downtown LA",
                //    Organization                = "LA Metro",
                //    ReturnDateTime              = DateTime.Now.AddDays(4),
                //    SubmittedByBadgeNumber      = 10005,
                //    SubmittedDateTime           = DateTime.Now,
                //    TravelRequestId             = travelRequestId,
                //    Name                        = "Nataraj.S",
                //    Division                    = "Development",
                //    Section                     = "IT"
                //};
                response = Request.CreateResponse(HttpStatusCode.OK, result);
            }
            catch (Exception ex)
            {
                LogMessage.Log("GetTravelRequestDetails :" + ex.Message);
                response = Request.CreateResponse(HttpStatusCode.InternalServerError, "Couldn't retrive travel request details for the given travel request Id : " + ex.Message);
            }
            return(response);
        }
示例#11
0
        public async Task TravelRequestsController_Update_Test()
        {
            bool called = false;
            var  travelRequestsRepository = new Data.Repositories.Fakes.StubITravelRequestRepository();
            var  employeeRepository       = new Data.Repositories.Fakes.StubIEmployeeRepository();
            var  notificationService      = new Web.Notifications.Fakes.StubITravelNotificationService();

            var updateTravelRequests = new TravelRequest()
            {
                TravelRequestId = 1,
            };

            travelRequestsRepository.UpdateAsyncTravelRequest = (TravelRequest) =>
            {
                Assert.IsTrue(updateTravelRequests.TravelRequestId == TravelRequest.TravelRequestId);
                called = true;

                return(Task.FromResult(string.Empty));
            };

            var target = new TravelRequestsController(travelRequestsRepository, employeeRepository, new SecurityHelper(), notificationService);
            await target.Update(updateTravelRequests);

            Assert.IsTrue(called);
        }
示例#12
0
        //public IHttpActionResult EditTravelRequest(int managerId, int travelId, TravellingEmp updatedModel)
        //{
        //    List<TravellingEmp> te = new List<TravellingEmp>();
        //    Manager manager = new Manager(te);

        //    te = manager.EditTravelRequest(managerId, travelId,updatedModel);
        //    return Json(te);

        //}
        public IHttpActionResult EditTravelRequest(int managerId, int travelId, TravelRequest updatedModel)
        {
            List <TravelRequest> te = new List <TravelRequest>();
            Manager manager         = new Manager(te);

            te = manager.EditTravelRequest(managerId, travelId, updatedModel);
            return(Json(te));
        }
示例#13
0
        public IHttpActionResult ApproveTravel(int travelId, TravelRequest approvedTravel)
        {
            List <TravelRequest> te = new List <TravelRequest>();
            Admin admin             = new Admin(te);

            te = admin.ApproveTravel(travelId, approvedTravel);
            return(Json(te));
        }
        public InvitationLetterFeilds getFeildsForInvitationLetter(TravelRequest tr)
        {
            InvitationLetterFeilds feilds = new InvitationLetterFeilds();
            string empName;
            //get empprojId from EmployeesProjects table
            var EmpProjId = (from pe in _context.EmployeesProjects
                             where tr.EmployeeId == pe.EmployeeId &&
                             tr.ProjectId == pe.ProjectId
                             select pe.Id).FirstOrDefault();
            //check if that id exists in travel request table
            var isPresent = _context.TravelRequests.Any(i => i.EmployeeProjectId == EmpProjId);

            if (isPresent)
            {
                //first get emp id for te corresponsing EmpPrjId from EmployeesProjects table

                var empId = (from pe in _context.EmployeesProjects
                             where pe.Id == EmpProjId
                             select pe.EmployeeId).FirstOrDefault();
                //get the emp name for the corresponding empId from emp table
                empName = (from e in _context.Employees
                           where e.EmployeeId == empId
                           select e.EmployeeName).FirstOrDefault();
            }
            else
            {
                throw new System.ArgumentException("employeee not connected to the project check EmployeesProjectsTable", "");
            }

            var client = (from c in _context.Clients
                          where c.ClientId == tr.ClientId
                          select c.ClientName).FirstOrDefault();

            var project = (from p in _context.Projects
                           where p.ProjectId == tr.ProjectId
                           select p.ProjectName).FirstOrDefault();

            var managerId = (from p in _context.Projects
                             where p.ProjectId == tr.ProjectId
                             select p.InchargeId).FirstOrDefault();

            var managerName = (from e in _context.Employees
                               where e.EmployeeId == managerId
                               select e.EmployeeName).FirstOrDefault();

            feilds.EmployeeName = empName;
            feilds.StartDate    = tr.StartDate;
            feilds.EndDate      = tr.EndDate;
            feilds.Place        = tr.Place;
            feilds.ProjectName  = project;
            feilds.ClientName   = client;
            feilds.empId        = tr.EmployeeId;
            feilds.travelId     = tr.TravelId;
            feilds.travelName   = tr.TravelRequestName;
            feilds.managerName  = managerName;

            return(feilds);
        }
示例#15
0
        /// <summary>
        /// Sends an email with the new status of the travel request
        /// </summary>
        /// <param name="travelRequest">the travel request</param>
        /// <param name="reason">reason for status change</param>
        public async Task EmailNotifyStatusChange(TravelRequest travelRequest, string reason)
        {
            try
            {
                string baseUrl = GetBaseUrl();

                var substitutions = new Dictionary <string, string>();
                substitutions.Add("APPLICATIONURL", baseUrl);
                substitutions.Add("TRAVELDETAILURL", String.Format("{0}?travelId={1}", baseUrl, travelRequest.TravelRequestId));

                var employee = await _employeeRepository.GetAsync(travelRequest.EmployeeId);

                if (employee != null)
                {
                    if (travelRequest.Status == TravelRequestStatus.Approved)
                    {
                        SendTemplate(
                            String.Format("{0} {1}", employee.FirstName, employee.LastName),
                            employee.Email,
                            "TravelApproved",
                            "Your travel request has been approved",
                            substitutions,
                            new string[] { "logo.png" }
                            );
                    }

                    if (travelRequest.Status == TravelRequestStatus.Denied)
                    {
                        substitutions.Add("REASON", reason);
                        SendTemplate(
                            String.Format("{0} {1}", employee.FirstName, employee.LastName),
                            employee.Email,
                            "TravelDenied",
                            "Your travel request has been denied",
                            substitutions,
                            new string[] { "logo.png" }
                            );
                    }

                    if (travelRequest.Status == TravelRequestStatus.Completed)
                    {
                        SendTemplate(
                            String.Format("{0} {1}", employee.FirstName, employee.LastName),
                            employee.Email,
                            "TravelCompleted",
                            "Your travel request has been completed",
                            substitutions,
                            new string[] { "logo.png" }
                            );
                    }
                }
            }
            catch (Exception ex)
            {
                TraceManager.TraceError(ex);
            }
        }
        public async Task Update(TravelRequest travelRequest)
        {
            if (travelRequest == null)
            {
                throw new ArgumentNullException("travelRequest");
            }

            await _travelRequestRepository.UpdateAsync(travelRequest);
        }
示例#17
0
        /// <summary>
        /// Send a notification when a TravelRequest has been approved
        /// </summary>
        /// <param name="travelRequest">the TravelRequest entity</param>
        public static void NotifyApproved(TravelRequest travelRequest)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext <TravelsNotificationHub>();

            IEnumerable <string> receivers = GetRRHHUsersConnections();

            foreach (var cid in receivers)
            {
                context.Clients.Client(cid).notifyApproved(travelRequest);
            }
        }
示例#18
0
 private void CreateAttachment(MyCompanyContext context, TravelRequest travel)
 {
     context.TravelAttachments.Add(new TravelAttachment()
     {
         Name          = "Boarding Pass",
         FileName      = "BoardingPass.pdf",
         Content       = GetAttachment(),
         TravelRequest = travel,
     }
                                   );
 }
示例#19
0
        public void Init_ShouldSetTravelRequestToCaptured()
        {
            // Arrange
            var travelRequest = new TravelRequest();
            var workflow      = CreateTravelRequestWorkflow();

            // Act
            workflow.Init(travelRequest);
            // Assert
            Assert.AreEqual(TravelRequestState.Captured, travelRequest.Status);
        }
示例#20
0
        public void GetAllowedActions_GivenNew_ShouldBe_Init()
        {
            // Arrange
            var travelRequest = new TravelRequest();
            var workflow      = CreateTravelRequestWorkflow();
            // Act
            var allowedActions = workflow.GetAllowedActions(travelRequest);

            // Assert
            CollectionAssert.AreEquivalent(new [] { TravelRequestAction.Init }, allowedActions);
        }
示例#21
0
        /// <summary>
        /// <see cref="MyCompany.Travel.Data.Repositories.ITravelRequestRepository"/>
        /// </summary>
        /// <param name="travelRequest"><see cref="MyCompany.Travel.Data.Repositories.ITravelRequestRepository"/></param>
        /// <returns><see cref="MyCompany.Travel.Data.Repositories.ITravelRequestRepository"/></returns>
        public async Task <int> AddAsync(TravelRequest travelRequest)
        {
            travelRequest.CreationDate     = DateTime.UtcNow;
            travelRequest.LastModifiedDate = DateTime.UtcNow;
            travelRequest.Employee         = null;

            _context.TravelRequests.Add(travelRequest);
            await _context.SaveChangesAsync();

            return(travelRequest.TravelRequestId);
        }
        private async void ConfirmTravelRequestExecute(int id)
        {
            // Get the travel request to confirm
            TravelRequest travelToConfirm = this.travelsList.FirstOrDefault(t => t.TravelRequestId == id);

            // Remove travel request in the UI list
            RemoveFromList(travelToConfirm);

            // Confirm travel request in BBDD
            await this.myCompanyClient.TravelRequestService.UpdateStatus(id, TravelRequestStatus.Completed, null);
        }
        public string getInvitationFormat(int travelId, TravelRequest approvedTravel)
        {
            //var employee = approvedTravel.EmployeeId; //employee who travel is approved
            var designation = (from e in _context.Employees
                               where e.EmployeeId == approvedTravel.EmployeeId
                               select e.DesignationId).FirstOrDefault();
            string templatePath = (from template in _context.InvitationLetterFormats
                                   where template.DesignationId == designation
                                   select template.LetterContent).FirstOrDefault();

            return(templatePath);
        }
示例#24
0
 TravelRequest BuildTravelRequest(TravelRequest travelRequest)
 {
     return(new TravelRequest()
     {
         TravelRequestId = travelRequest.TravelRequestId,
         Name = travelRequest.Name,
         Description = travelRequest.Description,
         From = travelRequest.From,
         To = travelRequest.To,
         Depart = travelRequest.Depart,
         Return = travelRequest.Return,
         CreationDate = travelRequest.CreationDate,
         LastModifiedDate = travelRequest.LastModifiedDate,
         AccommodationNeed = travelRequest.AccommodationNeed,
         TransportationNeed = travelRequest.TransportationNeed,
         Comments = travelRequest.Comments,
         RelatedProject = travelRequest.RelatedProject,
         Status = travelRequest.Status,
         TravelType = travelRequest.TravelType,
         EmployeeId = travelRequest.EmployeeId,
         TravelAttachments = travelRequest.TravelAttachments != null?
                             travelRequest.TravelAttachments
                             .Select(ta => new TravelAttachment()
         {
             Name = ta.Name,
             FileName = ta.FileName,
             TravelAttachmentId = ta.TravelAttachmentId,
             TravelRequestId = ta.TravelRequestId
         }).ToList()
                                 : null,
                                 Employee = new Employee()
         {
             EmployeeId = travelRequest.Employee.EmployeeId,
             FirstName = travelRequest.Employee.FirstName,
             LastName = travelRequest.Employee.LastName,
             Email = travelRequest.Employee.Email,
             TeamId = travelRequest.Employee.TeamId,
             JobTitle = travelRequest.Employee.JobTitle,
             EmployeePictures = travelRequest.Employee.EmployeePictures != null?
                                travelRequest.Employee.EmployeePictures
                                .Select(e => new EmployeePicture()
             {
                 Employee = null,
                 PictureType = e.PictureType,
                 EmployeePictureId = e.EmployeePictureId,
                 EmployeeId = e.EmployeeId,
                 Content = e.Content
             }).ToList()
                                    : null,
         },
     });
 }
示例#25
0
        public async Task <int> SaveTravelRequest(TravelRequest travelRequest)
        {
            try
            {
                int travelRequestId = await travelRequestRepo.SaveTravelRequest(travelRequest).ConfigureAwait(false);

                return(travelRequestId);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#26
0
        public void GetAllowedActions_GivenTravelerReview_ShouldBe_Accept()
        {
            // Arrange
            var travelRequest = new TravelRequest();

            SetTravelRequestStatus(travelRequest, TravelRequestState.TravelerReview);
            var workflow = CreateTravelRequestWorkflow();
            // Act
            var allowedActions = workflow.GetAllowedActions(travelRequest);

            // Assert
            CollectionAssert.AreEquivalent(new[] { TravelRequestAction.Accept }, allowedActions);
        }
示例#27
0
        public void Approve_WhenManagerApproval_ShouldSetToProcurementApproval()
        {
            // Arrange
            var travelRequest = new TravelRequest();

            SetTravelRequestStatus(travelRequest, TravelRequestState.ManagerApproval);
            var workflow = CreateTravelRequestWorkflow();

            // Act
            workflow.Approve(travelRequest);
            // Assert
            Assert.AreEqual(TravelRequestState.ProcurementApproval, travelRequest.Status);
        }
示例#28
0
        public void GetAllowedActions_GivenHODApproval_ShouldBe_Approve()
        {
            // Arrange
            var travelRequest = new TravelRequest();

            SetTravelRequestStatus(travelRequest, TravelRequestState.HODApproval);
            var workflow = CreateTravelRequestWorkflow();
            // Act
            var allowedActions = workflow.GetAllowedActions(travelRequest);

            // Assert
            CollectionAssert.AreEquivalent(new[] { TravelRequestAction.Approve }, allowedActions);
        }
示例#29
0
        public void Finish_WhenBookTickets_ShouldSetToBookingComplete()
        {
            // Arrange
            var travelRequest = new TravelRequest();

            SetTravelRequestStatus(travelRequest, TravelRequestState.BookTickets);
            var workflow = CreateTravelRequestWorkflow();

            // Act
            workflow.Finish(travelRequest);
            // Assert
            Assert.AreEqual(TravelRequestState.BookingComplete, travelRequest.Status);
        }
示例#30
0
        public void GetAllowedActions_GivenBookTickets_ShouldBe_Finish()
        {
            // Arrange
            var travelRequest = new TravelRequest();

            SetTravelRequestStatus(travelRequest, TravelRequestState.BookTickets);
            var workflow = CreateTravelRequestWorkflow();
            // Act
            var allowedActions = workflow.GetAllowedActions(travelRequest);

            // Assert
            CollectionAssert.AreEquivalent(new[] { TravelRequestAction.Finish }, allowedActions);
        }