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); }
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"); }
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"); }
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); } }
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 }
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"; }
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); }
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()); }
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); }
//[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); }
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"); }
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); }
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); }
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); }
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); } }
//[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); }
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); }
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); }
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); } }
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); }
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); }
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); } }
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; } }
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 }
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; } }