public async void AddTreatmentSession_ValidInputViolatingBusinessRules_ShouldReturnErrorResult() { // Arrange var input = new TreatmentSessionInput() { TreatmentReferenceId = Treatments.First().ReferenceId, PatientReferenceId = Patient.ReferenceId, DentalTeamReferenceId = DentalTeam.ReferenceId, Start = DateTimeOffset.UtcNow, Status = "Requested" }; input = input with { End = input.Start.Value.AddHours(1) }; // Act await Sut.Send(input, default); var result = await Sut.Send(input, default); // Assert var allValidationMessages = ServiceProvider.GetRequiredService <IStringLocalizer <TreatmentSessionBusinessValidator> >() .GetAllStrings() .Select(ls => ls.Value); var allUniqueValidationMessages = new HashSet <string>(allValidationMessages); result.Errors .Cast <IValidationError>() .SelectMany(ve => ve.Errors) .Should() .OnlyContain(errMsg => allUniqueValidationMessages.Contains(errMsg)); }
public async void AddTreatmentSession_ValidInput_ShouldReturnSuccessfullMessage() { // Arrange var input = new TreatmentSessionInput() { TreatmentReferenceId = Treatments.First().ReferenceId, PatientReferenceId = Patient.ReferenceId, DentalTeamReferenceId = DentalTeam.ReferenceId, Start = DateTimeOffset.UtcNow, Status = "Requested" }; input = input with { End = input.Start.Value.AddHours(1) }; // Act var result = await Sut.Send(input, default); var messageOutput = result.Value; // Assert messageOutput.Message.Should().BeEquivalentTo("Treatment Session successfully created."); }
public UpdateTreatmentSessionCommandIntegrationTests() : base(new ServiceCollection()) { Sut = ServiceProvider.GetRequiredService <IMediator>(); Patient = CreatePatientUser(); DentalTeam = ServiceProvider.GetRequiredService <IReadRepository <DentalTeam> >() .AsNoTracking() .SingleOrDefault(dt => dt.Name == "DentalTeam 01"); var start = DateTimeOffset.Now; TreatmentSession = CreateTreatmentSession( patientId: Patient.Id, dentalTeamId: DentalTeam.Id, treatmentId: Treatments.First().Id, start: start, end: start.AddHours(1), status: TreatmentSessionStatus.Requested ); }
public async void UpdateTreatmentSession_ValidInputViolatingOverlappingBusinessRules_ShouldReturnErrorResult() { // Arrange var input = new UpdateTreatmentSessionInput() { ReferenceId = TreatmentSession.ReferenceId, TreatmentReferenceId = TreatmentSession.Treatment.ReferenceId, PatientReferenceId = TreatmentSession.Patient.ReferenceId, DentalTeamReferenceId = TreatmentSession.DentalTeam.ReferenceId, Start = TreatmentSession.Start.AddHours(1), End = TreatmentSession.End.AddHours(1), Status = TreatmentSession.Status.ToString() }; var overlappingTreatmentSession = CreateTreatmentSession( patientId: Patient.Id, dentalTeamId: DentalTeam.Id, treatmentId: Treatments.First().Id, start: input.Start.Value, end: input.End.Value, status: TreatmentSessionStatus.Requested ); // Act var result = await Sut.Send(input, default); // Assert var allValidationMessages = ServiceProvider.GetRequiredService <IStringLocalizer <TreatmentSessionBusinessValidator> >() .GetAllStrings() .Select(ls => ls.Value); var allUniqueValidationMessages = new HashSet <string>(allValidationMessages); result.Errors .Cast <IValidationError>() .SelectMany(ve => ve.Errors) .Should() .OnlyContain(errMsg => allUniqueValidationMessages.Contains(errMsg)); }