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)); }
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()); }