Ejemplo n.º 1
0
        public void ConditionValidationTest()
        {
            //Arrange
            string FileName = TestResources.GetTestResourcesFile(@"Solutions" + Path.DirectorySeparatorChar + "BasicSimple" + Path.DirectorySeparatorChar + "BusinessFlows" + Path.DirectorySeparatorChar + "ConditionVal.Ginger.BusinessFlow.xml");

            //Load BF
            //Act
            BusinessFlow businessFlow = (BusinessFlow)RS.DeserializeFromFile(FileName);

            //Assert
            Assert.AreEqual(1, businessFlow.Activities[0].Acts[0].InputValues.Count);
        }
Ejemplo n.º 2
0
        public void MissingVariableUsedOnlyInSetVariableActionTest()
        {
            //Arrange
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();

            string FileName = TestResources.GetTestResourcesFile(@"Solutions" + Path.DirectorySeparatorChar + "AnalyzerTestSolution" + Path.DirectorySeparatorChar + "BusinessFlows" + Path.DirectorySeparatorChar + "MissingVariableUsedOnlyInSetVariable.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RepositorySerializer.DeserializeFromFile(FileName);


            ObservableList <AnalyzerItemBase> mIssues = new ObservableList <AnalyzerItemBase>();
            AnalyzerUtils mAnalyzerUtils = new AnalyzerUtils();

            WorkSpace.Instance.SolutionRepository = SR;

            businessFlow.Variables.Remove(businessFlow.GetVariable("username"));


            //Run Analyzer
            mAnalyzerUtils.RunBusinessFlowAnalyzer(businessFlow, mIssues);
            //Asert
            Assert.AreEqual(1, mIssues.Count);
            Assert.AreEqual(AnalyzerItemBase.eSeverity.High, mIssues[0].Severity);
            Assert.AreEqual("The Variable 'username' is missing", mIssues[0].Description);
            Assert.AreEqual(AnalyzerItemBase.eType.Error, mIssues[0].IssueType);
            Assert.AreEqual(AnalyzerItemBase.eCanFix.Yes, mIssues[0].CanAutoFix, "Auto Fix validation when missing variable is used only in Set variable action");
        }
Ejemplo n.º 3
0
        public void TestObjectAttrofOneRepoItem()
        {
            //Check Save and Load of RunSetConfig with Send Email action - RunSetActionSendEmail have 'Email' field which is single object as field, if save load correctly test pass

            //Arrange
            RunSetConfig          RSC   = new RunSetConfig();
            RunSetActionSendEmail RSASE = new RunSetActionSendEmail();

            RSASE.Name = "Send Email";
            string MailFrom = "*****@*****.**";
            string MailTo   = "*****@*****.**";
            string MailCC   = "*****@*****.**";

            RSASE.Email.MailFrom = MailFrom;
            RSASE.Email.MailTo   = MailTo;
            RSASE.Email.MailCC   = MailCC;
            RSC.RunSetActions.Add(RSASE);

            //Act
            string FileName = TestResources.GetTempFile("RunSetConfig1.xml");

            RSC.RepositorySerializer.SaveToFile(RSC, FileName);

            //
            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            RunSetConfig            RSC2 = (RunSetConfig)newRepositorySerializer.DeserializeFromFile(FileName);

            //Assert
            Assert.AreEqual(RSC.Name, RSC2.Name, "RSC.Name");
            RunSetActionSendEmail RSASE2 = (RunSetActionSendEmail)RSC.RunSetActions[0];

            Assert.AreEqual(RSASE2.Email.MailFrom, MailFrom, "RSC2.MailFrom");
            Assert.AreEqual(RSASE2.Email.MailTo, MailTo, "RSC2.MailTo");
            Assert.AreEqual(RSASE2.Email.MailCC, MailCC, "RSC2.MailCC");
        }
Ejemplo n.º 4
0
        public static void ClassInitialize(TestContext TC)
        {
            Reporter.ToLog(eLogLevel.DEBUG, "Creating the GingerCoreNET WorkSpace");
            WorkSpaceEventHandler WSEH = new WorkSpaceEventHandler();

            WorkSpace.Init(WSEH);

            string TempSolutionFolder = TestResources.GetTestTempFolder(@"Solutions" + Path.DirectorySeparatorChar + "APIModelsComparisonUtilityTest");

            if (Directory.Exists(TempSolutionFolder))
            {
                Directory.Delete(TempSolutionFolder, true);
            }

            WorkSpace.Instance.SolutionRepository = GingerSolutionRepository.CreateGingerSolutionRepository();
            WorkSpace.Instance.SolutionRepository.CreateRepository(TempSolutionFolder);

            NewRepositorySerializer RS = new NewRepositorySerializer();

            NewRepositorySerializer.AddClassesFromAssembly(typeof(ApplicationAPIModel).Assembly);
            WorkSpace.Instance.SolutionRepository.Open(TempSolutionFolder);

            // Initialize ApplicationAPIModels XML file names to be fetched from TestResources
            xmlFiles = new List <string>()
            {
                @"Repository" + Path.DirectorySeparatorChar + "SampleAPIModels" + Path.DirectorySeparatorChar + "Create_User.Ginger.ApplicationAPIModel.xml",
                @"Repository" + Path.DirectorySeparatorChar + "SampleAPIModels" + Path.DirectorySeparatorChar + "Delete_User.Ginger.ApplicationAPIModel.xml",
                @"Repository" + Path.DirectorySeparatorChar + "SampleAPIModels" + Path.DirectorySeparatorChar + "PhoneVerifySOAP_CheckPhoneNumber.Ginger.ApplicationAPIModel.xml",
                @"Repository" + Path.DirectorySeparatorChar + "SampleAPIModels" + Path.DirectorySeparatorChar + "Update_User.Ginger.ApplicationAPIModel.xml",
                @"Repository" + Path.DirectorySeparatorChar + "SampleAPIModels" + Path.DirectorySeparatorChar + "PhoneVerifySOAP_CheckPhoneNumbers.Ginger.ApplicationAPIModel.xml",
                @"Repository" + Path.DirectorySeparatorChar + "SampleAPIModels" + Path.DirectorySeparatorChar + "GetQuote_DelayedStockQuoteSoap.Ginger.ApplicationAPIModel.xml",
            };

            existingAPIsList = new ObservableList <ApplicationAPIModel>();
            learnedAPIsList  = new List <ApplicationAPIModel>();

            // Importing API Models from XML files (listed in xmlFiles)
            foreach (String fileName in xmlFiles)
            {
                var tempFile = TestResources.GetTestResourcesFile(fileName);
                ApplicationAPIModel appModel = RS.DeserializeFromFile(typeof(ApplicationAPIModel), tempFile) as ApplicationAPIModel;
                appModel.FilePath = appModel.Name;//so it will get new file path when been added to repository later
                if (appModel != null)
                {
                    existingAPIsList.Add(appModel);
                    learnedAPIsList.Add(appModel.CreateCopy() as ApplicationAPIModel);
                }
            }

            // Modifying certain API Models for testing different Comparison status and scenarios
            existingAPIsList[1].RequestBody = existingAPIsList[1].RequestBody + "This is modified";
            existingAPIsList[3].RequestBody = existingAPIsList[3].RequestBody + "This is also modified";

            // Storing the API Models in the Solution Repository as will be utilized during Comparison process
            foreach (ApplicationAPIModel apiModel in existingAPIsList.Skip(1).Take(4))
            {
                WorkSpace.Instance.SolutionRepository.AddRepositoryItem(apiModel);
            }
        }
Ejemplo n.º 5
0
        public void BizFlowSaveLoad()
        {
            //Arrange
            int ActivitiesToCreate = 5;

            //Act

            BusinessFlow BF = new BusinessFlow();

            BF.Name        = "Biz flow 1";
            BF.Description = "Desc 1";
            //BF.Status = BusinessFlow.eBusinessFlowStatus.Active; //TODOL do NOT write to XML if null or empty
            BF.Activities = new ObservableList <Activity>();

            for (int i = 1; i <= ActivitiesToCreate; i++)
            {
                Activity a = new Activity();
                a.ActivityName = "Activity number " + i;
                a.Description  = "Desc - " + i;
                BF.Activities.Add(a);
                a.Status = eRunStatus.Passed;
                for (int j = 1; j <= 2; j++)
                {
                    ActTextBox t = new ActTextBox();
                    t.Description = "Set text box " + j;
                    t.LocateBy    = eLocateBy.ByID;
                    t.LocateValue = "ID" + j;
                    a.Acts.Add(t);

                    ActGotoURL g = new ActGotoURL();
                    g.Description = "goto URL " + j;
                    g.LocateValue = "ID" + j;
                    a.Acts.Add(g);
                }
            }
            VariableString v = new VariableString();

            v.Name        = "Var1";
            v.Description = "VDesc 1";
            BF.AddVariable(v);
            string FileName = TestResources.GetTempFile("bf1.xml");

            BF.RepositorySerializer.SaveToFile(BF, FileName);


            // Assert

            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), FileName);

            Assert.AreEqual(BF2.Name, BF.Name);
            Assert.AreEqual(BF2.Description, BF.Description);
            Assert.AreEqual(BF2.Activities.Count, ActivitiesToCreate);
            Assert.AreEqual(BF2.Variables.Count, 1);

            //Validations
        }
Ejemplo n.º 6
0
        public void BizFlowAddActivitiesFromSharedRepoSaveLoad()
        {
            //Arrange
            int    ActivitiesToCreate = 5;
            string FileName           = TestResources.GetTempFile("BFSaveLoad.xml");

            BusinessFlow BF = new BusinessFlow()
            {
                Name = "Biz flow 1", Description = "Desc 1"
            };

            BF.Activities = new ObservableList <Activity>();

            for (int i = 1; i <= ActivitiesToCreate; i++)
            {
                Activity a = new Activity()
                {
                    ActivityName = "Activity " + i, Description = "desc" + i, Status = eRunStatus.Passed
                };
                BF.AddActivity(a);

                //for (int j = 1; j <= 2; j++)
                //{
                //    ActTextBox t = new ActTextBox();
                //    t.Description = "Set text box " + j;
                //    t.LocateBy = Act.eLocatorType.ByID;
                //    t.LocateValue = "ID" + j;
                //    a.Acts.Add(t);

                //    ActGotoURL g = new ActGotoURL();
                //    g.Description = "goto URL " + j;
                //    g.LocateValue = "ID" + j;
                //    a.Acts.Add(g);
                //}
            }
            VariableString v = new VariableString();

            v.Name        = "Var1";
            v.Description = "VDesc 1";
            BF.AddVariable(v);

            //ValidationDB vdb = new ValidationDB() { Description ="DBV1", Expected ="exp1" };
            //BF.Activities[0].Asserts.Add(vdb);

            //Act
            BF.RepositorySerializer.SaveToFile(BF, FileName);

            // Assert
            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), FileName);

            Assert.AreEqual(BF2.Activities.Count(), ActivitiesToCreate);
            //Assert.AreEqual(BF2. Activities[0].Asserts.Count(), 1);
            //BF2.Description = "aaa";
        }
Ejemplo n.º 7
0
        public void BizFlowCheckIsDirtyTrue()
        {
            //Arrange
            int ActivitiesToCreate = 2;

            string TempFilepath = TestResources.GetTempFile("bfIsDirtyTrue.xml");

            BusinessFlow BF = new BusinessFlow();

            BF.Name        = "Biz flow 1";
            BF.Description = "Desc 1";
            //BF.Status = BusinessFlow.eBusinessFlowStatus.Active; //TODOL do NOT write to XML if null or empty
            BF.Activities = new ObservableList <Activity>();

            for (int i = 1; i <= ActivitiesToCreate; i++)
            {
                Activity a = new Activity();
                a.ActivityName = "Activity number " + i;
                a.Description  = "Desc - " + i;
                BF.Activities.Add(a);
                a.Status = eRunStatus.Passed;
                for (int j = 1; j <= 2; j++)
                {
                    ActTextBox t = new ActTextBox();
                    t.Description = "Set text box " + j;
                    t.LocateBy    = eLocateBy.ByID;
                    t.LocateValue = "ID" + j;
                    a.Acts.Add(t);

                    ActGotoURL g = new ActGotoURL();
                    g.Description = "goto URL " + j;
                    g.LocateValue = "ID" + j;
                    a.Acts.Add(g);
                }
            }
            VariableString v = new VariableString();

            v.Name        = "Var1";
            v.Description = "VDesc 1";
            BF.AddVariable(v);


            //Act
            BF.RepositorySerializer.SaveToFile(BF, TempFilepath);


            // Assert
            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), TempFilepath);

            BF2.StartDirtyTracking();
            BF2.Description = "aaa";
            Assert.IsTrue(BF2.DirtyStatus == Amdocs.Ginger.Common.Enums.eDirtyStatus.Modified);
        }
Ejemplo n.º 8
0
        public void JavaLegacyPOMConversionTest()
        {
            //Arrange
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();
            var businessFlowFile = TestResources.GetTestResourcesFile(@"JavaLegacyToPOMxml" + Path.DirectorySeparatorChar + "Java_Legacy_Actions_BF.Ginger.BusinessFlow.xml");
            var javaPomFile      = TestResources.GetTestResourcesFile(@"JavaLegacyToPOMxml\Java Swing Test App.Ginger.ApplicationPOMModel.xml");

            //Load BF
            mBF = (BusinessFlow)RepositorySerializer.DeserializeFromFile(businessFlowFile);

            mBF.Activities[0].SelectedForConversion = true;

            //Load POM
            ApplicationPOMModel applicationPOM = (ApplicationPOMModel)RepositorySerializer.DeserializeFromFile(javaPomFile);

            mSolutionRepository.AddRepositoryItem(applicationPOM);

            ExecuteActionConversion(true, true, string.Empty, true, applicationPOM.Guid);
            //Assert
            Assert.AreEqual(((ActUIElement)mBF.Activities[1].Acts[1]).ElementLocateBy.ToString(), eLocateBy.POMElement.ToString());
            Assert.AreEqual(((ActUIElement)mBF.Activities[1].Acts[1]).ElementAction.ToString(), ((ActJavaElement)mBF.Activities[0].Acts[1]).ControlAction.ToString());
        }
Ejemplo n.º 9
0
        public void AddNewMyRepositoryItemAndVerifyFileSaved()
        {
            //Arrange
            string           MRIName = "MRI Save 1";
            MyRepositoryItem MRI1    = new MyRepositoryItem(MRIName);

            //Act
            mSolutionRepository.AddRepositoryItem(MRI1);
            MyRepositoryItem MRI2 = (MyRepositoryItem)mRepositorySerializer.DeserializeFromFile(MRI1.FilePath);

            //Assert
            Assert.AreEqual(MRI1.Guid, MRI2.Guid);
            Assert.AreEqual(MRIName, MRI2.Name);
        }
Ejemplo n.º 10
0
        //[Timeout(60000)]
        public void BusinessFlowBrowserActionTest()
        {
            //Arrange
            //Put the BF in Test Resource
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();

            string FileName = TestResources.GetTestResourcesFile($"XML{Separator}Flow 1.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RepositorySerializer.DeserializeFromFile(FileName);

            //Asert
            Assert.AreEqual("GotoURL", (from aiv in businessFlow.Activities[0].Acts[0].InputValues where aiv.Param == "ControlAction" select aiv).FirstOrDefault().Value);
            Assert.AreEqual("NewTab", (from aiv in businessFlow.Activities[0].Acts[0].InputValues where aiv.Param == "GotoURLType" select aiv).FirstOrDefault().Value);
        }
Ejemplo n.º 11
0
        public void DSConditionClassSkipSerializeTest()
        {
            //Arrange
            //Put the BF in Test Resource having class "GingerCore.DataSource.ActDSConditon" serialized in xml
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();
            string FileName = TestResources.GetTestResourcesFile(@"Repository" + Path.DirectorySeparatorChar + "DS_SkipWhereConditions_Flow.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RepositorySerializer.DeserializeFromFile(FileName);


            //Assert
            Assert.AreEqual(2, businessFlow.Activities.Count, "BF Activities Count");
            Assert.AreEqual(1, businessFlow.Activities[0].Acts.Count, "Activity Actions Count");
        }
Ejemplo n.º 12
0
        public void BusinessFlowActivitiesLazyloadTest()
        {
            //Arrange
            //Put the BF in Test Resource
            string FileName = TestResources.GetTestResourcesFile(@"Solutions" + Path.DirectorySeparatorChar + "CLI" + Path.DirectorySeparatorChar + "BusinessFlows" + Path.DirectorySeparatorChar + "Flow 1.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RS.DeserializeFromFile(FileName);

            Assert.AreEqual(false, businessFlow.LazyLoadFlagForUnitTest);

            int count = businessFlow.Activities.Count();

            Assert.AreEqual(true, businessFlow.LazyLoadFlagForUnitTest);
            Assert.AreEqual(1, count);
        }
Ejemplo n.º 13
0
        public void UpdateRepositoryItem()
        {
            //Arrange
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();
            MyRepositoryItem        MRI2 = (from x in mSolutionRepository.GetAllRepositoryItems <MyRepositoryItem>() where x.Name == "A2" select x).FirstOrDefault();

            //Act
            MRI2.Name = "A2 New Name";
            mSolutionRepository.SaveRepositoryItem(MRI2);
            MyRepositoryItem MRI2FromDisk = (MyRepositoryItem)RepositorySerializer.DeserializeFromFile(MRI2.FilePath);


            //Assert
            Assert.AreEqual(MRI2.Guid, MRI2FromDisk.Guid);
            Assert.AreEqual(MRI2.Name, MRI2FromDisk.Name);
        }
Ejemplo n.º 14
0
        public void ActivitiesClearBackup()
        {
            //Arrange
            BusinessFlow BF       = new BusinessFlow();
            string       FileName = TestResources.GetTempFile("activityClearBackup.xml");

            BF.Name        = "Businessflow1";
            BF.Description = "Test Clear Backup";
            BF.Activities  = new ObservableList <Activity>();
            Activity a = new Activity()
            {
                ActivityName = "Activity 1", Description = "Desciption -1", Status = eRunStatus.Passed
            };

            BF.Activities.Add(a);

            ActTextBox t = new ActTextBox()
            {
                Description = "Set text box ", LocateBy = eLocateBy.ByID, LocateValue = "ID"
            };

            a.Acts.Add(t);

            //Act
            BF.RepositorySerializer.SaveToFile(BF, FileName);
            a.SaveBackup();
            ActGotoURL g = new ActGotoURL()
            {
                Description = "goto URL ", LocateValue = "ID"
            };

            a.Acts.Add(g);
            BF.RepositorySerializer.SaveToFile(BF, FileName);
            a.SaveBackup();
            a.RestoreFromBackup();

            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), FileName);

            BF2.SaveBackup(); //dirty now just indicate if backup exist
            BF2.Description = "aaa";

            // Assert
            Assert.AreEqual(BF2.Activities[0].Acts.Count, BF.Activities[0].Acts.Count);
        }
Ejemplo n.º 15
0
        public void SolutionRecoverStart(bool showRecoverPageAnyway = false)
        {
            ObservableList <RecoveredItem> recovredItems = new ObservableList <RecoveredItem>();

            if (Directory.Exists(mRecoverFolderPath))
            {
                NewRepositorySerializer serializer = new NewRepositorySerializer();

                foreach (var directory in new DirectoryInfo(mRecoverFolderPath).GetDirectories())
                {
                    string timestamp = directory.Name.ToString().Replace("AutoSave_", string.Empty);

                    IEnumerable <FileInfo> files = directory.GetFiles("*", SearchOption.AllDirectories);

                    foreach (FileInfo file in files)
                    {
                        try
                        {
                            RecoveredItem recoveredItem = new RecoveredItem();
                            recoveredItem.RecoveredItemObject                  = serializer.DeserializeFromFile(file.FullName);
                            recoveredItem.RecoverDate                          = timestamp;
                            recoveredItem.RecoveredItemObject.FileName         = file.FullName;
                            recoveredItem.RecoveredItemObject.ContainingFolder = file.FullName.Replace(directory.FullName, "~");
                            recoveredItem.Status = eRecoveredItemStatus.PendingRecover;
                            recovredItems.Add(recoveredItem);
                        }
                        catch (Exception ex)
                        {
                            Reporter.ToLog(eLogLevel.ERROR, "Failed to fetch recover item : " + file.FullName, ex);
                        }
                    }
                }

                if (recovredItems.Count == 0)
                {
                    CleanUp(); //have empty folders
                }
            }

            if (recovredItems.Count > 0 || showRecoverPageAnyway)
            {
                RepositoryItemHelper.RepositoryItemFactory.ShowRecoveryItemPage(recovredItems);
            }
        }
Ejemplo n.º 16
0
        //[Timeout(60000)]
        public void AnalyzeBusinessFlowTest()
        {
            //Arrange
            //Put the BF in Test Resource
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();

            string FileName = TestResources.GetTestResourcesFile(@"Solutions" + Path.DirectorySeparatorChar + "AnalyzerTestSolution" + Path.DirectorySeparatorChar + "BusinessFlows" + Path.DirectorySeparatorChar + "Demo Flow 01.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RepositorySerializer.DeserializeFromFile(FileName);

            ObservableList <AnalyzerItemBase> mIssues = new ObservableList <AnalyzerItemBase>();
            AnalyzerUtils mAnalyzerUtils = new AnalyzerUtils();

            WorkSpace.Instance.SolutionRepository = SR;

            //Run Analyzer
            mAnalyzerUtils.RunBusinessFlowAnalyzer(businessFlow, mIssues);
            //Asert
            Assert.AreNotEqual(0, mIssues.Count);
        }
Ejemplo n.º 17
0
        public void BizFlowClearBackup()
        {
            //Arrange
            BusinessFlow BF = new BusinessFlow();

            BF.Name        = "Businessflow1";
            BF.Description = "Test Clear Backup";
            BF.Activities  = new ObservableList <Activity>();

            Activity a = new Activity()
            {
                ActivityName = "Activity 1", Description = "Desciption -1", Status = eRunStatus.Passed
            };

            BF.Activities.Add(a);

            BF.SaveBackup();
            Activity b = new Activity()
            {
                ActivityName = "Activity 2", Description = "Desciption -2", Status = eRunStatus.Passed
            };

            BF.Activities.Add(b);

            string TempFilepath = TestResources.GetTempFile("bfClearBackup.xml");

            //Act
            BF.RepositorySerializer.SaveToFile(BF, TempFilepath);
            BF.SaveBackup();
            BF.RestoreFromBackup();

            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), TempFilepath);

            BF2.SaveBackup();//dirty now just indicate if backup exist
            BF2.Description = "aaa";

            // Assert
            Assert.AreEqual(BF2.Activities.Count, BF.Activities.Count);
        }
Ejemplo n.º 18
0
        public void ActionClearBackup()
        {
            //Arrange
            BusinessFlow BF = new BusinessFlow();

            BF.Name        = "Businessflow1";
            BF.Description = "Test Clear Backup";
            BF.Activities  = new ObservableList <Activity>();
            Activity a = new Activity();

            a.ActivityName = "Activity 1";
            a.Description  = "Desciption -1";
            BF.Activities.Add(a);
            a.Status = eRunStatus.Passed;

            ActGotoURL g = new ActGotoURL();

            g.Description = "goto URL ";
            g.LocateValue = "ID";
            a.Acts.Add(g);
            string TempFilepath = TestResources.GetTempFile("actionClearBackup.xml");

            //Act
            BF.RepositorySerializer.SaveToFile(BF, TempFilepath);
            a.SaveBackup();
            g.LocateValue = "ID1";
            BF.RepositorySerializer.SaveToFile(BF, TempFilepath);
            a.SaveBackup();
            a.RestoreFromBackup();

            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), TempFilepath);

            BF2.SaveBackup();//dirty now just indicate if backup exist
            BF2.Description = "aaa";

            // Assert
            Assert.AreEqual(BF2.Activities[0].Acts[0].LocateValue, BF.Activities[0].Acts[0].LocateValue);
        }
Ejemplo n.º 19
0
        public void SolutionRecoverStart(bool showRecoverPageAnyway = false)
        {
            ObservableList <RecoveredItem> recovredItems = new ObservableList <RecoveredItem>();

            if (Directory.Exists(mRecoverFolderPath))
            {
                NewRepositorySerializer serializer = new NewRepositorySerializer();

                foreach (var directory in new DirectoryInfo(mRecoverFolderPath).GetDirectories())
                {
                    string timestamp = directory.Name.ToString().Replace("AutoSave_", string.Empty);

                    IEnumerable <FileInfo> files = directory.GetFiles("*", SearchOption.AllDirectories);

                    foreach (FileInfo file in files)
                    {
                        RecoveredItem recoveredItem = new RecoveredItem();
                        recoveredItem.RecoveredItemObject                  = serializer.DeserializeFromFile(file.FullName);
                        recoveredItem.RecoverDate                          = timestamp;
                        recoveredItem.RecoveredItemObject.FileName         = file.FullName;
                        recoveredItem.RecoveredItemObject.ContainingFolder = file.FullName.Replace(directory.FullName, "~");
                        recoveredItem.Status = eRecoveredItemStatus.PendingRecover;
                        recovredItems.Add(recoveredItem);
                    }
                }

                if (recovredItems.Count == 0)
                {
                    CleanUp(); //have empty folders
                }
            }

            //show recover page
            if (recovredItems.Count > 0 || showRecoverPageAnyway)
            {
                RecoverPage recoverPage = new SolutionAutoSaveAndRecover.RecoverPage(recovredItems);
                recoverPage.ShowAsWindow(eWindowShowStyle.Dialog);
            }
        }
Ejemplo n.º 20
0
        public void BizFlowWithTags()
        {
            //Arrange
            BusinessFlow BF = new BusinessFlow();

            BF.Name        = "Biz flow With Tags";
            BF.Description = "Desc 1";
            BF.Activities  = new ObservableList <Activity>();
            Guid g1 = Guid.NewGuid();
            Guid g2 = Guid.NewGuid();

            BF.Tags.Add(g1);
            BF.Tags.Add(g2);

            Activity a = new Activity();

            a.ActivityName = "Activity number 1";
            a.Description  = "Desc - 1";
            a.Status       = eRunStatus.Passed;
            BF.Activities.Add(a);

            //Act

            string FileName = TestResources.GetTempFile("BFWithTags.xml");

            BF.RepositorySerializer.SaveToFile(BF, FileName);


            // Assert
            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            BusinessFlow            BF2 = (BusinessFlow)newRepositorySerializer.DeserializeFromFile(typeof(BusinessFlow), FileName);

            Assert.AreEqual(BF2.Name, BF.Name);
            Assert.AreEqual(BF2.Description, BF.Description);
            Assert.AreEqual(BF2.Tags[0], g1);
            Assert.AreEqual(BF2.Tags[1], g2);
        }
Ejemplo n.º 21
0
        public void RunSetConfigSaveLoad()
        {
            //Arrange"
            string TempFilepath = TestResources.GetTempFile("UTRSC1.xml");

            //Act
            RunSetConfig RSC = new RunSetConfig();

            RSC.Name = "UT RSC1";
            GingerRunner ARC1 = new GingerRunner();

            ARC1.Name = " Agent 1";
            BusinessFlowRun BFR = new BusinessFlowRun();

            BFR.BusinessFlowName = "BF1";
            ARC1.BusinessFlowsRunList.Add(BFR);
            RSC.GingerRunners.Add(ARC1);

            RSC.RepositorySerializer.SaveToFile(RSC, TempFilepath);

            //Assert
            NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
            RunSetConfig            RSC2 = (RunSetConfig)newRepositorySerializer.DeserializeFromFile(typeof(RunSetConfig), TempFilepath);
        }
Ejemplo n.º 22
0
        void AddItemToSolution(string sourceFile, string targetFile, bool saveAsRepo, GlobalSolutionItem itemToImport)
        {
            if (itemToImport.ItemType == GlobalSolution.eImportItemType.Variables)
            {
                //Add Global Variables from the list
                if (VariableListToImport.Count > 0)
                {
                    foreach (VariableBase vb in VariableListToImport)
                    {
                        if (WorkSpace.Instance.Solution.Variables.Where(x => x.Name == vb.Name).FirstOrDefault() == null)
                        {
                            WorkSpace.Instance.Solution.AddVariable(vb);
                        }
                    }
                }
                return;
            }
            if (itemToImport.ItemType == GlobalSolution.eImportItemType.TargetApplication)
            {
                string[]            filePaths           = Directory.GetFiles(Path.Combine(SolutionFolder), "Ginger.Solution.xml", SearchOption.AllDirectories);
                Solution            solution            = (Solution)newRepositorySerializer.DeserializeFromFile(filePaths[0]);
                ApplicationPlatform applicationPlatform = solution.ApplicationPlatforms.Where(x => x.AppName == itemToImport.ItemName).FirstOrDefault();

                ApplicationPlatform appPlatform = WorkSpace.Instance.Solution.ApplicationPlatforms.Where(x => x.AppName == applicationPlatform.AppName && x.Platform == applicationPlatform.Platform).FirstOrDefault();
                if (appPlatform == null)
                {
                    WorkSpace.Instance.Solution.ApplicationPlatforms.Add(applicationPlatform);
                }
                return;
            }
            RepositoryItemBase repoItemToImport = null;

            if (itemToImport.ItemImportSetting == GlobalSolution.eImportSetting.Replace)
            {
                if (GlobalSolutionUtils.Instance.IsGingerRepositoryItem(sourceFile))
                {
                    RepositoryItemBase repositoryItem = newRepositorySerializer.DeserializeFromFile(sourceFile);
                    RepositoryItemBase repoItem       = GlobalSolutionUtils.Instance.GetRepositoryItemByGUID(itemToImport, repositoryItem);
                    if (repoItem != null)
                    {
                        WorkSpace.Instance.SolutionRepository.MoveSharedRepositoryItemToPrevVersion(repoItem);
                        if (itemToImport.ItemType == GlobalSolution.eImportItemType.DataSources)
                        {
                            DataSourceBase dataSource = (DataSourceBase)repoItem;
                            string         dsFile     = WorkSpace.Instance.Solution.SolutionOperations.ConvertSolutionRelativePath(dataSource.FilePath);
                            GlobalSolutionUtils.Instance.KeepBackupAndDeleteFile(dsFile);
                        }
                    }
                }
                else
                {
                    GlobalSolutionUtils.Instance.KeepBackupAndDeleteFile(targetFile);
                }
            }

            if (saveAsRepo)
            {
                repoItemToImport = newRepositorySerializer.DeserializeFromFile(sourceFile);
                repoItemToImport.ContainingFolder = Path.GetDirectoryName(targetFile);
                repoItemToImport.FilePath         = targetFile;
                if (!string.IsNullOrEmpty(itemToImport.ItemNewName))
                {
                    repoItemToImport.ItemName = itemToImport.ItemNewName;
                }
                if (itemToImport.ItemType == GlobalSolution.eImportItemType.DataSources)
                {
                    DataSourceBase dataSource = (DataSourceBase)repoItemToImport;
                    sourceFile = dataSource.FilePath.Replace("~", SolutionFolder);
                    string dsFile    = WorkSpace.Instance.Solution.SolutionOperations.ConvertSolutionRelativePath(dataSource.FilePath);
                    string directory = Path.GetDirectoryName(dsFile);
                    string ext       = Path.GetExtension(dsFile);
                    string fileName  = Path.GetFileName(dsFile);

                    string newFile = string.Empty;
                    if (!string.IsNullOrEmpty(itemToImport.ItemNewName))
                    {
                        newFile = Path.Combine(directory, itemToImport.ItemNewName + ext);
                    }
                    else
                    {
                        newFile = Path.Combine(directory, fileName);
                    }
                    dataSource.FilePath = WorkSpace.Instance.SolutionRepository.ConvertFullPathToBeRelative(newFile);
                    //
                    File.Copy(sourceFile, newFile);
                }
                //Create repository (sub) folder before adding
                AddRepositoryItem(itemToImport, repoItemToImport, targetFile);
            }
            else
            {
                if (!Directory.Exists(Path.GetDirectoryName(targetFile)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(targetFile));
                }
                File.Copy(sourceFile, targetFile);
            }
        }
Ejemplo n.º 23
0
        private async void Init()
        {
            try
            {
                xProcessingIcon.Visibility = Visibility.Visible;
                if (SourceControlIntegration.BusyInProcessWhileDownloading)
                {
                    Reporter.ToUser(eUserMsgKeys.StaticInfoMessage, "Please wait for current process to end.");
                    return;
                }
                SourceControlIntegration.BusyInProcessWhileDownloading = true;

                await Task.Run(() =>
                {
                    //set paths to ignore:
                    List <string> pathsToIgnore = new List <string>();
                    pathsToIgnore.Add("PrevVersions");
                    pathsToIgnore.Add("RecentlyUsed.dat");
                    pathsToIgnore.Add("AutoSave");
                    pathsToIgnore.Add("Recover");
                    if (App.UserProfile.Solution != null && App.UserProfile.Solution.ExecutionLoggerConfigurationSetList != null && App.UserProfile.Solution.ExecutionLoggerConfigurationSetList.Count > 0)
                    {
                        pathsToIgnore.Add(Ginger.Run.ExecutionLogger.GetLoggerDirectory(App.UserProfile.Solution.ExecutionLoggerConfigurationSetList[0].ExecutionLoggerConfigurationExecResultsFolder));
                    }
                    HTMLReportsConfiguration reportConfig = App.UserProfile.Solution.HTMLReportsConfigurationSetList.Where(x => (x.IsSelected == true)).FirstOrDefault();
                    if (reportConfig != null)
                    {
                        pathsToIgnore.Add(Ginger.Reports.GingerExecutionReport.ExtensionMethods.GetReportDirectory(reportConfig.HTMLReportsFolder));
                    }

                    mFiles = SourceControlIntegration.GetPathFilesStatus(App.UserProfile.Solution.SourceControl, mPath, pathsToIgnore);
                    //set items name and type
                    Parallel.ForEach(mFiles, SCFI =>
                    {
                        try
                        {
                            if (SCFI.Path.ToUpper().Contains(".GINGER.") && SCFI.Path.ToUpper().Contains(".XML"))
                            {
                                NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
                                //unserialize the item
                                RepositoryItemBase item = newRepositorySerializer.DeserializeFromFile(SCFI.Path);
                                SCFI.Name = item.ItemName;
                            }
                            else
                            {
                                SCFI.Name = SCFI.Path.Substring(SCFI.Path.LastIndexOf('\\') + 1);
                            }
                        }
                        catch (Exception ex)
                        {
                            if (SCFI.Path.Contains('\\') && (SCFI.Path.LastIndexOf('\\') + 1 < SCFI.Path.Length - 1))
                            {
                                SCFI.Name = SCFI.Path.Substring(SCFI.Path.LastIndexOf('\\') + 1);
                            }
                            Reporter.ToLog(eAppReporterLogLevel.ERROR, $"Method - {MethodBase.GetCurrentMethod().Name}, Error - {ex.Message}", ex);
                        }

                        if (string.IsNullOrEmpty(SCFI.Path))
                        {
                            SCFI.FileType = "";
                        }
                        else if (SCFI.Path.ToUpper().Contains("AGENTS"))
                        {
                            SCFI.FileType = "Agent";
                        }
                        else if (SCFI.Path.ToUpper().Contains("BUSINESSFLOWS"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.BusinessFlow);
                        }
                        else if (SCFI.Path.ToUpper().Contains("DOCUMENTS"))
                        {
                            SCFI.FileType = "Document";
                        }
                        else if (SCFI.Path.ToUpper().Contains("ENVIRONMENTS"))
                        {
                            SCFI.FileType = "Environment";
                        }
                        else if (SCFI.Path.ToUpper().Contains("EXECUTIONRESULTS"))
                        {
                            SCFI.FileType = "Execution Result";
                        }
                        else if (SCFI.Path.ToUpper().Contains("RUNSET"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.RunSet);
                        }
                        else if (SCFI.Path.ToUpper().Contains("ACTIONS"))
                        {
                            SCFI.FileType = "Action";
                        }
                        else if (SCFI.Path.ToUpper().Contains("ACTIVITIESGROUPS"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.ActivitiesGroup);
                        }
                        else if (SCFI.Path.ToUpper().Contains("ACTIVITIES"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.Activity);
                        }
                        else if (SCFI.Path.ToUpper().Contains("VARIABLES"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.Variable);
                        }
                        else if (SCFI.Path.ToUpper().Contains("REPORTTEMPLATE"))
                        {
                            SCFI.FileType = "Report Template";
                        }
                        else if (SCFI.Path.Contains("ApplicationAPIModel"))
                        {
                            SCFI.FileType = "Application API Model";
                        }
                        else if (SCFI.Path.Contains("GlobalAppModelParameter"))
                        {
                            SCFI.FileType = "Global Applications Model Parameter";
                        }
                    });
                });

                CheckInFilesGrid.DataSourceList = mFiles;
            }
            finally
            {
                xProcessingIcon.Visibility = Visibility.Collapsed;
                SourceControlIntegration.BusyInProcessWhileDownloading = false;
            }
        }
Ejemplo n.º 24
0
        public void ApplicationAPIModelVerifySavedFile()
        {
            // Arrange
            ApplicationAPIModel AAMS1 = new ApplicationAPIModel();

            //AAMS1.GroupName = "Group1";
            AAMS1.Name = "Group1_Operation1";
            SR.AddRepositoryItem(AAMS1);

            //Act
            ObservableList <ApplicationAPIModel> AAMBList = SR.GetAllRepositoryItems <ApplicationAPIModel>();
            ApplicationAPIModel AAMS2 = (ApplicationAPIModel)(from x in AAMBList where x.Guid == AAMS1.Guid select x).FirstOrDefault();

            NewRepositorySerializer RS = new NewRepositorySerializer();
            ApplicationAPIModel     ApplicationAPIModelFromDisk = (ApplicationAPIModel)RS.DeserializeFromFile(AAMS1.FilePath);

            //Assert
            Assert.IsTrue(AAMS2 != null, "New API Model found in AllItems");
            Assert.AreEqual(AAMS1, AAMS2, "Same object is retrieved");

            Assert.AreEqual(AAMS1.Name, ApplicationAPIModelFromDisk.Name, "Name saved to file");
            Assert.AreEqual(AAMS1.Guid, ApplicationAPIModelFromDisk.Guid, "Guid saved to file");
            // TODO: can add more validation
        }
Ejemplo n.º 25
0
        private async void Init()
        {
            try
            {
                xProcessingIcon.Visibility = Visibility.Visible;
                if (SourceControlIntegration.BusyInProcessWhileDownloading)
                {
                    Reporter.ToUser(eUserMsgKey.StaticInfoMessage, "Please wait for current process to end.");
                    return;
                }
                SourceControlIntegration.BusyInProcessWhileDownloading = true;

                await Task.Run(() =>
                {
                    mFiles = SourceControlIntegration.GetPathFilesStatus(WorkSpace.Instance.Solution.SourceControl, mPath);
                    //set items name and type
                    Parallel.ForEach(mFiles, SCFI =>
                    {
                        try
                        {
                            if (SCFI.Path.ToUpper().Contains(".GINGER.") && SCFI.Path.ToUpper().Contains(".XML") && SCFI.Status != SourceControlFileInfo.eRepositoryItemStatus.Deleted)
                            {
                                NewRepositorySerializer newRepositorySerializer = new NewRepositorySerializer();
                                //unserialize the item
                                RepositoryItemBase item = newRepositorySerializer.DeserializeFromFile(SCFI.Path);
                                SCFI.Name = item.ItemName;
                            }
                            else
                            {
                                SCFI.Name = SCFI.Path.Substring(SCFI.Path.LastIndexOf('\\') + 1);
                            }
                        }
                        catch (Exception ex)
                        {
                            //TODO: fix the path changes
                            if (SCFI.Path.Contains('\\') && (SCFI.Path.LastIndexOf('\\') + 1 < SCFI.Path.Length - 1))
                            {
                                SCFI.Name = SCFI.Path.Substring(SCFI.Path.LastIndexOf('\\') + 1);
                            }
                            Reporter.ToLog(eLogLevel.ERROR, $"Method - {MethodBase.GetCurrentMethod().Name}, Error - {ex.Message}", ex);
                        }

                        if (string.IsNullOrEmpty(SCFI.Path))
                        {
                            SCFI.FileType = "";
                        }
                        else if (SCFI.Path.ToUpper().Contains("AGENTS"))
                        {
                            SCFI.FileType = "Agent";
                        }
                        else if (SCFI.Path.ToUpper().Contains("BUSINESSFLOWS"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.BusinessFlow);
                        }
                        else if (SCFI.Path.ToUpper().Contains("DOCUMENTS"))
                        {
                            SCFI.FileType = "Document";
                        }
                        else if (SCFI.Path.ToUpper().Contains("ENVIRONMENTS"))
                        {
                            SCFI.FileType = "Environment";
                        }
                        else if (SCFI.Path.ToUpper().Contains("EXECUTIONRESULTS"))
                        {
                            SCFI.FileType = "Execution Result";
                        }
                        else if (SCFI.Path.ToUpper().Contains("RUNSET"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.RunSet);
                        }
                        else if (SCFI.Path.ToUpper().Contains("ACTIONS"))
                        {
                            SCFI.FileType = "Action";
                        }
                        else if (SCFI.Path.ToUpper().Contains("ACTIVITIESGROUPS"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.ActivitiesGroup);
                        }
                        else if (SCFI.Path.ToUpper().Contains("ACTIVITIES"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.Activity);
                        }
                        else if (SCFI.Path.ToUpper().Contains("VARIABLES"))
                        {
                            SCFI.FileType = GingerDicser.GetTermResValue(eTermResKey.Variable);
                        }

                        else if (SCFI.Path.Contains("ApplicationAPIModel"))
                        {
                            SCFI.FileType = "Application API Model";
                        }
                        else if (SCFI.Path.Contains("GlobalAppModelParameter"))
                        {
                            SCFI.FileType = "Global Applications Model Parameter";
                        }
                    });
                });

                CheckInFilesGrid.DataSourceList = mFiles;
            }
            finally
            {
                xProcessingIcon.Visibility = Visibility.Collapsed;
                SourceControlIntegration.BusyInProcessWhileDownloading = false;
            }
        }