예제 #1
0
        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();
        }
예제 #2
0
        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();
        }