예제 #1
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);
        }
예제 #2
0
        public void Current_ThrowsException_WhenContextNull()
        {
            // Arrange
            var sut = new ExaminationValidationContextProvider();

            // Act
            Func <ExaminationValidationContext> act = () => sut.Current;

            // Assert
            act.Should().Throw <InvalidOperationException>();
        }
        private void SetupExaminationValidationContextProvider(
            Mock <IServiceProvider> serviceProvider,
            Examination expectedExamination)
        {
            var examinationValidationContextProvider = new ExaminationValidationContextProvider();

            examinationValidationContextProvider.Set(new ExaminationValidationContext(expectedExamination));

            serviceProvider
            .Setup(context => context.GetService(typeof(ExaminationValidationContextProvider)))
            .Returns(examinationValidationContextProvider);
        }
예제 #4
0
        public void Set_ThrowsException_WhenContextAlreadySet()
        {
            // Arrange
            var expectedContext = new ExaminationValidationContext(null);
            var sut             = new ExaminationValidationContextProvider();

            sut.Set(expectedContext);

            // Act
            Action act = () => sut.Set(expectedContext);

            // Assert
            act.Should().Throw <InvalidOperationException>();
        }
예제 #5
0
        public void Current_ReturnsContext_WhenNotNull()
        {
            // Arrange
            var expectedContext = new ExaminationValidationContext(null);
            var sut             = new ExaminationValidationContextProvider();

            sut.Set(expectedContext);

            // Act
            var result = sut.Current;

            // Assert
            result.Should().Be(expectedContext);
        }