Example #1
0
        public void WhenPersonIsFoundWithCaseStatusesReturnsCaseStatusesList()
        {
            var response = new List <DomainCaseStatus> {
                _caseStatus.ToDomain()
            };

            _mockCaseStatusGateway.Setup(x => x.GetActiveCaseStatusesByPersonId(It.IsAny <long>())).Returns(response);

            var result = _caseStatusesUseCase.ExecuteGet(_request);

            result.Count.Should().Be(1);
        }
        public void WhenTypeIsLACAndRequestedEndDateIsOnActiveCaseStatusAnswerStartDateItCallsTheGateway()
        {
            _caseStatus = TestHelpers.CreateCaseStatus(resident: _resident, startDate: new DateTime(2021, 11, 3), type: "LAC");
            _updateCaseStatusRequest = TestHelpers.CreateUpdateCaseStatusRequest(caseStatusId: _caseStatus.Id, email: _worker.Email, endDate: new DateTime(2021, 11, 3), min: 1, max: 1);

            _mockCaseStatusGateway
            .Setup(x => x.GetCasesStatusByCaseStatusId(_caseStatus.Id))
            .Returns(_caseStatus.ToDomain());
            _mockCaseStatusGateway.Setup(x => x.UpdateCaseStatus(_updateCaseStatusRequest)).Returns(new DomainCaseStatus());

            _caseStatusesUseCase.ExecuteUpdate(_updateCaseStatusRequest);

            _mockCaseStatusGateway.Verify(x => x.UpdateCaseStatus(_updateCaseStatusRequest));
        }
Example #3
0
        public void WhenTypeIsCINAndRequestedEndDateIsBeforeCaseStatusStartDateInvalidEndDateExceptionThrown()
        {
            _caseStatus = TestHelpers.CreateCaseStatus(resident: _resident, startDate: new DateTime(2021, 11, 3), type: "CIN");
            _updateCaseStatusRequest = TestHelpers.CreateUpdateCaseStatusRequest(caseStatusId: _caseStatus.Id, email: _worker.Email, endDate: new DateTime(2021, 11, 1));

            _mockCaseStatusGateway
            .Setup(x => x.GetCasesStatusByCaseStatusId(_caseStatus.Id))
            .Returns(_caseStatus.ToDomain());

            Action act = () => _caseStatusesUseCase.ExecuteUpdate(_updateCaseStatusRequest);

            act.Should().Throw <InvalidEndDateException>()
            .WithMessage($"requested end date of {_updateCaseStatusRequest.EndDate?.ToString("O")} " +
                         $"is before the start date of {_caseStatus.StartDate:O}");
        }
        public void WhenTypeIsLACAndProvidedEndIsBeforeTheCurrentlyActiveAnswersStartDateItThrowsInvalidEndDateException()
        {
            _caseStatus         = TestHelpers.CreateCaseStatus(resident: _resident, startDate: DateTime.Now.AddDays(1), type: "LAC");
            _caseStatus.Answers = new List <CaseStatusAnswer>();
            _caseStatus.Answers.AddRange(TestHelpers.CreateCaseStatusAnswers(min: 2, max: 2, startDate: new DateTime(2021, 11, 3)));

            _updateCaseStatusRequest = TestHelpers.CreateUpdateCaseStatusRequest(caseStatusId: _caseStatus.Id, email: _worker.Email, endDate: new DateTime(2021, 11, 1), min: 1, max: 1);

            _mockCaseStatusGateway
            .Setup(x => x.GetCasesStatusByCaseStatusId(_caseStatus.Id))
            .Returns(_caseStatus.ToDomain());

            _mockCaseStatusGateway.Setup(x => x.UpdateCaseStatus(It.IsAny <UpdateCaseStatusRequest>())).Returns(new DomainCaseStatus());

            Action act = () => _caseStatusesUseCase.ExecuteUpdate(_updateCaseStatusRequest);

            act.Should().Throw <InvalidEndDateException>()
            .WithMessage("requested end date is before the start date of the currently active answer");
        }
        public void SetUp()
        {
            _mockCaseStatusGateway = new Mock <ICaseStatusGateway>();
            _mockDatabaseGateway   = new Mock <IDatabaseGateway>();
            _caseStatusesUseCase   = new CaseStatusesUseCase(_mockCaseStatusGateway.Object, _mockDatabaseGateway.Object);

            _resident   = TestHelpers.CreatePerson(ageContext: "C");
            _worker     = TestHelpers.CreateWorker();
            _caseStatus = TestHelpers.CreateCaseStatus(resident: _resident);
            _updateCaseStatusRequest = TestHelpers.CreateUpdateCaseStatusRequest(caseStatusId: _caseStatus.Id, email: _worker.Email);
            _updatedCaseStatus       = TestHelpers.CreateCaseStatus(_resident.Id, _caseStatus.Notes,
                                                                    _caseStatus.StartDate, _updateCaseStatusRequest.EndDate, resident: _resident);

            _mockCaseStatusGateway
            .Setup(x => x.GetCasesStatusByCaseStatusId(_caseStatus.Id))
            .Returns(_caseStatus.ToDomain());

            _mockCaseStatusGateway
            .Setup(x => x.UpdateCaseStatus(_updateCaseStatusRequest))
            .Returns(_updatedCaseStatus.ToDomain());

            _mockDatabaseGateway.Setup(x => x.GetPersonByMosaicId(_resident.Id)).Returns(_resident);
            _mockDatabaseGateway.Setup(x => x.GetWorkerByEmail(_worker.Email)).Returns(_worker);
        }
        public void WhenTypeIsLACStartDateIsBeforeTheCurrentAnswersStartDateItThrowsAnInvalidCaseStatusAnswersStartDateException()
        {
            var caseStatusAnswers = TestHelpers.CreateCaseStatusAnswers(caseStatusId: _lacCaseStatus.Id, groupId: _answerGroupId1, startDate: DateTime.Today.AddDays(-10), min: 2, max: 2);

            _lacCaseStatus.Answers.AddRange(caseStatusAnswers);

            _request.StartDate = DateTime.Today.AddDays(-20);

            _mockCaseStatusGateway.Setup(x => x.GetCasesStatusByCaseStatusId(It.IsAny <long>())).Returns(_lacCaseStatus.ToDomain());
            _mockDatabaseGateway.Setup(x => x.GetWorkerByEmail(_request.CreatedBy)).Returns(_worker);

            _mockCaseStatusGateway.Setup(x => x.CreateCaseStatusAnswer(_request)).Returns(_lacCaseStatusDomain);

            Action act = () => _caseStatusesUseCase.ExecutePostCaseStatusAnswer(_request);

            act.Should().Throw <InvalidCaseStatusAnswersStartDateException>().WithMessage($"Start date cannot be before the current active date for LAC");
        }
        public void WhenTypeIsLACandEndDateIsNotProvidedAndStartDateIsIntheFutureItThrowsInvalidStartDateException()
        {
            _updateCaseStatusRequest.StartDate = DateTime.Now.AddDays(1);
            _updateCaseStatusRequest.EndDate   = null;
            _caseStatus.Type = "LAC";

            _mockCaseStatusGateway.Setup(x => x.GetCasesStatusByCaseStatusId(_caseStatus.Id)).Returns(_caseStatus.ToDomain());

            Action act = () => _caseStatusesUseCase.ExecuteUpdate(_updateCaseStatusRequest);

            act.Should().Throw <InvalidStartDateException>()
            .WithMessage("Invalid start date. It cannot be in the future.");
        }
        public void WhenTypeIsLACandTheProvidedEndDateIsValidAndThereAreScheduledAnswersItCallsTheGateway()
        {
            var activeAnswers    = TestHelpers.CreateCaseStatusAnswers(min: 2, max: 2, startDate: new DateTime(2000, 01, 11), endDate: new DateTime(2040, 02, 01));
            var scheduledAnswers = TestHelpers.CreateCaseStatusAnswers(min: 2, max: 2, startDate: new DateTime(2040, 02, 01));

            _caseStatus         = TestHelpers.CreateCaseStatus(resident: _resident, startDate: new DateTime(2000, 01, 11), type: "LAC");
            _caseStatus.Answers = new List <CaseStatusAnswer>();
            _caseStatus.Answers.AddRange(activeAnswers);
            _caseStatus.Answers.AddRange(scheduledAnswers);

            _updateCaseStatusRequest = TestHelpers.CreateUpdateCaseStatusRequest(caseStatusId: _caseStatus.Id, email: _worker.Email, endDate: new DateTime(2000, 01, 11), min: 1, max: 1);

            _mockCaseStatusGateway.Setup(x => x.GetCasesStatusByCaseStatusId(_caseStatus.Id)).Returns(_caseStatus.ToDomain());
            _mockCaseStatusGateway.Setup(x => x.UpdateCaseStatus(It.IsAny <UpdateCaseStatusRequest>())).Returns(new DomainCaseStatus());

            _caseStatusesUseCase.ExecuteUpdate(_updateCaseStatusRequest);

            _mockCaseStatusGateway.Verify(x => x.UpdateCaseStatus(_updateCaseStatusRequest));
        }
        public void TestUpdatingACaseStatusReturnsUpdatedCaseStatusResponse()
        {
            var response = _caseStatusesUseCase.ExecuteUpdate(_updateCaseStatusRequest);

            response.Should().BeEquivalentTo(_updatedCaseStatus.ToDomain().ToResponse());
        }