public void OnProvidersExecuting_DoesNotAddFilter_IfTypeHasNoTempDataProperties() { // Arrange var type = typeof(TestPageModel_NoTempDataProperties); var options = Options.Create(new MvcViewOptions()); var provider = new TempDataFilterPageApplicationModelProvider(options); var context = CreateProviderContext(type); // Act provider.OnProvidersExecuting(context); // Assert Assert.Empty(context.PageApplicationModel.Filters); }
public void OnProvidersExecuting_ValidatesTempDataProperties() { // Arrange var type = typeof(TestPageModel_PrivateSet); var expected = $"The '{type.FullName}.Test' property with TempDataAttribute is invalid. A property using TempDataAttribute must have a public getter and setter."; var options = Options.Create(new MvcViewOptions()); var provider = new TempDataFilterPageApplicationModelProvider(options); var context = CreateProviderContext(type); // Act & Assert var ex = Assert.Throws <InvalidOperationException>(() => provider.OnProvidersExecuting(context)); Assert.Equal(expected, ex.Message); }
public void AddsTempDataPropertyFilter_ForTempDataAttributeProperties() { // Arrange var type = typeof(TestPageModel_OneTempDataProperty); var options = Options.Create(new MvcViewOptions()); var provider = new TempDataFilterPageApplicationModelProvider(options); var context = CreateProviderContext(type); // Act provider.OnProvidersExecuting(context); // Assert var filter = Assert.Single(context.PageApplicationModel.Filters); Assert.IsType <PageSaveTempDataPropertyFilterFactory>(filter); }
public void InitializeFilterFactory_WithExpectedPropertyHelpers_ForTempDataAttributeProperties() { // Arrange var type = typeof(TestPageModel_OneTempDataProperty); var options = Options.Create(new MvcViewOptions()); var provider = new TempDataFilterPageApplicationModelProvider(options); var context = CreateProviderContext(type); // Act provider.OnProvidersExecuting(context); // Assert var filter = Assert.IsType <PageSaveTempDataPropertyFilterFactory>(Assert.Single(context.PageApplicationModel.Filters)); Assert.Collection( filter.Properties, property => { Assert.Equal("TempDataProperty-Test2", property.Key); Assert.Equal(type.GetProperty(nameof(TestPageModel_OneTempDataProperty.Test2)), property.PropertyInfo); }); }
public void OnProvidersExecuting_AddsFiltersToModel() { // Arrange var actionDescriptor = new PageActionDescriptor(); var applicationModel = new PageApplicationModel( actionDescriptor, typeof(object).GetTypeInfo(), new object[0]); var applicationModelProvider = new TempDataFilterPageApplicationModelProvider(); var context = new PageApplicationModelProviderContext(new PageActionDescriptor(), typeof(object).GetTypeInfo()) { PageApplicationModel = applicationModel, }; // Act applicationModelProvider.OnProvidersExecuting(context); // Assert Assert.Collection( applicationModel.Filters, filter => Assert.IsType <PageSaveTempDataPropertyFilterFactory>(filter)); }
public void OnProvidersExecuting_SetsKeyPrefixToEmptyString_IfCompatSwitchIsSet() { // Arrange var type = typeof(TestPageModel_OneTempDataProperty); var options = Options.Create(new MvcViewOptions { SuppressTempDataAttributePrefix = true }); var provider = new TempDataFilterPageApplicationModelProvider(options); var context = CreateProviderContext(type); // Act provider.OnProvidersExecuting(context); // Assert var filter = Assert.IsType <PageSaveTempDataPropertyFilterFactory>(Assert.Single(context.PageApplicationModel.Filters)); Assert.Collection( filter.Properties, property => { Assert.Equal("Test2", property.Key); }); }