Exemple #1
0
        public async void BindModelAsync_ThrowsInvalidOperationException_WhenExaminationRetrievalServiceNotRegistered()
        {
            // Arrange
            var expectedModelBinder   = new Mock <IModelBinder>();
            var expectedParameterName = "expectedParameterName";
            var sut           = new ExaminationValidationModelBinder(expectedModelBinder.Object);
            var context       = new Mock <ModelBindingContext>(MockBehavior.Strict);
            var expectedModel = new PutMedicalTeamRequest();
            var modelMetadata = MockDefaultModelMetadata();

            context
            .Setup(c => c.HttpContext.RequestServices.GetService(
                       typeof(IAsyncQueryHandler <ExaminationRetrievalQuery, MedicalExaminer.Models.Examination>)))
            .Returns(null);

            expectedModelBinder
            .Setup(emb => emb.BindModelAsync(It.IsAny <ModelBindingContext>()))
            .Returns((ModelBindingContext mbc) => Task.CompletedTask);

            context
            .SetupGet(c => c.ModelMetadata)
            .Returns(modelMetadata);
            context
            .Setup(c => c.ValueProvider.GetValue(expectedParameterName))
            .Returns(new ValueProviderResult(new[] { "1" }));

            context.SetupGet(c => c.Result).Returns(ModelBindingResult.Success(expectedModel));

            // Act
            Func <Task> act = async() => await sut.BindModelAsync(context.Object);

            // Assert
            act.Should().Throw <InvalidOperationException>();
        }
Exemple #2
0
        public async void BindModelAsync_SetsExaminationOnContextProvider()
        {
            // Arrange
            var expectedModelBinder   = new Mock <IModelBinder>(MockBehavior.Strict);
            var expectedParameterName = "expectedParameterName";

            var modelMetadata       = MockDefaultModelMetadata();
            var sut                 = new ExaminationValidationModelBinder(expectedModelBinder.Object);
            var context             = new Mock <ModelBindingContext>(MockBehavior.Strict);
            var expectedModel       = new PutMedicalTeamRequest();
            var expectedExamination = new Examination();

            var examinationRetrievalServiceMock =
                new Mock <IAsyncQueryHandler <ExaminationRetrievalQuery, MedicalExaminer.Models.Examination> >(MockBehavior.Strict);

            examinationRetrievalServiceMock
            .Setup(ers => ers.Handle(It.IsAny <ExaminationRetrievalQuery>()))
            .Returns(Task.FromResult(expectedExamination));

            context
            .Setup(c => c.HttpContext.RequestServices.GetService(
                       typeof(IAsyncQueryHandler <ExaminationRetrievalQuery, MedicalExaminer.Models.Examination>)))
            .Returns(examinationRetrievalServiceMock.Object);

            var examinationValidationContextFactory = new ExaminationValidationContextFactory();

            context
            .Setup(c => c.HttpContext.RequestServices.GetService(
                       typeof(ExaminationValidationContextFactory)))
            .Returns(examinationValidationContextFactory);

            var examinationValidationContextProvider = new ExaminationValidationContextProvider();

            context
            .Setup(c => c.HttpContext.RequestServices.GetService(
                       typeof(ExaminationValidationContextProvider)))
            .Returns(examinationValidationContextProvider);

            expectedModelBinder
            .Setup(emb => emb.BindModelAsync(It.IsAny <ModelBindingContext>()))
            .Returns((ModelBindingContext mbc) => Task.CompletedTask);

            context
            .SetupGet(c => c.ModelMetadata)
            .Returns(modelMetadata);

            context
            .Setup(c => c.ValueProvider.GetValue(expectedParameterName))
            .Returns(new ValueProviderResult(new[] { "1" }));

            context.SetupGet(c => c.Result).Returns(ModelBindingResult.Success(expectedModel));

            // Act
            await sut.BindModelAsync(context.Object);

            // Assert
            examinationValidationContextProvider.Current.Examination.Should().Be(expectedExamination);
        }
Exemple #3
0
        public void BindModelAsync_ThrowsException_WhenOriginalModelBinderIsNull()
        {
            // Arrange
            const IModelBinder expectedModelBinder = null;
            var sut     = new ExaminationValidationModelBinder(expectedModelBinder);
            var context = new Mock <ModelBindingContext>();

            // Act
            Func <Task> act = async() => await sut.BindModelAsync(context.Object);

            // Assert
            act.Should().Throw <InvalidOperationException>();
        }
Exemple #4
0
        public async void BindModelAsync_Completes_WhenOriginalBinderFails()
        {
            // Arrange
            var expectedModelBinder = new Mock <IModelBinder>();

            var sut     = new ExaminationValidationModelBinder(expectedModelBinder.Object);
            var context = new Mock <ModelBindingContext>();

            expectedModelBinder
            .Setup(emb => emb.BindModelAsync(It.IsAny <ModelBindingContext>()))
            .Returns((ModelBindingContext mbc) => Task.CompletedTask);

            // Act
            await sut.BindModelAsync(context.Object);

            // Assert, no exceptions thrown.
        }