public void OnActionExecuting_SetsSubject() { // Arrange var filter = new ControllerViewDataAttributeFilter(Array.Empty <LifecycleProperty>()); var controller = new object(); var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var context = new ActionExecutingContext(actionContext, new IFilterMetadata[0], new Dictionary <string, object>(), controller); // Act filter.OnActionExecuting(context); // Assert Assert.Same(controller, filter.Subject); }
public void OnActionExecuting_AddsFeature() { // Arrange var filter = new ControllerViewDataAttributeFilter(Array.Empty <LifecycleProperty>()); var controller = new object(); var httpContext = new DefaultHttpContext(); var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor()); var context = new ActionExecutingContext(actionContext, new IFilterMetadata[0], new Dictionary <string, object>(), controller); // Act filter.OnActionExecuting(context); // Assert var feature = Assert.Single(httpContext.Features, f => f.Key == typeof(IViewDataValuesProviderFeature)); Assert.Same(filter, feature.Value); }
public void ProvideValues_AddsNonNullPropertyValuesToViewData() { // Arrange var type = typeof(TestController); var properties = new[] { new LifecycleProperty(type.GetProperty(nameof(TestController.Prop1)), "Prop1"), new LifecycleProperty(type.GetProperty(nameof(TestController.Prop2)), "Prop2"), new LifecycleProperty(type.GetProperty(nameof(TestController.Prop3)), "Prop3"), }; var controller = new TestController(); var filter = new ControllerViewDataAttributeFilter(properties) { Subject = controller, }; var viewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()); // Act controller.Prop1 = "New-Value"; filter.ProvideViewDataValues(viewData); // Assert Assert.Collection( viewData.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("Prop1", kvp.Key); Assert.Equal("New-Value", kvp.Value); }, kvp => { Assert.Equal("Prop2", kvp.Key); Assert.Equal("Test", kvp.Value); }); }