public void UpdatesTheEndDateOnActiveAnswersAndReplacesCurrentScheduledCaseStatusAnswers() { var personId = 123; var groupId = Guid.NewGuid().ToString(); var caseStatus = TestHelpers.CreateCaseStatus(type: "LAC", personId: personId); var currentScheduledAnswers = TestHelpers.CreateCaseStatusAnswers(caseStatusId: caseStatus.Id, startDate: DateTime.Today.AddDays(10).Date, min: 2, max: 2, groupId: groupId); caseStatus.Answers.AddRange(currentScheduledAnswers); DatabaseContext.CaseStatuses.Add(caseStatus); DatabaseContext.SaveChanges(); var requestAnswer1 = new CaseStatusRequestAnswers() { Option = "placementType", Value = "P1" }; var requestAnswer2 = new CaseStatusRequestAnswers() { Option = "legalStatus", Value = "L1" }; var requestAnswers = new List <CaseStatusRequestAnswers>() { requestAnswer1, requestAnswer2 }; var request = CaseStatusHelper.CreateCaseStatusAnswerRequest(caseStatusId: caseStatus.Id, answers: requestAnswers, startDate: DateTime.Today.AddDays(20)); _caseStatusGateway.ReplaceCaseStatusAnswers(request); var caseStatusAnswers = DatabaseContext.CaseStatuses.Include(x => x.Answers).FirstOrDefault().Answers; caseStatusAnswers.Count.Should().Be(4); var discardedScheduledAnswers = caseStatusAnswers.Where(x => x.GroupId == groupId); discardedScheduledAnswers.All(x => x.DiscardedAt != null).Should().BeTrue(); discardedScheduledAnswers.All(x => x.EndDate == null).Should().BeTrue(); discardedScheduledAnswers.All(x => x.LastModifiedBy == request.CreatedBy).Should().BeTrue(); var newScheduledAnswers = caseStatusAnswers.Where(x => x.GroupId != groupId); newScheduledAnswers.All(x => x.StartDate == request.StartDate).Should().BeTrue(); newScheduledAnswers.Any(x => x.Option == requestAnswer1.Option && x.Value == requestAnswer1.Value).Should().BeTrue(); newScheduledAnswers.Any(x => x.Option == requestAnswer2.Option && x.Value == requestAnswer2.Value).Should().BeTrue(); }
public void UpdatesTheEndDateOnActiveAnswersAndAddsNewAnswers() { var personId = 123; var groupId = Guid.NewGuid().ToString(); var caseStatus = TestHelpers.CreateCaseStatus(type: "LAC", personId: personId); var currentActiveAnswers = TestHelpers.CreateCaseStatusAnswers(caseStatusId: caseStatus.Id, startDate: DateTime.Today.AddDays(-10), min: 2, max: 2, groupId: groupId); caseStatus.Answers.AddRange(currentActiveAnswers); DatabaseContext.CaseStatuses.Add(caseStatus); DatabaseContext.SaveChanges(); var requestAnswer1 = new CaseStatusRequestAnswers() { Option = "placementType", Value = "P1" }; var requestAnswer2 = new CaseStatusRequestAnswers() { Option = "legalStatus", Value = "L1" }; var requestAnswers = new List <CaseStatusRequestAnswers>() { requestAnswer1, requestAnswer2 }; var request = CaseStatusHelper.CreateCaseStatusAnswerRequest(caseStatusId: caseStatus.Id, answers: requestAnswers, startDate: DateTime.Today.AddDays(-2)); _caseStatusGateway.ReplaceCaseStatusAnswers(request); var caseStatusAnswers = DatabaseContext.CaseStatuses.FirstOrDefault().Answers; caseStatusAnswers.Count.Should().Be(5); var previousActiveAnswers = caseStatusAnswers.Where(x => x.GroupId == groupId && x.Option != CaseStatusAnswerOption.EpisodeReason); previousActiveAnswers.All(x => x.EndDate != null).Should().BeTrue(); previousActiveAnswers.All(x => x.EndDate == request.StartDate); previousActiveAnswers.All(x => x.DiscardedAt == null).Should().BeTrue(); previousActiveAnswers.All(x => x.LastModifiedBy == request.CreatedBy).Should().BeTrue(); var newActiveAnswers = caseStatusAnswers.Where(x => x.GroupId != groupId); newActiveAnswers.All(x => x.EndDate == null).Should().BeTrue(); newActiveAnswers.All(x => x.StartDate == request.StartDate).Should().BeTrue(); newActiveAnswers.All(x => x.DiscardedAt == null).Should().BeTrue(); }
public void CreatesACaseStatusWithAnswers() { var person = TestHelpers.CreatePerson(); DatabaseContext.Persons.Add(person); DatabaseContext.SaveChanges(); var answersOne = new CaseStatusRequestAnswers() { Option = _faker.Random.String2(10), Value = _faker.Random.String2(2) }; var answersTwo = new CaseStatusRequestAnswers() { Option = _faker.Random.String2(10), Value = _faker.Random.String2(2) }; var requestAnswers = new List <CaseStatusRequestAnswers>() { answersOne, answersTwo }; var request = CaseStatusHelper.CreateCaseStatusRequest(personId: person.Id, answers: requestAnswers); _caseStatusGateway.CreateCaseStatus(request); var caseStatus = DatabaseContext.CaseStatuses.Include(x => x.Answers).FirstOrDefault(); caseStatus.Answers.Count.Should().Be(2); caseStatus.Answers.Any(a => a.Option == answersOne.Option).Should().Be(true); caseStatus.Answers.Any(a => a.Option == answersTwo.Option).Should().Be(true); caseStatus.Answers.Any(a => a.Value == answersOne.Value).Should().Be(true); caseStatus.Answers.Any(a => a.Value == answersTwo.Value).Should().Be(true); caseStatus.Answers[0].GroupId.Should().NotBe(null); caseStatus.Answers[1].GroupId.Should().NotBe(null); caseStatus.Answers[1].GroupId.Should().Equals(caseStatus.Answers[0].GroupId); caseStatus.Notes.Should().Be(request.Notes); caseStatus.PersonId.Should().Be(person.Id); caseStatus.Type.Should().Be(request.Type); caseStatus.StartDate.Should().Be(request.StartDate); caseStatus.EndDate.Should().BeNull(); caseStatus.Answers.All(x => x.CreatedBy == request.CreatedBy).Should().BeTrue(); }