public async Task ProcessAsync_ComputesCorrectIdForSubsequentItemsWhenNotSpecified() { // Arrange var checkboxesContext = new CheckboxesContext( idPrefix: "prefix", resolvedName: "mycheckboxes", aspFor: null, viewContext: null); checkboxesContext.AddItem(new CheckboxesItem() { Content = new HtmlString("First") }); 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(); tagHelperContent.AppendHtml(new HtmlString("Label")); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new CheckboxesItemTagHelper(new DefaultModelHelper()) { IsChecked = true, Value = "V" }; // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Equal("prefix-1", checkboxesContext.Items.Last().Id); Assert.Equal("prefix-1-item-hint", checkboxesContext.Items.Last().HintId); Assert.Equal("conditional-prefix-1", checkboxesContext.Items.Last().ConditionalId); }
public void AddItem_AddsItemToItems() { // Arrange var context = new CheckboxesContext(name: null, aspFor: null); var item = new CheckboxesItem() { LabelContent = new HtmlString("Item 1"), Value = "item1" }; // Act context.AddItem(item); // Assert var contextItem = Assert.Single(context.Items); Assert.Same(item, contextItem); }
public void OpenFieldset_AlreadyGotItem_ThrowsInvalidOperationException() { // Arrange var context = new CheckboxesContext(name: null, aspFor: null); var item = new CheckboxesItem() { LabelContent = new HtmlString("Item 1"), Value = "item1" }; context.AddItem(item); // Act var ex = Record.Exception(() => context.OpenFieldset()); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<govuk-checkboxes-fieldset> must be the only direct child of the <govuk-checkboxes>.", ex.Message); }
public void SetHint_AlreadyGotItem_ThrowsInvalidOperationException() { // Arrange var context = new CheckboxesContext(name: null, aspFor: null); var item = new CheckboxesItem() { LabelContent = new HtmlString("Item 1"), Value = "item1" }; context.AddItem(item); // Act var ex = Record.Exception(() => context.SetHint(attributes: null, new HtmlString("Hint"))); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<govuk-checkboxes-hint> must be specified before <govuk-checkboxes-item>.", ex.Message); }
public void AddItem_OutsideOfFieldset_ThrowsInvalidOperationException() { // Arrange var context = new CheckboxesContext(name: null, aspFor: null); var item = new CheckboxesItem() { LabelContent = new HtmlString("Item 1"), Value = "item1" }; context.OpenFieldset(); var fieldsetContext = new CheckboxesFieldsetContext(attributes: null); context.CloseFieldset(fieldsetContext); // Act var ex = Record.Exception(() => context.AddItem(item)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<govuk-checkboxes-item> must be inside <govuk-checkboxes-fieldset>.", ex.Message); }