public async Task ProcessAsync_WithCollectionModelExpression_DeducesCheckedFromModelExpression( int[] modelValues, string itemValue, bool expectedChecked) { // Arrange var model = new ModelWithCollectionProperty() { CollectionProperty = modelValues }; var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(ModelWithCollectionProperty), model) .GetExplorerForProperty(nameof(ModelWithCollectionProperty.CollectionProperty)); var viewContext = new ViewContext(); var modelExpression = nameof(ModelWithCollectionProperty.CollectionProperty); var checkboxesContext = new CheckboxesContext(name: "test", aspFor: new ModelExpression(modelExpression, modelExplorer)); var context = new TagHelperContext( tagName: "govuk-checkboxes-item", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(CheckboxesContext), checkboxesContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-checkboxes-item", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new CheckboxesItemTagHelper() { ViewContext = viewContext, Value = itemValue }; // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Collection( checkboxesContext.Items, item => { var checkboxesItem = Assert.IsType <CheckboxesItem>(item); Assert.Equal(expectedChecked, checkboxesItem.Checked); }); }
public async Task ProcessAsync_WithNullCollectionModelExpression_ExecutesSuccessfully() { // Arrange var model = new ModelWithCollectionProperty() { CollectionProperty = null }; var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(ModelWithCollectionProperty), model) .GetExplorerForProperty(nameof(ModelWithCollectionProperty.CollectionProperty)); var viewContext = new ViewContext(); var modelExpression = nameof(ModelWithCollectionProperty.CollectionProperty); var radiosContext = new RadiosContext(name: "test", aspFor: new ModelExpression(modelExpression, modelExplorer)); var context = new TagHelperContext( tagName: "govuk-radios-item", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(RadiosContext), radiosContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-radios-item", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new RadiosItemTagHelper() { Value = "2" }; // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Collection( radiosContext.Items, item => { var radiosItem = Assert.IsType <RadiosItem>(item); Assert.False(radiosItem.Checked); }); }