/// <summary> /// Adds the update test data. /// </summary> /// <param name="testDataDto">The test data dto.</param> /// <returns> /// Newly added object /// </returns> private IHttpActionResult AddUpdateTestData(TblTestDataDto testDataDto) { var result = new ResultMessage <TblTestDataDto>(); try { testDataDto.ExecutionSequence = testDataDto.ExecutionSequence <= 0 ? 1 : testDataDto.ExecutionSequence; this.testDataService.ResetExecutionSequence(this.UserId, testDataDto.TestId, testDataDto.Id, testDataDto.ExecutionSequence); if (testDataDto.LinkTestType == (int)LinkTestType.SharedTest) { if (testDataDto.Id == 0) { testDataDto.LocatorIdentifierId = null; testDataDto.ActionId = null; } result = this.testDataService.SaveOrUpdateWithSharedTest(this.UserId, testDataDto); } else if (testDataDto.LinkTestType == (int)LinkTestType.ApiTestStep) { result = this.testDataService.SaveOrUpdateWithApiTestData(testDataDto, this.UserId); } else { result = this.testDataService.SaveOrUpdate(testDataDto, this.UserId); } } catch (Exception ex) { this.LoggerService.LogException(ex); result.Messages.Add(new Message(null, ex.Message)); } return(this.CreateCustomResponse(result)); }
public IHttpActionResult UpdateTestData([FromBody] TblTestDataDto testDataDto, long testCaseId, long testDataId) { testDataDto.Id = testDataId; testDataDto.TestId = testCaseId; return(this.AddUpdateTestData(testDataDto)); }
/// <summary> /// Adds the update. /// </summary> /// <param name="testDataDto">The test data dto.</param> /// <returns> /// Newly added object /// </returns> private IHttpActionResult AddUpdate(TblTestDataDto testDataDto) { var result = new ResultMessage <TblTestDataDto>(); try { if (testDataDto.LinkTestType == (int)LinkTestType.SharedTest) { result = this.testDataService.SaveOrUpdateWithSharedTest(this.UserId, testDataDto); } else { result = this.testDataService.SaveOrUpdate(testDataDto, this.UserId); } } catch (Exception ex) { this.LoggerService.LogException(ex); result.Messages.Add(new Message(null, ex.Message)); } return(this.CreateCustomResponse(result)); }
/// <summary> /// process test data to generate testplan /// </summary> /// <param name="testDataDto">the test data object</param> /// <param name="testQueue">the test queue object</param> /// <param name="deepIndex">Index of the deep.</param> public void ProcessTestQueueExecutableData(IEnumerable <TblTestDataDto> testDataDto, TblTestQueueDto testQueue, int deepIndex = 0) { if (testDataDto != null && testDataDto.Any()) { bool breakParentLoop = false; foreach (var item in testDataDto) { if (item.ActionId == ActionConstants.Instance.IgnoreLoadNeUrlActionId && this.testPlan.Any() && this.testPlan.Last().ActionId.Value == ActionConstants.Instance.LoadNewUrlActionId) { this.testPlan.Remove(this.testPlan.Last()); this.ExecutionSequence--; continue; } switch (item.LinkTestType) { case (int)LinkTestType.TestStep: { if (item.ActionId.Value != ActionConstants.Instance.TerminateTestActionId) { item.ExecutionSequence = this.ExecutionSequence++; this.testPlan.Add(item); } else { breakParentLoop = true; } break; } case (int)LinkTestType.ApiTestStep: { long environMentId; if (testQueue.SchedulerId.HasValue) { ResultMessage <TblSchedulerDto> schedulerDto = this.schedulerService.GetById(testQueue.SchedulerId.Value); environMentId = schedulerDto.Item.UrlId; if (environMentId == 0) { environMentId = this.environmentService.GetDefaultEnvironment().Item.Id; } } else { environMentId = testQueue.Settings.UrlId; if (environMentId == 0) { environMentId = this.environmentService.GetDefaultEnvironment().Item.Id; } } ResultMessage <TblApiConnectionDto> apiConnectionDto = this.apiConncetionService.GetByEnvironmentAndCategoryId(environMentId, item.ApiTestData.ApiCategoryId.Value); item.ApiUrl = (item.ApiTestData.ApiUrl.IsBlank() ? apiConnectionDto.Item.BaseUrl : item.ApiTestData.ApiUrl).Trim(); if (item.ApiTestData.EndPoint.IsNotBlank()) { item.ApiUrl += ((item.ApiUrl.EndsWith("\\") || item.ApiUrl.EndsWith("/")) ? string.Empty : "/") + item.ApiTestData.EndPoint; } item.Headers = item.ApiTestData.Headers ?? new List <NameValuePair>(); if (apiConnectionDto.Item.Headers != null) { foreach (var header in apiConnectionDto.Item.Headers) { if (!item.Headers.Any(x => x.Name.EqualsIgnoreCase(header.Name))) { item.Headers.Add(header); } } } item.IgnoreHeaders = item.ApiTestData.IgnoreHeaders; item.RequestType = item.ApiTestData.RequestName; item.RequestBody = item.ApiTestData.RequestBody; item.ExecutionSequence = this.ExecutionSequence++; this.testPlan.Add(item); break; } case (int)LinkTestType.SqlTestStep: { item.ExecutionSequence = this.ExecutionSequence++; this.testPlan.Add(item); break; } case (int)LinkTestType.SharedTest: { var sharedSteps = item.SharedTest.SharedTestDataList.Where(x => !x.IsDeleted).OrderBy(x => x.ExecutionSequence).ToList(); foreach (var sharedStep in sharedSteps) { var lnkSharedTestStep = item.SharedTestSteps.FirstOrDefault(x => x.SharedTestDataId == sharedStep.Id && x.IsDeleted != true); if (lnkSharedTestStep != null) { if (lnkSharedTestStep.NewOrder > 0) { sharedSteps.Where(x => x.ExecutionSequence > lnkSharedTestStep.NewOrder).ToList().ForEach(x => x.ExecutionSequence++); sharedStep.ExecutionSequence = lnkSharedTestStep.NewOrder + 1; } if (!string.IsNullOrEmpty(lnkSharedTestStep.NewValue)) { sharedStep.Value = lnkSharedTestStep.NewValue; } if (!string.IsNullOrEmpty(lnkSharedTestStep.NewVariable)) { sharedStep.VariableName = lnkSharedTestStep.NewVariable; } sharedStep.IsIgnored = lnkSharedTestStep.IsIgnored ?? false; } if (sharedStep.ActionId == ActionConstants.Instance.TerminateTestActionId && !sharedStep.IsIgnored) { breakParentLoop = true; break; } } sharedSteps.RemoveAll(m => m.IsIgnored); int indx = sharedSteps.IndexOf(sharedSteps.FirstOrDefault(m => m.ActionId == ActionConstants.Instance.TerminateTestActionId)); if (indx >= 0) { sharedSteps.RemoveRange(indx, sharedSteps.Count - indx); } var mapper = this.mapperFactory.GetMapper <TblSharedTestDataDto, TblTestDataDto>(); var sharedStepMappedWithTestData = sharedSteps.Select(mapper.Map).OrderBy(x => x.ExecutionSequence).ToList(); long es = this.ExecutionSequence; sharedStepMappedWithTestData.ForEach(x => { x.ExecutionSequence = es++; x.IsStepBelongsToSharedComponent = true; x.Id = item.Id; }); this.ExecutionSequence = es; this.testPlan.AddRange(sharedStepMappedWithTestData); break; } case (int)LinkTestType.SharedWebsiteTest: { var testData = this.table.Find(x => x.TestId == item.SharedStepWebsiteTestId && !x.IsDeleted).OrderBy(x => x.ExecutionSequence).ToList(); var mapper = this.mapperFactory.GetMapper <TblTestData, TblTestDataDto>(); var testDataDtoForSharedWebsiteTest = testData.Select(mapper.Map).OrderBy(x => x.ExecutionSequence).ToList(); var website = this.mapperFactory.GetMapper <TblWebsite, TblWebsiteDto>().Map(testData[0].Test.Website); WebsiteUrl urlData; if (testQueue.SuiteId.HasValue) { var schedular = this.schedulerService.GetById(testQueue.SchedulerId.Value); urlData = website.WebsiteUrlList.FirstOrDefault(m => m.Id == schedular.Item.UrlId) ?? new WebsiteUrl(); } else { urlData = website.WebsiteUrlList.FirstOrDefault(m => m.Id == testQueue.Settings.UrlId) ?? new WebsiteUrl(); } if (!this.testPlan.Any() || (this.testPlan.Last().ActionId.Value != ActionConstants.Instance.IgnoreLoadNeUrlActionId)) { TblTestDataDto dummyStep = new TblTestDataDto { ActionValue = this.actionService.GetById(ActionConstants.Instance.LoadNewUrlActionId).Item.Value, ActionId = ActionConstants.Instance.LoadNewUrlActionId, Value = urlData.Url, LinkTestType = (int)LinkTestType.TestStep }; testDataDtoForSharedWebsiteTest.Insert(0, dummyStep); } if (testDataDtoForSharedWebsiteTest.Any()) { testDataDtoForSharedWebsiteTest.Add(new TblTestDataDto { ActionValue = this.actionService.GetById(ActionConstants.Instance.LoadNewUrlActionId).Item.Value, ActionId = ActionConstants.Instance.LoadNewUrlActionId, Value = "ind#" + deepIndex }); } this.ProcessTestQueueExecutableData(testDataDtoForSharedWebsiteTest, testQueue, deepIndex + 1); break; } } if (breakParentLoop) { break; } } } }
/// <summary> /// process test data to generate testplan /// </summary> /// <param name="testDataDto"> the test data object</param> /// <param name="testQueue"> the test queue object</param> public void ProcessTestQueueExecutableData(IEnumerable <TblTestDataDto> testDataDto, TblTestQueueDto testQueue) { if (testDataDto != null && testDataDto.Any()) { foreach (var item in testDataDto) { switch (item.LinkTestType) { case (int)LinkTestType.TestStep: { item.ExecutionSequence = this.ExecutionSequence++; this.testPlan.Add(item); break; } case (int)LinkTestType.SqlTestStep: { item.ExecutionSequence = this.ExecutionSequence++; this.testPlan.Add(item); break; } case (int)LinkTestType.SharedTest: { var sharedSteps = item.SharedTest.SharedTestDataList.Where(x => !x.IsDeleted).OrderBy(x => x.ExecutionSequence).ToList(); foreach (var sharedStep in sharedSteps) { var lnkSharedTestStep = item.SharedTestSteps.FirstOrDefault(x => x.SharedTestDataId == sharedStep.Id && x.IsDeleted != true); if (lnkSharedTestStep != null) { if (lnkSharedTestStep.NewOrder > 0) { sharedStep.ExecutionSequence = lnkSharedTestStep.NewOrder; } if (!string.IsNullOrEmpty(lnkSharedTestStep.NewValue)) { sharedStep.Value = lnkSharedTestStep.NewValue; } sharedStep.IsIgnored = lnkSharedTestStep.IsIgnored ?? false; } } sharedSteps.RemoveAll(m => m.IsIgnored); var mapper = this.mapperFactory.GetMapper <TblSharedTestDataDto, TblTestDataDto>(); var sharedStepMappedWithTestData = sharedSteps.Select(mapper.Map).OrderBy(x => x.ExecutionSequence).ToList(); long es = this.ExecutionSequence; sharedStepMappedWithTestData.ForEach(x => { x.ExecutionSequence = es++; x.IsStepBelongsToSharedComponent = true; }); this.ExecutionSequence = es; this.testPlan.AddRange(sharedStepMappedWithTestData); break; } case (int)LinkTestType.SharedWebsiteTest: { var testData = this.table.Find(x => x.TestId == item.SharedStepWebsiteTestId && !x.IsDeleted).OrderBy(x => x.ExecutionSequence).ToList(); var mapper = this.mapperFactory.GetMapper <TblTestData, TblTestDataDto>(); var testDataDtoForSharedWebsiteTest = testData.Select(mapper.Map).OrderBy(x => x.ExecutionSequence).ToList(); var website = this.mapperFactory.GetMapper <TblWebsite, TblWebsiteDto>().Map(testData[0].Test.Website); WebsiteUrl urlData = new WebsiteUrl(); if (testQueue.SuiteId.HasValue) { var schedular = this.schedulerService.GetById(testQueue.SchedulerId.Value); urlData = website.WebsiteUrlList.FirstOrDefault(m => m.Id == schedular.Item.UrlId); } else { urlData = website.WebsiteUrlList.FirstOrDefault(m => m.Id == testQueue.Settings.UrlId); } TblTestDataDto dummyStep = new TblTestDataDto { ActionValue = this.actionService.GetById(long.Parse(ConfigurationManager.AppSettings["LoadNewUrlActionId"].ToString())).Item.Value, ActionId = long.Parse(ConfigurationManager.AppSettings["LoadNewUrlActionId"].ToString()), Value = urlData.Url, LinkTestType = (int)LinkTestType.TestStep }; testDataDtoForSharedWebsiteTest.Insert(0, dummyStep); this.ProcessTestQueueExecutableData(testDataDtoForSharedWebsiteTest, testQueue); break; } } } } }
public IHttpActionResult Add([FromBody] TblTestDataDto testDataDto) { return(this.AddUpdateTestData(testDataDto)); }
public IHttpActionResult Update([FromBody] TblTestDataDto testDataDto, long id) { testDataDto.Id = id; return(this.AddUpdate(testDataDto)); }
public IHttpActionResult AddTestData([FromBody] TblTestDataDto testDataDto, long testCaseId) { return(this.AddUpdateTestData(testDataDto)); }