public void CreatesNewWhenTestIdDoesNotMatch() { var utcNow = DateTime.UtcNow; var mockLatestTestResults = new List<DbLatestTestResult> { new DbLatestTestResult { LatestTestResultID = 5, SuiteId = 2, TestId = 7 } }.ToDbSetMock(); var mockContext = new Mock<ZigNetEntities>(); mockContext.Setup(m => m.LatestTestResults).Returns(mockLatestTestResults.Object); var mockZignetEntitiesWrapper = new Mock<IDbContext>(); mockZignetEntitiesWrapper.Setup(z => z.Get()).Returns(mockContext.Object); var latestTestResultDto = new LatestTestResultDto { TestResultID = 4, SuiteId = 2, TestId = 1, TestName = "existing test", SuiteName = "suite-name" }; var latestTestResultsService = new LatestTestResultService(mockZignetEntitiesWrapper.Object); var savedLatestTestResultDto = latestTestResultsService.Save(latestTestResultDto, TestResultType.Fail, utcNow); Assert.AreEqual(2, savedLatestTestResultDto.SuiteId); Assert.AreEqual(1, savedLatestTestResultDto.TestId); Assert.AreEqual("existing test", savedLatestTestResultDto.TestName); Assert.AreEqual("suite-name", savedLatestTestResultDto.SuiteName); Assert.AreEqual(4, savedLatestTestResultDto.TestResultID); Assert.AreEqual(utcNow, savedLatestTestResultDto.FailingFromDate); Assert.AreEqual(null, savedLatestTestResultDto.PassingFromDate); Assert.AreEqual(0, savedLatestTestResultDto.LatestTestResultID); }
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 }); }