예제 #1
0
        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));
        }
예제 #2
0
        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));
        }