private T SetEventUserStatuses <T>(T theEvent, MeUser user)
     where T : IEvent
 {
     theEvent.UserId       = user.UserId;
     theEvent.UserFullName = user.FullName();
     theEvent.GmcNumber    = user.GmcNumber;
     theEvent.UsersRole    = user.UsersRoleIn(new[] { UserRoles.MedicalExaminer, UserRoles.MedicalExaminerOfficer }).ToString();
     return(theEvent);
 }
Example #2
0
        public void Close_Case_When_Outstanding_Case_Items_Completed_Marks_Examination_Completed_And_Returns_ExaminationID()
        {
            // Arrange
            var examinationId = Guid.NewGuid().ToString();
            var caseOutcome   = new MedicalExaminer.Models.CaseOutcome
            {
                CaseMedicalExaminerFullName       = "ME Full Name",
                ScrutinyConfirmedOn               = new DateTime(2019, 6, 20),
                OutcomeQapDiscussion              = QapDiscussionOutcome.MccdCauseOfDeathProvidedByQAP,
                OutcomeOfPrescrutiny              = OverallOutcomeOfPreScrutiny.IssueAnMccd,
                OutcomeOfRepresentativeDiscussion = BereavedDiscussionOutcome.CauseOfDeathAccepted,
                CaseCompleted       = false,
                CaseOutcomeSummary  = CaseOutcomeSummary.IssueMCCD,
                MccdIssued          = true,
                CremationFormStatus = CremationFormStatus.Yes,
                GpNotifiedStatus    = GPNotified.GPNotified,
                CoronerReferralSent = false
            };
            var examination = new MedicalExaminer.Models.Examination
            {
                ExaminationId                 = examinationId,
                ScrutinyConfirmed             = false,
                OutstandingCaseItemsCompleted = true,
                CaseOutcome = caseOutcome
            };
            var user = new MeUser
            {
                UserId    = "UserId",
                FirstName = "FirstName",
                LastName  = "LastName",
                GmcNumber = "GmcNumber"
            };
            var connectionSettings = new Mock <IExaminationConnectionSettings>();
            var query    = new CloseCaseQuery(examinationId, user);
            var dbAccess = new Mock <IDatabaseAccess>();

            dbAccess.Setup(db => db.GetItemByIdAsync <MedicalExaminer.Models.Examination>(
                               connectionSettings.Object,
                               It.IsAny <string>()))
            .Returns(Task.FromResult(examination)).Verifiable();

            dbAccess.Setup(db => db.UpdateItemAsync(
                               connectionSettings.Object,
                               It.IsAny <MedicalExaminer.Models.Examination>())).Returns(Task.FromResult(examination)).Verifiable();

            var sut = new CloseCaseService(dbAccess.Object, connectionSettings.Object, _urgencySettingsMock.Object);

            // Act
            var result = sut.Handle(query);

            // Assert
            Assert.NotNull(result.Result);
            Assert.True(examination.CaseCompleted);
            Assert.Equal(examinationId, result.Result);
            Assert.NotNull(examination.DateCaseClosed);
            Assert.Equal(DateTime.Now.Date, examination.DateCaseClosed.Value.Date);
            Assert.NotNull(examination.CaseBreakdown.CaseClosedEvent);
            Assert.Equal(user.FullName(), examination.CaseBreakdown.CaseClosedEvent.UserFullName);
            Assert.Equal(user.UserId, examination.CaseBreakdown.CaseClosedEvent.UserId);
            Assert.Equal(user.GmcNumber, examination.CaseBreakdown.CaseClosedEvent.GmcNumber);
        }