public LatestTestResultDto Save(LatestTestResultDto latestTestResultDto, TestResultType testResultType, DateTime utcNow) { var dbLatestTestResult = _db.LatestTestResults .SingleOrDefault(t => t.SuiteId == latestTestResultDto.SuiteId && t.TestId == latestTestResultDto.TestId ); var suiteNameChanged = false; if (dbLatestTestResult == null) { dbLatestTestResult = new DbLatestTestResult { SuiteId = latestTestResultDto.SuiteId, TestId = latestTestResultDto.TestId, TestName = latestTestResultDto.TestName, SuiteName = latestTestResultDto.SuiteName } } ; else if (dbLatestTestResult.SuiteName != latestTestResultDto.SuiteName) { dbLatestTestResult.SuiteName = latestTestResultDto.SuiteName; suiteNameChanged = true; } if (testResultType == TestResultType.Pass && dbLatestTestResult.PassingFromDateTime == null) { dbLatestTestResult.TestResultId = latestTestResultDto.TestResultID; dbLatestTestResult.PassingFromDateTime = utcNow; dbLatestTestResult.FailingFromDateTime = null; SaveLatestTestResult(dbLatestTestResult); } else if ((testResultType == TestResultType.Fail || testResultType == TestResultType.Inconclusive) && dbLatestTestResult.FailingFromDateTime == null) { dbLatestTestResult.TestResultId = latestTestResultDto.TestResultID; dbLatestTestResult.FailingFromDateTime = utcNow; dbLatestTestResult.PassingFromDateTime = null; SaveLatestTestResult(dbLatestTestResult); } else if (suiteNameChanged) { SaveLatestTestResult(dbLatestTestResult); } // todo: move to mapping class return(new LatestTestResultDto { LatestTestResultID = dbLatestTestResult.LatestTestResultID, TestResultID = dbLatestTestResult.TestResultId, SuiteId = dbLatestTestResult.SuiteId, TestId = dbLatestTestResult.TestId, TestName = dbLatestTestResult.TestName, SuiteName = dbLatestTestResult.SuiteName, PassingFromDate = dbLatestTestResult.PassingFromDateTime, FailingFromDate = dbLatestTestResult.FailingFromDateTime }); }
public TestFailureDurationDto Save(TestFailureDurationDto testFailureDurationDto, TestResultType testResultType, DateTime utcNow) { var latestDbTestFailedDuration = _db.TestFailureDurations .OrderByDescending(f => f.FailureStartDateTime) .FirstOrDefault(f => f.SuiteId == testFailureDurationDto.SuiteId && f.TestId == testFailureDurationDto.TestId ); if (testResultType == TestResultType.Pass && latestDbTestFailedDuration != null && latestDbTestFailedDuration.FailureStartDateTime != null && latestDbTestFailedDuration.FailureEndDateTime == null) { latestDbTestFailedDuration.TestResultId = testFailureDurationDto.TestResultId; latestDbTestFailedDuration.FailureEndDateTime = utcNow; SaveTestFailedDuration(latestDbTestFailedDuration); return(Map(latestDbTestFailedDuration)); } else if (testResultType == TestResultType.Fail || testResultType == TestResultType.Inconclusive) { if (latestDbTestFailedDuration == null || latestDbTestFailedDuration.FailureEndDateTime != null) { var newDbTestFailedDuration = new DbTestFailureDuration { SuiteId = testFailureDurationDto.SuiteId, TestId = testFailureDurationDto.TestId, TestResultId = testFailureDurationDto.TestResultId, FailureStartDateTime = utcNow }; SaveTestFailedDuration(newDbTestFailedDuration); return(Map(newDbTestFailedDuration)); } } return(null); }