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