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