public void WhenTypeIsCINAndValidEndDateIsProvidedItUpdatesTheStatusWithNewEndDateWithoutSettingEndDateOrDiscardedAtForAnswers() { var request = TestHelpers.CreateUpdateCaseStatusRequest(); var(caseStatus, _, _) = CaseStatusHelper.SavePersonWithCaseStatusToDatabase(DatabaseContext); var answer = TestHelpers.CreateCaseStatusAnswers(min: 1, max: 1).FirstOrDefault(); caseStatus.Answers = new List <CaseStatusAnswer>() { answer }; caseStatus.Type = "CIN"; caseStatus.EndDate = null; DatabaseContext.SaveChanges(); request.CaseStatusId = caseStatus.Id; _caseStatusGateway.UpdateCaseStatus(request); var updatedCaseStatus = DatabaseContext.CaseStatuses.FirstOrDefault(x => x.Id == caseStatus.Id); updatedCaseStatus.EndDate.Should().NotBeNull(); updatedCaseStatus.LastModifiedBy.Should().Be(request.EditedBy); updatedCaseStatus.Answers.Count.Should().Be(1); updatedCaseStatus.Answers.First().EndDate.Should().BeNull(); updatedCaseStatus.Answers.First().DiscardedAt.Should().BeNull(); }
public void WhenACaseStatusIsNotFoundItThrowsAnException() { var request = TestHelpers.CreateUpdateCaseStatusRequest(); request.CaseStatusId = 1L; Action act = () => _caseStatusGateway.UpdateCaseStatus(request); act.Should().Throw <CaseStatusDoesNotExistException>() .WithMessage($"Case status with {request.CaseStatusId} not found"); }
public void WhenTypeIsCPAndValidEndDateIsProvidedItUpdatesTheStatusAndTheCurrentActiveAnswersWithEndDate() { var request = TestHelpers.CreateUpdateCaseStatusRequest(min: 1, max: 1); var activeGroupId = Guid.NewGuid().ToString(); var(caseStatus, _, _) = CaseStatusHelper.SavePersonWithCaseStatusToDatabase(DatabaseContext); var createdAt = DateTime.Today.AddDays(-10); var answers = TestHelpers.CreateCaseStatusAnswers(min: 1, max: 1, endDate: null, discardedAt: null, groupId: activeGroupId, startDate: DateTime.Today.AddDays(-10)); caseStatus.Answers = answers; caseStatus.Type = "CP"; caseStatus.EndDate = null; caseStatus.StartDate = DateTime.Today.AddDays(-10); DatabaseContext.SaveChanges(); foreach (var a in caseStatus.Answers) { a.CreatedAt = createdAt; } DatabaseContext.SaveChanges(); request.CaseStatusId = caseStatus.Id; _caseStatusGateway.UpdateCaseStatus(request); var updatedCaseStatus = DatabaseContext.CaseStatuses.FirstOrDefault(x => x.Id == caseStatus.Id); updatedCaseStatus.EndDate.Should().NotBeNull(); updatedCaseStatus.LastModifiedBy.Should().Be(request.EditedBy); updatedCaseStatus.Answers.Count.Should().Be(2); updatedCaseStatus.Answers.All(x => x.EndDate != null).Should().BeTrue(); updatedCaseStatus.Answers.All(x => x.DiscardedAt == null).Should().BeTrue(); var activeAnswers = updatedCaseStatus.Answers.Where(x => x.GroupId == activeGroupId && x.CreatedAt == createdAt); activeAnswers.All(x => x.LastModifiedBy == request.EditedBy).Should().BeTrue(); }