Exemplo n.º 1
0
        public void EPAAttnGraphUpdatesAfterObserverCompletesAssessment()
        {
            /// 1. Create learner and observer users and login as the learner
            LoginPage LP = Navigation.GoToLoginPage(browser);
            // We are using a try catch here for the following reason. This test is the very first test that gets run during the build. For some reason, the
            // RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if the error happens, then we will
            // just call the API again in the Catch block and proceed
            UserInfo LRUser = null;

            try
            {
                LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            }
            catch
            {
                LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            }
            UserInfo       OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB);
            CBDLearnerPage CLP    = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 2. Store the number of observations we will use throughout the test into a variable
            int noOfObs = 4;

            /// 3. Request 4 observations for EPA 1.1, with randomized ratings for each observation
            List <LearnerRequestObsObject> LRO = CLP.RequestObservationsForEPA(CLP.EPAIMTbl, Bys.CBDLearnerPage.EPAIMTbl, "Transition to Discipline",
                                                                               "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure",
                                                                               OBUser.FullName, "Part A: Direct observation - Form 1", noOfObs);

            /// 4. Log out and then log in as the observer that the learner requested
            CLP.ClickAndWaitBasePage(CLP.LogoutLnk);
            Navigation.GoToLoginPage(browser);
            CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password);

            /// 5. Accept the pending observation requests and complete the Assessment forms for all 4 of the observations
            List <CompletedAssessmentInfo> completedAssessments = OP.AcceptAndCompleteObservations(LRUser.FullName,
                                                                                                   "Part A: Direct observation - Form 1",
                                                                                                   noOfObs);

            /// 6. Calculate the min, max and mean values for the completed observations above
            decimal minExpected  = OP.GetMinMaxOrMeanFromMultipleCompletedAssessments(completedAssessments, "min");
            decimal maxExpected  = OP.GetMinMaxOrMeanFromMultipleCompletedAssessments(completedAssessments, "max");
            decimal meanExpected = OP.GetMinMaxOrMeanFromMultipleCompletedAssessments(completedAssessments, "mean");

            /// 8. Log out and then log in as the learner
            CLP.ClickAndWaitBasePage(CLP.LogoutLnk);
            Navigation.GoToLoginPage(browser);
            LP.LoginAsExistingUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 9. Open the Reports popup, obtain the actual values from the graph through JQuery, then assert them against the expected calculated values obtained above
            CLP.ClickAndWait(CLP.ViewMoreRptsLnk);
            decimal minActual = CLP.GetMinMeanOrMaxFromEPAAttainGraph(CLP.ReportsFormEPAAttainmentChrt, string.Format("EPA 1.1 ({0})", noOfObs), "min");

            Assert.AreEqual(minExpected, minActual);
            decimal maxActual = CLP.GetMinMeanOrMaxFromEPAAttainGraph(CLP.ReportsFormEPAAttainmentChrt, string.Format("EPA 1.1 ({0})", noOfObs), "max");

            Assert.AreEqual(maxExpected, maxActual);
            decimal meanActual = CLP.GetMinMeanOrMaxFromEPAAttainGraph(CLP.ReportsFormEPAAttainmentChrt, string.Format("EPA 1.1 ({0})", noOfObs), "mean");

            Assert.AreEqual(meanExpected, meanActual);
        }
Exemplo n.º 2
0
        public void UserCanDeleteActivityOnMyMOCPage()
        {
            /// 1. Create a Mainport user and Login
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Enter 2 activities
            EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false);

            DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity ConferenceActivity2 = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false);

            // Have to wait for the credits to be applied before we can proceed
            MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "10");

            /// 3. On the My MOC page, open the View Activity form, click the X button for an activity, and verify that it got removed from the table
            MyMOCPage MP = DP.ClickAndWaitBasePage(DP.MyMOCTab);

            MP.OpenViewActivitiesForm(MP.GroupLearnTblUnaccrActRowViewLnk);
            IWebElement row = ElemGet.Grid_GetRowByRowName(MP.ViewActivitiesFormActivitiesTbl, Bys.MyMOCPage.ViewActivitiesFormActivitiesTblBodyRow,
                                                           ConferenceActivity.ActivityName, "td");

            ElemSet.Grid_ClickElementWithoutTextInsideRow(row, "input");
            MP.ClickAndWait(MP.DeleteActivityWarningFormYesBtn);
            Assert.False(ElemGet.Grid_ContainsRecord(Browser, MP.ViewActivitiesFormActivitiesTbl, Bys.MyMOCPage.ViewActivitiesFormActivitiesTblBodyRow, 0,
                                                     ConferenceActivity.ActivityName, "td"));
        }
Exemplo n.º 3
0
        public void MainCyclNotCompleteAfter399Credits()
        {
            /// 1. Create a Mainport user, which has a cycle start date 6 years prior, then Login. We are using a date 6 years in the past because
            /// the end date of the cycle needs to be a past date for the user to be able to advance, and the Main cycle is 5 years
            UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP, null, null,
                                                               DateTime.Now.AddYears(-6).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
            LoginPage       LP = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Submit an activity totalling 399 credits, Enter an activity date that falls within the cycle date range.
            /// NOTE: If the activity date falls within cycle date's the last year for a Main cycle, then we wont need to credit validate
            string actDate                     = DateTime.Now.AddYears(-1).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
            EnterCPDActivityPage EAP           = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "399", true, actDate);

            /// 3. Login to Lifetime Support and validate the credits that need validated, if applicable. See note above in step 2 about credit validation.
            /// Depending on what day of the year this test is run, it may need credit validation
            LSHelp.Login(browser, "lkaveti", "password");
            LSHelp.GoToParticipantProgramPage(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification");
            MainportHelperMethods.ValidateCreditsIfApplicable(browser, NewUser, ConferenceAct);

            /// 4. Click on the Details tab and verify that the UI displays In Progress for the Status label, since we did not reach the 400 credits
            // First we have to wait for the windows service to process the credits.
            LSHelp.WaitForProgramCreditsWindowsService(browser, "399 (of 400)");
            Assert.AreEqual("In Progress", LSHelp.GetProgramDetail(browser, "Status"));
        }
Exemplo n.º 4
0
        public void PRACycleCompleteAfter80Credits()
        {
            /// 1. Create a Mainport user, then place the user in the PRA cycle through LTS
            UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);

            LSHelp.Login(browser, "lkaveti", "password");
            LSHelp.GoToParticipantProgramPage(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification");
            LSHelp.RCP_AddProgramAdjustment(browser, NewUser.FullName, LSConstants.AdjustmentCodes.PRA);

            /// 2. Custom date the cycle end date so that it is in the past. This is so that the user is able to be marked as Complete (Sort of hacking
            /// the system). First, We have to move the start date back
            LSHelp.RCP_AdjustMOCDate(browser, NewUser.FullName, "Start", DateTime.Now.AddYears(-2).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
            LSHelp.RCP_AdjustMOCDate(browser, NewUser.FullName, "End", DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));

            /// 3. Login to Mainport and submit an activity totalling 80 credits. Enter an activity date that falls within the cycle date range.
            string               actDate       = DateTime.Now.AddMonths(-13).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
            LoginPage            LP            = Navigation.GoToLoginPage(browser);
            MyDashboardPage      DP            = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);
            EnterCPDActivityPage EAP           = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "80", true,
                                                                           actDate);

            /// 4. Login to Lifetime Support and validate the credits
            LSHelp.Login(browser, "lkaveti", "password");
            LSHelp.ValidateCredit(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification", ConferenceAct.ActivityName);

            /// 5. Click on the Details tab and verify that the UI displays Complete for the Status label
            // First we have to wait for the windows service to process the credits.
            LSHelp.WaitForProgramCreditsWindowsService(browser, "80 (of 80)");
            Assert.AreEqual("Complete", LSHelp.GetProgramDetail(browser, "Status"));
        }
Exemplo n.º 5
0
        public void UIUpdatesAfterUserMeetsSectionCreditMinimumRequirement()
        {
            /// 1. Create a Mainport user and Login
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Submit an activity in each section, ensuring that 25 credits have been met in each section
            EnterCPDActivityPage EAP           = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "25", true);

            DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity FellowshipAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_Fellowship_FixedCredits25);

            DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity MultiSourceFeedbackAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec3_MultisourceFeedback_CreditsTripled, "10");

            // Have to wait for the credits to be applied before we can proceed
            MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "80");

            /// 3. Verify that the MOC Section Requirements labels show as blue/gray, and that the checkmark shows for each box
            Assert.AreEqual("showGrey", DP.MOCSectionReqsGraphGroupLearningSquare.GetAttribute("class"));
            Assert.AreEqual("showGrey", DP.MOCSectionReqsGraphSelfLearningSquare.GetAttribute("class"));
            Assert.AreEqual("showGrey", DP.MOCSectionReqsGraphAssessmentSquare.GetAttribute("class"));
            Assert.True(DP.MOCSectionReqsGraphGroupLearningTickBox.Displayed);
            Assert.True(DP.MOCSectionReqsGraphSelfLearningTickBox.Displayed);
            Assert.True(DP.MOCSectionReqsGraphAssessmentTickBox.Displayed);

            /// 4. Go to the My MOC tab and verify that the "section minimum requirement was met" label is shown
            DP.ClickAndWaitBasePage(DP.MyMOCTab);
            Assert.True(Browser.Exists(Bys.MyMOCPage.GroupLearnTblYouHaveMetMinCredsLbl, ElementCriteria.IsVisible));
            Assert.True(Browser.Exists(Bys.MyMOCPage.SelfLearningTblYouHaveMetMinCredsLbl, ElementCriteria.IsVisible));
            Assert.True(Browser.Exists(Bys.MyMOCPage.AssessmentTblYouHaveMetMinCredsLbl, ElementCriteria.IsVisible));
        }
        public void UIUpdatesAfterLearnerAddsReflection()
        {
            /// 1. Create learner user and login
            LoginPage LP = Navigation.GoToLoginPage(browser);

            LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 2. Store the number from the label text of the Reflections tab, and also "Showing" label, for the purpose of a future Assert within this
            /// test. If there are no Reflections yet, this showing label will not appear, so skip it if so
            CLP.SwitchToTab(CLP.ReflectionsTab, Bys.CBDLearnerPage.ReflectionsTab);
            string origNumbOfReflectionsOnReflectionsTab = DataUtils.GetStringBetweenCharacters(CLP.ReflectionsTab.Text, "(", ")");

            if (browser.Exists(Bys.CBDLearnerPage.ShowingLbl, ElementCriteria.IsVisible))
            {
                string origNumbOfReflectionsOnShowingLbl = DataUtils.GetStringAfterCharacter(CLP.ShowingLbl.Text, "f", 2);
            }

            /// 3. Add a reflection
            LearnerRelectionObject LR = CLP.AddReflection();

            /// 4. Assert that the Reflections tab label increased by 1
            Assert.AreEqual(Int32.Parse(origNumbOfReflectionsOnReflectionsTab) + 1, Int32.Parse(DataUtils.GetStringBetweenCharacters(CLP.ReflectionsTab.Text, "(", ")")));

            /// 5. Assert that the label within the Reflections tab increased by 1
            // Bug RCPSC-264: "Learner->Add Reflection: "Showing" label does not update after learner adds reflection"
            // Uncomment and run the test when fixed
            if (browser.Exists(Bys.CBDLearnerPage.ShowingLbl, ElementCriteria.IsVisible))
            {
                //Assert.AreEqual(Int32.Parse(origNumbOfReflectionsOnShowingLbl) + 1, Int32.Parse(DataUtils.GetStringAfterCharacter(CLP.ShowingLbl.Text, "f", 2)));
            }

            /// 5. Assert that the table contains the reflection
            Assert.True(ElemGet.Grid_ContainsRecord(browser, CLP.ReflectionsTbl, Bys.CBDLearnerPage.ReflectionsTblBdy, LR.ReflectionTitle, "td", Bys.CBDLearnerPage.TableFirstBtn, Bys.CBDLearnerPage.TableNextBtn));
        }
Exemplo n.º 7
0
        public void UserCanCompleteAllActivities()
        {
            // Only going to run this in Chrome. I create activities in other test methods, so we already cross-browser test that an activity can be
            // completed in all browsers in those tests. If we were to run this method in all browsers, especially IE, it would just increase run time
            // unneccessarily
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a Mainport user and Login
                UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
                LoginPage       LP      = Navigation.GoToLoginPage(browser);
                MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

                /// 2. Add 1 activity for all of section 1's activity types
                /// 3. Add 1 activity for all of section 2's activity types
                /// 4. Add 1 activity for all of section 3's activity types
                foreach (Constants.MainportActivityTypes activityType in Enum.GetValues(typeof(Constants.MainportActivityTypes)))
                {
                    // This will fail until https://code.premierinc.com/issues/browse/RCPSC-772 is fixed. Once fixed, then make sure the Reading dropdown
                    // By is updated and run the test removing this If statement
                    if (activityType != Constants.MainportActivityTypes.Sec2_Reading_FixedCredits1)
                    {
                        EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
                        EAP.AddActivityThenSubmit(activityType, "10", true);
                    }
                }
            }
        }
        public void ObserverCanCompleteObservation()
        {
            /// 1. Create learner and observer users and login as a learner
            LoginPage LP = Navigation.GoToLoginPage(browser);

            LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB);
            CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 2. Request an observation from the observer
            CLP.RequestObservationForEPA("Transition to Discipline",
                                         "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure",
                                         OBUser.FullName, "Part A: Direct observation - Form 1");

            /// 3. Log out and then log in as the observer that the learner requested
            CLP.ClickAndWait(CLP.LogoutLnk);
            Navigation.GoToLoginPage(browser);
            CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password);

            /// 4. Accept the Pending observation request
            OP.AcceptOrDeclineAssignment(LRUser.FullName, "Part A: Direct observation - Form 1", "Accept");

            /// 5. Open the Complete Assessment form for the observation request and complete the observation
            OP.CompleteAssessment(LRUser.FullName, "Part A: Direct observation - Form 1");
        }
Exemplo n.º 9
0
        //[Test]
        public void sandboxtest()
        {
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceActivity = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf,
                                                                                           "10", true);
        }
        public void PERTraineeAdvancesAllStagesWRequiredMilestones()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome || BrowserName == BrowserNames.Firefox)
            {
                /// 1. Create a trainee user, login, complete all required milestones, submit the portfolio
                // We are using a try catch here for the following reason. This test is one of the very first test that gets run during the build. For
                // some reason, the RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if
                // the error happens, then we will just call the API again in the Catch block and proceed
                UserInfo newTrainee = new UserInfo();
                try
                {
                    newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
                }
                catch
                {
                    newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
                }
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER);
                PERHelperMethods.AsTrainee_CompleteRequiredMilestones_ThenSubmitPortfolio(browser, newTrainee.Username);

                /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName);

                /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName);

                /// 4. Login as the trainee and verify that the Review Stage says Credentials Unit, and verify that the Referee labels are correct
                LoginPage      LP = Navigation.GoToLoginPage(browser);
                PERTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]);
                Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Credentials Unit");
                Assert.AreEqual(TP.Referee1PERValueLbl.Text.Trim(), UserUtils.Referee1PERFullName);
                Assert.AreEqual(TP.Referee2PERValueLbl.Text.Trim(), UserUtils.Referee2PERFullName);
                LP.Logout();

                /// 5. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName);

                /// 6. Login as both assessors and mark all milestones as achieved.
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName);

                /// 7. Login as the CU and mark the trainee as Not Achieved for a final review
                PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, true);

                /// 8. Login as the trainee and verify that the Review Stage says Achieved
                LoginPage      LP2 = Navigation.GoToLoginPage(browser);
                PERTraineePage TP2 = LP2.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]);
                Assert.AreEqual(TP2.ReviewStageValueLbl.Text, "Achieved");
            }
        }
Exemplo n.º 11
0
        public void DiplomaTraineeAdvancesAllStagesWRequiredMilestones()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a trainee user, login, complete and assign all required milestones to a clinical supervisor
                // We are using a try catch here for the following reason. This test is one of the very first test that gets run during the build. For
                // some reason, the RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if
                // the error happens, then we will just call the API again in the Catch block and proceed
                UserInfo newTrainee = new UserInfo();
                try
                {
                    newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
                }
                catch
                {
                    newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
                }
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma);
                DiplomaHelperMethods.AsTrainee_SubmitAllRequiredMilestones(browser, newTrainee.Username, UserUtils.ClinicalSupervisor1DiplomaFullName);

                /// 2. As the CS, mark the trainee's portfolio is achieved
                DiplomaHelperMethods.AsCS_MarkAllMilestonesAchieved(browser, UserUtils.ClinicalSupervisor1DiplomaLogin, newTrainee.FullName);

                /// 3. As the trainee, submit the portfolio
                DiplomaHelperMethods.AsTrainee_SubmitPortfolio(browser, newTrainee.Username);

                /// 4. As the diploma director, mark the trainee's portfolio as achieved
                DiplomaHelperMethods.AsDD_MarkPortfolioAsAchieved(browser, UserUtils.DiplDirector1DiplomaLogin, newTrainee.FullName);

                /// 5. As the faculty of medicine, mark the trainee's portfolio as achieved
                DiplomaHelperMethods.AsFacOfMed_MarkMarkPortfolioAAsAchieved(browser, UserUtils.FacultyOfMed1DiplomaLogin, newTrainee.FullName);

                /// 6. As the credential staff unit, mark the trainee as achieved, record a payment, and assign 2 assessors
                DiplomaHelperMethods.AsCU_MarkAsAchievedRecordPaymentAndAssign2Assessors(browser, newTrainee.FullName, UserUtils.Assessor1DiplomaFullName, UserUtils.Assessor2DiplomaFullName);

                /// 7. As both assessors, mark all of the trainee's milestones as achieved
                DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1DiplomaLogin, newTrainee.FullName);
                DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName);

                /// 8. As the credential staff unit, make a final review and mark the trainee as achieved
                DiplomaHelperMethods.AsCU_MakeFinalReview_MarkAchieved(browser, newTrainee.FullName);

                /// 9. Login as the trainee, and verify that the Review Stage label has been updated to Achieved
                LoginPage          LP = Navigation.GoToLoginPage(browser);
                DiplomaTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineeDiploma, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]);
                Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Achieved");
            }
        }
Exemplo n.º 12
0
        public void UserCanCreateAGoal()
        {
            // Remove this if statement when bug https://code.premierinc.com/issues/browse/RCPSC-793 is fixed
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a Mainport user and Login
                UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
                LoginPage       LP      = Navigation.GoToLoginPage(browser);
                MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

                /// 2. Click the Add a Goal button, fill in the information, click Next, then click Close
                string goalName = DP.AddAGoal();

                /// 3. Verify that the goals table populates with this goal
                Assert.True(ElemGet.Grid_ContainsRecord(browser, DP.GoalsTbl, Bys.MyDashboardPage.GoalsTblBody, 0, goalName, "span"));
            }
        }
Exemplo n.º 13
0
        public void DiplomaTraineeGets3rdAssessorAndGetsMarksNotAchieved()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a trainee user, login, complete and assign all milestones to a clinical supervisor
                UserInfo newTrainee = new UserInfo();
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma);
                DiplomaHelperMethods.AsTrainee_SubmitAllMilestones(browser, newTrainee.Username, UserUtils.ClinicalSupervisor1DiplomaFullName);

                /// 2. As the CS, mark the trainee's portfolio is achieved
                DiplomaHelperMethods.AsCS_MarkAllMilestonesAchieved(browser, UserUtils.ClinicalSupervisor1DiplomaLogin, newTrainee.FullName);

                /// 3. As the trainee, submit the portfolio
                DiplomaHelperMethods.AsTrainee_SubmitPortfolio(browser, newTrainee.Username);

                /// 4. As the diploma director, mark the trainee's portfolio as achieved
                DiplomaHelperMethods.AsDD_MarkPortfolioAsAchieved(browser, UserUtils.DiplDirector1DiplomaLogin, newTrainee.FullName);

                /// 5. As the faculty of medicine, mark the trainee's portfolio as achieved
                DiplomaHelperMethods.AsFacOfMed_MarkMarkPortfolioAAsAchieved(browser, UserUtils.FacultyOfMed1DiplomaLogin, newTrainee.FullName);

                /// 6. As the credential staff unit, mark the trainee as achieved, record a payment, and assign 2 assessors
                DiplomaHelperMethods.AsCU_MarkAsAchievedRecordPaymentAndAssign2Assessors(browser, newTrainee.FullName, UserUtils.Assessor1DiplomaFullName, UserUtils.Assessor2DiplomaFullName);

                /// 7. Login as both assessors. For the first assessor, mark all milestones as achieved. For the other, mark 1 of the milestones as
                /// Not Achieved
                DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1DiplomaLogin, newTrainee.FullName);
                DiplomaHelperMethods.AsAssessor_RejectTrainee(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName);

                /// 8. Login as a Credential Staff member, and assign a third referee
                DiplomaHelperMethods.AsCredentialStaff_AssignTraineeTo3rdAssessor(browser, newTrainee.FullName, UserUtils.Assessor3DiplomaFullName);

                /// 9. Login as the 3rd assesor and approve the trainee
                DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor3DiplomaLogin, newTrainee.FullName);

                /// 10. As the credential staff unit, make a final review and mark the trainee as not achieved
                DiplomaHelperMethods.AsCU_MakeFinalReview_MarkNotAchieved(browser, newTrainee.FullName);

                /// 11. Login as the trainee, and verify that the Review Stage label has been updated to Not Achieved
                LoginPage          LP = Navigation.GoToLoginPage(browser);
                DiplomaTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineeDiploma, newTrainee.Username, "test");
                Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Not Achieved");
            }
        }
Exemplo n.º 14
0
        public void DeclinedExpiredTableUpdatesAfterObserverMakesChanges()
        {
            /// 1. Create learner and observer users and login as a learner
            LoginPage LP = Navigation.GoToLoginPage(browser);
            // We are using a try catch here for the following reason. This test sometimes is the very first test that gets run during the build. For some reason, the
            // RegisterUser API fails to complete and throws a 500 error whenever the first test gets set off on the grid. So if the error happens, then we will
            // just call the API again in the Catch block and proceed
            UserInfo LRUser = null;

            try
            {
                LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            }
            catch
            {
                LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            }
            OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB);
            CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 2. Request an observation from the observer
            CLP.RequestObservationForEPA("Transition to Discipline",
                                         "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure",
                                         OBUser.FullName, "Part A: Direct observation - Form 1");

            /// 3. Log out and then log in as the observer that the learner requested
            CLP.ClickAndWaitBasePage(CLP.LogoutLnk);
            Navigation.GoToLoginPage(browser);
            CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password);

            /// 4. Decline the Pending observation request
            OP.AcceptOrDeclineAssignment(LRUser.FullName, "Part A: Direct observation - Form 1", "Decline");
            OP.ExpandTable(OP.ExpiredDeclinedTblHdr, "", "expand");
            Assert.True(ElemGet.Grid_ContainsRecord(Browser, OP.ExpiredDeclinedTbl, Bys.CBDObserverPage.ExpiredDeclinedTblRowBody, 0,
                                                    LRUser.FullName, "td"));

            /// 5. Remove the declined request and verify that the table disappears. The table should disappear at this point
            /// because there was only 1 declined request to begin with
            OP.RemoveExpiredDeclinedRequest(LRUser.FullName, "Part A: Direct observation - Form 1");
            Assert.True(browser.FindElements(Bys.CBDObserverPage.ExpiredDeclinedTblRowBody).Count == 0);

            /// 6. Switch to the Archived Observations tab and verify that the request shows there
            OP.SwitchToTab(OP.ArchivedObsTab);
            Assert.True(ElemGet.Grid_ContainsRecord(Browser, OP.ArchivedObservationsTbl, Bys.CBDObserverPage.ArchivedObservationsTblRowBody, 0,
                                                    LRUser.FullName, "td"));
        }
Exemplo n.º 15
0
        public void ActivityAwaitingValidationShowsInCoorespondingTable()
        {
            /// 1. Create a Mainport user and Login
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Enter an activity which requires credit validation
            EnterCPDActivityPage EAP     = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             Actvity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_BulkJournalReadingwithTranscript_ValidationRequired, "10");

            /// 3. Click the My Holding Area table, then verify that the activity appears in the Activity Awaiting Credit Validation table
            MyHoldingAreaPage MP = DP.ClickAndWaitBasePage(DP.MyHoldingAreaTab);

            Assert.True(ElemGet.Grid_ContainsRecord(browser, MP.AwaitingCredValidationTbl, Bys.MyHoldingAreaPage.AwaitingCredValidationTblBody, 0,
                                                    Actvity.ActivityName, "a"));
        }
Exemplo n.º 16
0
        public void MainCycleAdvancesToMain2CycleAfter400Credits()
        {
            // Not running this test on Feb 1st of any year, because Mainport has some weird gracce period rule where the user gets auto-advanced without
            // the Admin having to manually advance him, so it messes with the test
            if (DateTime.Now.Date.ToString() != "2/1/2018 12:00:00 AM")
            {
                /// 1. Create a Mainport user, which has a cycle start date 6 years prior, then Login. We are using a date 6 years in the past because
                /// the end date of the cycle needs to be a past date for the user to be able to advance, and the Main cycle is 5 years
                UserInfo NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP, null, null,
                                                                   DateTime.Now.AddYears(-6).ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
                LoginPage       LP = Navigation.GoToLoginPage(browser);
                MyDashboardPage DP = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

                /// 2. Submit an activity totalling 400 credits, Enter an activity date that falls within the cycle date range.
                /// NOTE: If the activity date falls within the cycle date's last year for a Main cycle, then we wont need to credit validate
                string actDate                     = DateTime.Now.AddYears(-1).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
                EnterCPDActivityPage EAP           = DP.ClickAndWait(DP.EnterACPDActivityBtn);
                Activity             ConferenceAct = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "400", true, actDate);

                /// 3. Login to Lifetime Support and validate the credit that needs validated, if applicable. See note above in step 2 about credit validation.
                /// Depending on what day of the year this test is run, it may need credit validation
                LSHelp.Login(browser, "lkaveti", "password");
                LSHelp.GoToParticipantProgramPage(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification");
                MainportHelperMethods.ValidateCreditsIfApplicable(browser, NewUser, ConferenceAct);

                /// 4. Click on the Details tab and verify that the UI displays Complete for the Status label
                // First we have to wait for the windows service to process the credits.
                LSHelp.WaitForProgramCreditsWindowsService(browser, "400 (of 400)");
                Assert.AreEqual("Complete", LSHelp.GetProgramDetail(browser, "Status"));

                /// 5. Add a Main cycle adjustment, then verify that the UI displays In Progress for the Status label, and "Main 2nd or Later Cycle" for the
                /// program label. NOTE: We can not automate the "automatic" cycle advacement because it relies on a windows service that gets run overnight.
                /// Going from Main 1 to Main2/EXT, etc. usually occurs automatically for clients with the overnight windows service. We are sort of hacking
                /// the system by manually setting this user to Main 2, and not truly testing that a user gets put into Main 2 once he meets his credit
                /// minimum. Basically, you can place a user into any cycle through LTS, even if the user did not meet credit minimum
                LSHelp.RCP_AddProgramAdjustment(browser, NewUser.FullName, LSConstants.AdjustmentCodes.MainProgram, DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
                Assert.AreEqual(DateTime.Now.ToString("M/d/yyyy", CultureInfo.InvariantCulture), LSHelp.GetProgramDetail(browser, "Starts"));
                Assert.AreEqual("Main 2nd or Later Cycle", LSHelp.GetProgramDetail(browser, "Program"));

                /// 6. Go back to Mainport and verify that the user is in a new cycle by checking that the credits reset to 0
                Navigation.GoToMyDashboardPage(browser);
                Assert.AreEqual("0", DP.TotalCreditsSubmittedValueLbl.Text);
                Assert.AreEqual("0", DP.TotalCreditsAppliedValueLbl.Text);
            }
        }
Exemplo n.º 17
0
        public void UserCanSendActivityToHoldingAreaThenCompleteActivity()
        {
            /// 1. Create a Mainport user and Login
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Click the Enter a CPD Activity button, fill in the fields, click Send to Holding Area, then click Close
            /// Do this again for a second activity
            EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceActivity = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf,
                                                                                           "10", true);

            DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity ConferenceActivity2 = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf,
                                                                                "10", true);

            /// 3. Verify that the activity shows in the My Holding Area table
            Assert.True(ElemGet.Grid_ContainsRecord(browser, DP.MyHoldingAreaTbl, Bys.MyDashboardPage.MyHoldingAreaTblBody, 0,
                                                    ConferenceActivity2.ActivityName, "span"));

            /// 4. Click the View More button underneath the My Holding Area table, then verify that the activity is showing in the
            /// Incomplete Activities. Click Complete Activity, then click the Continue button and complete the activity and verify
            /// that it disappears from the Incomplete Activites table
            MyHoldingAreaPage MP = DP.ClickAndWait(DP.ViewMoreBtn);

            Assert.True(ElemGet.Grid_ContainsRecord(browser, MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBody, 0,
                                                    ConferenceActivity2.ActivityName, "a"));
            MP.ClickCompleteActivityBtn(MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBodyRow, ConferenceActivity2.ActivityName);
            // Not running this in firefox. For some reason, when I enter the date in the above AddActivityThenSendToHoldingArea method, the date enters fine
            // and the activity completes, but when I open the activity from this window, then the date isnt there, so this is an automation bug. Revisit
            if (BrowserName != BrowserNames.Firefox)
            {
                EAP.ClickAndWait(EAP.ContinueBtn);
                EAP.ClickAndWait(EAP.OptionalTabSubmitBtn);
                EAP.CloseBtn.Click();
                // Very tired right now. Add dynamic wait here later
                Thread.Sleep(5000);
                browser.SwitchTo().DefaultContent();
                Assert.False(ElemGet.Grid_ContainsRecord(browser, MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBody, 0,
                                                         ConferenceActivity2.ActivityName, "a"));
            }
        }
Exemplo n.º 18
0
        public void UserCanDeleteActivityFromMyHoldingArea()
        {
            /// 1. Create a Mainport user and Login
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Click the Enter a CPD Activity button, fill in the fields, click Continue, then click Send to Holding Area, then click Close
            EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             ConferenceActivity = EAP.AddActivityThenSendToHoldingArea(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf,
                                                                                           "10", true);

            /// 3. Click the My Holding Area tab, click the X button to delete the activity, then verify that it disappears from the Incomplete Activites table
            MyHoldingAreaPage MP = DP.ClickAndWaitBasePage(DP.MyHoldingAreaTab);

            MP.DeleteActivity(ConferenceActivity.ActivityName);
            Assert.False(ElemGet.Grid_ContainsRecord(browser, MP.IncompleteActivitiesTbl, Bys.MyHoldingAreaPage.IncompleteActivitiesTblBody, 0,
                                                     ConferenceActivity.ActivityName, "a"));
        }
Exemplo n.º 19
0
        public void DiplomaTraineeAndAssessorAdditionalInfoFeature()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a trainee user, login, complete and assign all required milestones to a clinical supervisor
                UserInfo newTrainee = new UserInfo();
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma);
                List <string> milestoneNames = DiplomaHelperMethods.AsTrainee_SubmitAllMilestones(browser, newTrainee.Username, UserUtils.ClinicalSupervisor1DiplomaFullName);

                /// 2. As the CS, mark the trainee's portfolio is achieved
                DiplomaHelperMethods.AsCS_MarkAllMilestonesAchieved(browser, UserUtils.ClinicalSupervisor1DiplomaLogin, newTrainee.FullName);

                /// 3. As the trainee, submit the portfolio
                DiplomaHelperMethods.AsTrainee_SubmitPortfolio(browser, newTrainee.Username);

                /// 4. As the diploma director, mark the trainee's portfolio as achieved
                DiplomaHelperMethods.AsDD_MarkPortfolioAsAchieved(browser, UserUtils.DiplDirector1DiplomaLogin, newTrainee.FullName);

                /// 5. As the faculty of medicine, mark the trainee's portfolio as achieved
                DiplomaHelperMethods.AsFacOfMed_MarkMarkPortfolioAAsAchieved(browser, UserUtils.FacultyOfMed1DiplomaLogin, newTrainee.FullName);

                /// 6. As the credential staff unit, mark the trainee as achieved, record a payment, and assign 2 assessors
                DiplomaHelperMethods.AsCU_MarkAsAchievedRecordPaymentAndAssign2Assessors(browser, newTrainee.FullName, UserUtils.Assessor1DiplomaFullName, UserUtils.Assessor2DiplomaFullName);

                /// 7. Login as both assessors. For the first assessor, mark all milestones as achieved. For the second assessor, request additional information
                /// from the trainee.
                DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1DiplomaLogin, newTrainee.FullName);
                DiplomaHelperMethods.AsAssessor_RequestAdditionalInfo(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName, milestoneNames[0]);

                /// 8. Login as the trainee and then send the additional information to the assessor
                string additionalInfo = "here is the additional info";
                DiplomaHelperMethods.AsTrainee_SendAdditionalInfo(browser, newTrainee.Username, milestoneNames[0], additionalInfo);

                /// 8. Login as the assessor and verify that the assessor got the additional information
                Assert.True(DiplomaHelperMethods.AsAssessor_VerifyAdditionalInfo(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName, milestoneNames[0], additionalInfo));

                /// 9. Advance the trainee to Achieved
                DiplomaHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2DiplomaLogin, newTrainee.FullName);
                DiplomaHelperMethods.AsCU_MakeFinalReview_MarkAchieved(browser, newTrainee.FullName);
            }
        }
        public void ObvCntGraphUpdatesAfterObserverCompletesAssessment()
        {
            /// 1. Create learner and observer users and login as the learner
            LoginPage LP = Navigation.GoToLoginPage(browser);

            LRUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.LR);
            OBUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.CBD, UserUtils.UserRole.OB);
            CBDLearnerPage CLP = LP.LoginAsNewUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 2. Store the EPA observation count of EPA1.1 from the graph now, so that when the observer completes an observation, we can Assert
            /// the EPA observation count increased from this stored count
            CLP.StoreObvsCntFromEPAObvCntGraph(CLP.EPAObservCntChrt, "EPA 1.1");

            /// 3. Request an observation
            CLP.RequestObservationForEPA("Transition to Discipline",
                                         "Performing preoperative assessments for ASA 1 or 2 patients who will be undergoing a minor scheduled surgical procedure",
                                         OBUser.FullName, "Part A: Direct observation - Form 1");

            /// 4. Log out and then log in as the observer that the learner requested
            CLP.ClickAndWait(CLP.LogoutLnk);
            Navigation.GoToLoginPage(browser);
            CBDObserverPage OP = LP.LoginAsNewUser(UserUtils.UserRole.OB, OBUser.Username, OBUser.Password);

            /// 5. Accept the Pending observation request and complete the Assessment form
            OP.AcceptAndCompleteObservation(LRUser.FullName, "Part A: Direct observation - Form 1");

            /// 6. Log out and then log in as the learner
            CLP.ClickAndWait(CLP.LogoutLnk);
            Navigation.GoToLoginPage(browser);
            LP.LoginAsExistingUser(UserUtils.UserRole.LR, LRUser.Username, LRUser.Password);

            /// 7. Verify that the EPA count has increased on the main graph
            Assert.AreEqual(CLP.PreviousEPAObvsCntFromEPAObvGraph + 1, CLP.GetEPAObsvCntFromEPAObsGraph(CLP.EPAObservCntChrt, "EPA 1.1"),
                            "The EPA1.1 count on the graph has not increased after the observer completed the observation");

            /// 8. Open the Reports form and verify the EPA count on there
            CLP.ClickAndWait(CLP.ViewMoreRptsLnk);
            CLP.ReportsFormReportSelElem.SelectByText("EPA Observation Count");
            CLP.ClickAndWait(CLP.ReportsFormShowBtn);
            Assert.AreEqual(CLP.PreviousEPAObvsCntFromEPAObvGraph + 1, CLP.GetEPAObsvCntFromEPAObsGraph(CLP.ReportsFormEPAObservCntChrt, "EPA 1.1"),
                            "The EPA1.1 count on the graph has not increased after the observer completed the observation");
        }
Exemplo n.º 21
0
        public void PERTraineeAdvancesAllStagesWRequiredMilestones()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome || BrowserName == BrowserNames.Firefox)
            {
                /// 1. Create a trainee user, login, complete all required milestones, submit the portfolio
                UserInfo newTrainee = new UserInfo();
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER);
                PERHelperMethods.AsTrainee_CompleteRequiredMilestones_ThenSubmitPortfolio(browser, newTrainee.Username);

                /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName);

                /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName);

                /// 4. Login as the trainee and verify that the Review Stage says Credentials Unit, and verify that the Referee labels are correct
                LoginPage      LP = Navigation.GoToLoginPage(browser);
                PERTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, "test");
                Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Credentials Unit");
                Assert.AreEqual(TP.Referee1PERValueLbl.Text.Trim(), UserUtils.Referee1PERFullName);
                Assert.AreEqual(TP.Referee2PERValueLbl.Text.Trim(), UserUtils.Referee2PERFullName);
                LP.Logout();

                /// 5. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName);

                /// 6. Login as both assessors and mark all milestones as achieved.
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName);

                /// 7. Login as the CU and mark the trainee as Not Achieved for a final review
                PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, true);

                /// 8. Login as the trainee and verify that the Review Stage says Achieved
                LoginPage      LP2 = Navigation.GoToLoginPage(browser);
                PERTraineePage TP2 = LP2.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, "test");
                Assert.AreEqual(TP2.ReviewStageValueLbl.Text, "Achieved");
            }
        }
Exemplo n.º 22
0
        public void UserCanEditActivityOnMyMOCPage()
        {
            /// 1. Create a Mainport user and Login
            UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
            LoginPage       LP      = Navigation.GoToLoginPage(browser);
            MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

            /// 2. Enter an activity
            EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
            Activity             NewConferenceActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "20", true);

            /// 3. Click to the MyMOC page, click on the View link for the activity that was created, click on the Pencil icon in the Activities table on the popup,
            /// then verify that the information on this form is correct
            // Gotta wait for the windows service first to apply the credits
            MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "20");
            MyMOCPage MP = DP.ClickAndWaitBasePage(DP.MyMOCTab);

            MP.OpenEditActivityForm(MP.GroupLearnTblAccrActRowViewLnk, NewConferenceActivity.ActivityName);

            /// 4. Edit the activity. Change accredited to not accredited. Change the credits from 20 to 10. Change the name. Close the form. Verify that the
            /// amount of credits gets updated on all related labels, verify that the activity was moved from the accredited table to the not accredited table,
            /// and verify the name change
            Activity EditedConferenceActivity = EAP.EditActivity(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false);

            Browser.SwitchTo().DefaultContent();
            MP.ClickAndWaitBasePage(MP.MyDashboardTab);
            MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "5");
            // Overall label
            DP.ClickAndWaitBasePage(DP.MyMOCTab);
            Assert.AreEqual("5 of 400", MP.OverallCreditsAppliedLbl.Text);
            // Credits Applied to Date labels
            Assert.AreEqual(EditedConferenceActivity.Credits + " Credits", MP.GroupLearnTblCreditsAppliedValueLbl.Text);
            // Credits Reported column
            Assert.AreEqual("-", MP.GroupLearnTblAccrActRowCredsRptLbl.Text);
            Assert.AreEqual(EditedConferenceActivity.Credits, MP.GroupLearnTblUnaccrActRowCredsRptLbl.Text);

            /// 5. Click back to the Dashboard page and verify that the credit amount change is reflected there
            MP.ClickAndWaitBasePage(MP.MyDashboardTab);
            Assert.AreEqual("5", DP.TotalCreditsSubmittedValueLbl.Text);
            Assert.AreEqual("5", DP.TotalCreditsAppliedValueLbl.Text);
        }
        public void PERTraineeGets3rdAssessorAndGetsMarksNotAchieved()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a trainee user, login, complete all milestones, submit the portfolio
                UserInfo newTrainee = new UserInfo();
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER);
                PERHelperMethods.AsTrainee_CompleteRequiredMilestones_ThenSubmitPortfolio(browser, newTrainee.Username);

                /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName);

                /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName);

                /// 4. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName);

                /// 5. Login as both assessors. For the first assessor, mark all milestones as achieved. For the other, mark 1 of the milestones as
                /// Not Achieved
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsAssessor_RejectTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName);

                /// 6. Login as a Credential Staff member, and assign a third referee
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo3rdAssessor(browser, newTrainee.FullName, UserUtils.Assessor3PERFullName);

                /// 7. Login as the 3rd assessor and approve the trainee
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor3PERLogin, newTrainee.FullName);

                /// 8. Login as the CU and mark the trainee as Not Achieved for a final review
                PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, false);

                /// 9. Login as the trainee and verify that the Review Stage says Not Achieved
                LoginPage      LP = Navigation.GoToLoginPage(browser);
                PERTraineePage TP = LP.LoginAsExistingUser(UserUtils.UserRole.TraineePER, newTrainee.Username, ConfigurationManager.AppSettings["LoginPassword"]);
                Assert.AreEqual(TP.ReviewStageValueLbl.Text, "Not Achieved");
            }
        }
Exemplo n.º 24
0
        public void PERTraineeAndAssessorAdditionalInfoFeature()
        {
            // Ignoring this test in IE and Firefox because this test needs to upload files. See the following document
            // explaining why we can not do that in these browsers: https://code.premierinc.com/docs/display/PGHLMSDOCS/General
            if (BrowserName == BrowserNames.Chrome)
            {
                /// 1. Create a trainee user, login, complete all milestones, and submit the portfolio
                UserInfo newTrainee = new UserInfo();
                newTrainee = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER);
                List <string> milestoneNames = PERHelperMethods.AsTrainee_CompleteAllMilestones_ThenSubmitPortfolio(browser, newTrainee.Username);

                /// 2. Log in as a Credential Staff member and assign 2 referees to the trainee
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndRefs(browser, newTrainee.FullName, UserUtils.Referee1PERFullName, UserUtils.Referee2PERFullName);

                /// 3. Login as the first and then second referee, fill the questionnaire to advance the trainee, click Save and Finish
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsReferee_ApproveTrainee(browser, UserUtils.Referee2PERLogin, newTrainee.FullName);

                /// 4. Log in as a Credential Staff member, click on Assign assessors, then assign 2 assessors
                PERHelperMethods.AsCredentialStaff_AssignTraineeTo1stAnd2ndAssessors(browser, newTrainee.FullName, UserUtils.Assessor1PERFullName, UserUtils.Assessor2PERFullName);

                /// 5. Login as both assessors. For the first assessor, mark all milestones as achieved. For the second assessor, request additional information
                /// from the trainee.
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor1PERLogin, newTrainee.FullName);
                PERHelperMethods.AsAssessor_RequestAdditionalInfo(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName, milestoneNames[0]);

                /// 6. Login as the trainee and then send the additional information to the assessor
                string additionalInfo = "here is the additional info";
                PERHelperMethods.AsTrainee_SendAdditionalInfo(browser, newTrainee.Username, milestoneNames[0], additionalInfo);

                /// 7. Login as the assessor and verify that the assessor got the additional information
                Assert.True(PERHelperMethods.AsAssessor_VerifyAdditionalInfo(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName, milestoneNames[0], additionalInfo));

                /// 8. Advance the trainee to Achieved
                PERHelperMethods.AsAssessor_ApproveTrainee(browser, UserUtils.Assessor2PERLogin, newTrainee.FullName);
                PERHelperMethods.AsCredentialStaff_MarkTraineeAsAchievedOrNotAchieved(browser, newTrainee.FullName, true);
            }
        }
Exemplo n.º 25
0
        public void CreditLabelVerification()
        {
            // Not runing firefox right now due to Lifetime support Actions button being a hover dropdown. Revisit this and fix in firefox,
            // Will probably just need to add a line of code to hover over Actions instead of clicking on it.
            if (BrowserName == BrowserNames.Chrome || BrowserName == BrowserNames.InternetExplorer)
            {
                /// 1. Create a Mainport user and Login
                UserInfo        NewUser = UserUtils.CreateAndRegisterUser(UserUtils.Application.Mainport, UserUtils.UserRole.MP);
                LoginPage       LP      = Navigation.GoToLoginPage(browser);
                MyDashboardPage DP      = LP.LoginAsNewUser(UserUtils.UserRole.MP, NewUser.Username, ConfigurationManager.AppSettings["LoginPassword"]);

                /// 2. Add at least 1 activity for each activity type

                /// 3. Choose 1 activity which cuts the credits in half per hour/article when the No radio button is clicked.
                EnterCPDActivityPage EAP = DP.ClickAndWait(DP.EnterACPDActivityBtn);
                Activity             ConferenceActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec1_Conference_IfNotAccreditedCutCreditsInHalf, "10", false);

                /// 4. Choose 1 activity which has a fixed amount of credits
                DP.ClickAndWait(DP.EnterACPDActivityBtn);
                Activity FellowshipActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_Fellowship_FixedCredits25);

                /// 5. Choose 1 activity which triples credits
                DP.ClickAndWait(DP.EnterACPDActivityBtn);
                Activity AccreditedSelAssessActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec3_AccreditedSelfAssessmentPrograms_CreditsTripled, "10");

                /// 6. Choose 1 activity that requires validation
                DP.ClickAndWait(DP.EnterACPDActivityBtn);
                Activity BulkJournalActivity = EAP.AddActivityThenSubmit(Constants.MainportActivityTypes.Sec2_BulkJournalReadingwithTranscript_ValidationRequired, "10");

                /// 7. Log on to the Lifetime Support site and validate the credit
                LSHelp.Login(browser, "lkaveti", "password");
                LSHelp.ValidateCredit(browser, "Royal College of Physicians", NewUser.FullName, "Maintenance of Certification", BulkJournalActivity.ActivityName);

                /// 8. Go back to the Mainport app, and on the My Dashboard page, verify that the Total Credits Submitted and Applied labels reflect the amount of
                /// credits that were added above. Also verify the "MOC Section Requirements" graph labels get reflected. Based on the above activites, the
                /// Submitted label should have 5 for Conference, + 25 for fellowship, + 30 for accreditedselfassess, + 10 for bulkjournal. So total we should see 70
                Navigation.GoToMyDashboardPage(browser);
                MainportHelperMethods.WaitForCreditsToBeApplied(browser, DP, Bys.MyDashboardPage.TotalCreditsAppliedValueLbl, "70");
                Assert.AreEqual("70", DP.TotalCreditsSubmittedValueLbl.Text);
                Assert.AreEqual("70", DP.TotalCreditsAppliedValueLbl.Text);
                Assert.AreEqual(string.Format("Section 1Group Learning{0}/25 Credits", ConferenceActivity.Credits),
                                DP.MOCSectionReqsGraphGroupLearningCreditLbl.GetAttribute("textContent"));
                int totalSelfLearningCredits = Int32.Parse(FellowshipActivity.Credits) + Int32.Parse(BulkJournalActivity.Credits); // For the Section 2 Self Learning activities, we completed 2 of them, so we have to add those 2 credits to get the total label
                Assert.AreEqual(string.Format("Section 2Self Learning{0}/25 Credits", totalSelfLearningCredits.ToString()),
                                DP.MOCSectionReqsGraphSelfLearningCreditLbl.GetAttribute("textContent"));
                Assert.AreEqual(string.Format("Section 3Assessment{0}/25 Credits", AccreditedSelAssessActivity.Credits),
                                DP.MOCSectionReqsGraphAssessmentCreditLbl.GetAttribute("textContent"));

                /// 9. On the My MOC page, verify that the credits are reflected in the Overall label, reflected in each Credits Applied to Date labels,
                /// and in each row under the Credits Reported column
                MyMOCPage MP = DP.ClickAndWaitBasePage(DP.MyMOCTab);
                // Overall label
                Assert.AreEqual("70 of 400", MP.OverallCreditsAppliedLbl.Text);
                // Credits Applied to Date labels
                Assert.AreEqual(ConferenceActivity.Credits + " Credits", MP.GroupLearnTblCreditsAppliedValueLbl.Text);
                Assert.AreEqual(totalSelfLearningCredits.ToString() + " Credits", MP.SelfLearningTblCreditsAppliedValueLbl.Text);
                Assert.AreEqual(AccreditedSelAssessActivity.Credits + " Credits", MP.AssessmentTblCreditsAppliedValueLbl.Text);
                // Credits Reported column
                Assert.AreEqual(ConferenceActivity.Credits, MP.GroupLearnTblUnaccrActRowCredsRptLbl.Text);
                Assert.AreEqual(FellowshipActivity.Credits, MP.SelfLearningTblPlanLearnActRowCredsRptLbl.Text);
                Assert.AreEqual(BulkJournalActivity.Credits, MP.SelfLearningTblScanActRowCredsRptLbl.Text);
                Assert.AreEqual(AccreditedSelAssessActivity.Credits, MP.AssessmentTblKnowledgeAssRowCredsRptLbl.Text);

                /// 10. Click on the View link for one of the activities, verify the credits are reflected correctly on the popup, click the Pencil icon
                /// to view the activity in read-only mode to verify that it appears
                MP.OpenViewActivitiesForm(MP.GroupLearnTblUnaccrActRowViewLnk);
                Assert.AreEqual(ElemGet.Grid_GetCellTextByRowNameAndColumnName(MP.ViewActivitiesFormActivitiesTbl, MP.ViewActivitiesFormActivitiesTblThead,
                                                                               Bys.MyMOCPage.ViewActivitiesFormActivitiesTblBody, ConferenceActivity.ActivityName, "td", "Credits Reported"), ConferenceActivity.Credits);
                MP.ClickAndWait(MP.ViewActivitiesFormCloseBtn);
            }
        }
        public void AddRandomUsersForRyanMethod()
        {
            // Users with specific details. fr_CA for french
            // Diploma
            //UserInfo blah = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.CSDiploma,
            //    "DIPCSUser1_2DOM_CECITY", null, null, "DIPClinicalSupervisor", "1", "fr_CA", "2DOM");

            //UserInfo blah2 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.DDDiploma,
            //    "DIPDDUser1_2DOM_CECITY", null, null, "DIPDiplomaDirector", "1", "fr_CA", "2DOM");

            //UserInfo blah3 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.FOMDiploma,
            //    "DIPFOMUser1_2DOM_CECITY", null, null, "DIPFacultyOfMedicine", "1", "fr_CA", "2DOM");

            //UserInfo blah4 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma,
            //    "DIPASRUser1_2DOM_CECITY", null, null, "DIPAssessor", "1", "fr_CA", "2DOM");

            //UserInfo blah5 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma,
            //    "DIPASRUser2_2DOM_CECITY", null, null, "DIPAssessor", "2", "fr_CA", "2DOM");

            //UserInfo blah6 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma,
            //    "DIPASRUser3_2DOM_CECITY", null, null, "DIPAssessor", "3", "fr_CA", "2DOM");

            //UserInfo blah7 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma,
            //    "DIPTrainUser1_2DOM_CECITY", null, null, "DIPTrainee", "1", "fr_CA", "2DOM");

            //UserInfo blah8 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma,
            //    "DIPTrainUser2_2DOM_CECITY", null, null, "DIPTrainee", "2", "fr_CA", "2DOM");

            //UserInfo blah9 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma,
            //    "DIPTrainUser3_2DOM_CECITY", null, null, "DIPTrainee", "3", "fr_CA", "2DOM");


            UserInfo blah17 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
                                                              "blah-F", null, null, "PERTrainee", "3", "fr_CA", "2POM-F");



            //// PER
            UserInfo blah10 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF,
                                                              "PERREFUser1_2POM-F", null, null, "PERReferee", "1", "en_US", "2POM-F");

            UserInfo blah11 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF,
                                                              "PERREFUser2_2POM-F", null, null, "PERReferee", "2", "en_US", "2POM-F");

            UserInfo blah12 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER,
                                                              "PERASRUser1_2POM-F", null, null, "PERAssessor", "1", "en_US", "2POM-F");

            UserInfo blah13 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER,
                                                              "PERASRUser2_2POM-F", null, null, "PERAssessor", "2", "en_US", "2POM-F");

            UserInfo blah14 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
                                                              "PERTrainUser1_2POM-F", null, null, "PERTrainee", "1", "en_US", "2POM-F");

            UserInfo blah15 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
                                                              "PERTrainUser2_2POM-F", null, null, "PERTrainee", "2", "en_US", "2POM-F");

            UserInfo blah16 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
                                                              "PERTrainUser3_2POM-F", null, null, "PERTrainee", "3", "en_US", "2POM-F");



            //***************************************************************************************************************



            //// Users without specific details
            //// Diploma
            //UserInfo bblah = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.CSDiploma,
            //    "DIPCSUser1", null, null, "DIPClinicalSupervisor", "1", "en_US", "1 DR PER");

            //UserInfo bblah2 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.DDDiploma,
            //    "DIPDDUser1", null, null, "DIPDiplomaDirector", "1", "en_US", "1 DR PER");

            //UserInfo bblah3 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.FOMDiploma,
            //    "DIPFOMUser1", null, null, "DIPFacultyOfMedicine", "1", "en_US", "1 DR PER");

            //UserInfo bblah4 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma,
            //    "DIPAssUser1", null, null, "DIPAssessor", "1", "en_US", "1 DR PER");

            //UserInfo bblah5 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma,
            //    "DIPAssUser2", null, null, "DIPAssessor", "2", "en_US", "1 DR PER");

            //UserInfo bblah6 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.ASRDiploma,
            //    "DIPAssUser3", null, null, "DIPAssessor", "3", "en_US", "1 DR PER");

            //UserInfo bblah7 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma,
            //    "DIPTrainUser1", null, null, "DIPTrainee", "1", "en_US", "1 DR PER");

            //UserInfo bblah8 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma,
            //    "DIPTrainUser2", null, null, "DIPTrainee", "2", "en_US", "1 DR PER");

            //UserInfo bblah9 = UserUtils.CreateAndRegisterUser(UserUtils.Application.Diploma, UserUtils.UserRole.TraineeDiploma,
            //    "DIPTrainUser3", null, null, "DIPTrainee", "3", "en_US", "1 DR PER");



            //// PER
            //UserInfo bblah10 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF,
            //   "PERREFUser1", null, null, "PERReferee", "1", "en_US", "1 DR PER");

            //UserInfo bblah11 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.REF,
            //    "PERREFUser2", null, null, "PERReferee", "2", "en_US", "1 DR PER");

            //UserInfo bblah12 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER,
            //    "PERASRUser1", null, null, "PERAssessor", "1", "en_US", "1 DR PER");

            //UserInfo bblah13 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.ASRPER,
            //    "PERASRUser2", null, null, "PERAssessor", "2", "en_US", "1 DR PER");

            //UserInfo bblah14 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
            //    "PERTrainUser1", null, null, "PERTrainee", "1", "en_US", "1 DR PER");

            //UserInfo bblah15 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
            //    "PERTrainUser2", null, null, "PERTrainee", "2", "en_US", "1 DR PER");

            //UserInfo bblah16 = UserUtils.CreateAndRegisterUser(UserUtils.Application.PER, UserUtils.UserRole.TraineePER,
            //    "PERTrainUser3", null, null, "PERTrainee", "3", "en_US", "1 DR PER");
        }