public async Task GetChildContentAsync_CachesValuePerEncoderInstance(HtmlEncoder encoder) { // Arrange var executionCount = 0; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary <object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { executionCount++; return(Task.FromResult(result: true)); }, startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // HtmlEncoderData includes another HtmlTestEncoder instance but method compares HtmlEncoder instances. var firstEncoder = new HtmlTestEncoder(); // Act var content1 = await executionContext.GetChildContentAsync(useCachedResult : true, encoder : firstEncoder); var content2 = await executionContext.GetChildContentAsync(useCachedResult : true, encoder : encoder); // Assert Assert.Equal(2, executionCount); }
public async Task GetChildContentAsync_CanExecuteChildrenMoreThanOnce(HtmlEncoder encoder) { // Arrange var executionCount = 0; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary <object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { executionCount++; return(Task.FromResult(result: true)); }, startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // Act await executionContext.GetChildContentAsync(useCachedResult : false, encoder : encoder); await executionContext.GetChildContentAsync(useCachedResult : false, encoder : encoder); // Assert Assert.Equal(2, executionCount); }
public async Task GetChildContentAsync_ReturnsExpectedContent(HtmlEncoder encoder) { // Arrange var tagHelperContent = new DefaultTagHelperContent(); var executionCount = 0; var content = "Hello from child content"; var expectedContent = $"HtmlEncode[[{content}]]"; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary <object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { executionCount++; tagHelperContent.SetContent(content); return(Task.FromResult(result: true)); }, startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => tagHelperContent); // Act var actualContent = await executionContext.GetChildContentAsync(useCachedResult : true, encoder : encoder); // Assert Assert.Equal(expectedContent, actualContent.GetContent(new HtmlTestEncoder())); }
public async Task GetChildContentAsync_ReturnsNewObjectEveryTimeItIsCalled(bool useCachedResult) { // Arrange var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary <object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => Task.FromResult(result: true), startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // Act var content1 = await executionContext.GetChildContentAsync(useCachedResult, encoder : null); var content2 = await executionContext.GetChildContentAsync(useCachedResult, encoder : null); // Assert Assert.NotSame(content1, content2); }
public async Task GetChildContentAsync_StartsWritingScopeWithGivenEncoder(HtmlEncoder encoder) { // Arrange HtmlEncoder passedEncoder = null; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary <object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => Task.FromResult(result: true), startTagHelperWritingScope: encoderArgument => passedEncoder = encoderArgument, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // Act await executionContext.GetChildContentAsync(useCachedResult : true, encoder : encoder); // Assert Assert.Same(encoder, passedEncoder); }
public async Task GetChildContentAsync_ReturnsNewObjectEveryTimeItIsCalled(bool useCachedResult) { // Arrange var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => Task.FromResult(result: true), startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // Act var content1 = await executionContext.GetChildContentAsync(useCachedResult, encoder: null); var content2 = await executionContext.GetChildContentAsync(useCachedResult, encoder: null); // Assert Assert.NotSame(content1, content2); }
public async Task GetChildContentAsync_CanExecuteChildrenMoreThanOnce(HtmlEncoder encoder) { // Arrange var executionCount = 0; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { executionCount++; return Task.FromResult(result: true); }, startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // Act await executionContext.GetChildContentAsync(useCachedResult: false, encoder: encoder); await executionContext.GetChildContentAsync(useCachedResult: false, encoder: encoder); // Assert Assert.Equal(2, executionCount); }
public async Task GetChildContentAsync_CachesValuePerEncoderInstance(HtmlEncoder encoder) { // Arrange var executionCount = 0; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { executionCount++; return Task.FromResult(result: true); }, startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // HtmlEncoderData includes another HtmlTestEncoder instance but method compares HtmlEncoder instances. var firstEncoder = new HtmlTestEncoder(); // Act var content1 = await executionContext.GetChildContentAsync(useCachedResult: true, encoder: firstEncoder); var content2 = await executionContext.GetChildContentAsync(useCachedResult: true, encoder: encoder); // Assert Assert.Equal(2, executionCount); }
public async Task GetChildContentAsync_StartsWritingScopeWithGivenEncoder(HtmlEncoder encoder) { // Arrange HtmlEncoder passedEncoder = null; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => Task.FromResult(result: true), startTagHelperWritingScope: encoderArgument => passedEncoder = encoderArgument, endTagHelperWritingScope: () => new DefaultTagHelperContent()); // Act await executionContext.GetChildContentAsync(useCachedResult: true, encoder: encoder); // Assert Assert.Same(encoder, passedEncoder); }
public async Task GetChildContentAsync_ReturnsExpectedContent(HtmlEncoder encoder) { // Arrange var tagHelperContent = new DefaultTagHelperContent(); var executionCount = 0; var content = "Hello from child content"; var expectedContent = $"HtmlEncode[[{content}]]"; var executionContext = new TagHelperExecutionContext( "p", tagMode: TagMode.StartTagAndEndTag, items: new Dictionary<object, object>(), uniqueId: string.Empty, executeChildContentAsync: () => { executionCount++; tagHelperContent.SetContent(content); return Task.FromResult(result: true); }, startTagHelperWritingScope: _ => { }, endTagHelperWritingScope: () => tagHelperContent); // Act var actualContent = await executionContext.GetChildContentAsync(useCachedResult: true, encoder: encoder); // Assert Assert.Equal(expectedContent, actualContent.GetContent(new HtmlTestEncoder())); }