public async Task RenderSection_ThrowsIfRequiredSectionIsNotFound() { // Arrange var expected = new HelperResult(action: null); var page = CreatePage(v => { v.RenderSection("bar"); }); page.PreviousSectionWriters = new Dictionary<string, HelperResult> { { "baz", expected } }; // Act var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => page.ExecuteAsync()); // Assert Assert.Equal("Section 'bar' is not defined.", ex.Message); }
public async Task RenderSection_RendersSectionFromPreviousPage() { // Arrange var expected = new HelperResult(action: null); var viewContext = CreateViewContext(); HelperResult actual = null; var page = CreatePage(v => { actual = v.RenderSection("bar"); }); page.PreviousSectionWriters = new Dictionary<string, HelperResult> { { "bar", expected } }; // Act await page.ExecuteAsync(); // Assert Assert.Same(actual, expected); }
public async Task RenderSectionAsync_ThrowsIfNotInvokedFromLayoutPage() { // Arrange var expected = new HelperResult(NullAsyncWrite); var page = CreatePage(async v => { v.Path = "/Views/TestPath/Test.cshtml"; await v.RenderSectionAsync("header"); }); // Act var ex = await Assert.ThrowsAsync<InvalidOperationException>(page.ExecuteAsync); // Assert Assert.Equal("RenderSectionAsync invocation in '/Views/TestPath/Test.cshtml' is invalid. " + "RenderSectionAsync can only be called from a layout page.", ex.Message); }
public async Task RenderSectionAsync_ThrowsIfSectionIsRenderedMoreThanOnce_WithSyncMethod() { // Arrange var expected = new HelperResult(NullAsyncWrite); var page = CreatePage(async v => { v.Path = "/Views/TestPath/Test.cshtml"; v.RenderSection("header"); await v.RenderSectionAsync("header"); }); page.PreviousSectionWriters = new Dictionary<string, RenderAsyncDelegate> { { "header", _nullRenderAsyncDelegate } }; // Act var ex = await Assert.ThrowsAsync<InvalidOperationException>(page.ExecuteAsync); // Assert Assert.Equal("RenderSectionAsync invocation in '/Views/TestPath/Test.cshtml' is invalid." + " The section 'header' has already been rendered.", ex.Message); }
public void DefineSection(string name, HelperResult action) { if (SectionWriters.ContainsKey(name)) { throw new InvalidOperationException(Resources.FormatSectionAlreadyDefined(name)); } SectionWriters[name] = action; }
public async Task EnsureBodyWasRendered_ThrowsIfRenderBodyIsNotCalledFromPage() { // Arrange var expected = new HelperResult(action: null); var page = CreatePage(v => { }); page.RenderBodyDelegate = CreateBodyAction("some content"); // Act await page.ExecuteAsync(); var ex = Assert.Throws<InvalidOperationException>(() => page.EnsureBodyWasRendered()); // Assert Assert.Equal("RenderBody must be called from a layout page.", ex.Message); }
public async Task RenderSectionAsync_ThrowsIfNotInvokedFromLayoutPage() { // Arrange var expected = new HelperResult(action: null); var page = CreatePage(async v => { await v.RenderSectionAsync("header"); }); // Act var ex = await Assert.ThrowsAsync<InvalidOperationException>(page.ExecuteAsync); // Assert Assert.Equal("RenderSectionAsync can only be called from a layout page.", ex.Message); }
public async Task RenderSectionAsync_ThrowsIfSectionIsRenderedMoreThanOnce() { // Arrange var expected = new HelperResult(action: null); var page = CreatePage(async v => { await v.RenderSectionAsync("header"); await v.RenderSectionAsync("header"); }); page.PreviousSectionWriters = new Dictionary<string, RenderAsyncDelegate> { { "header", _nullRenderAsyncDelegate } }; // Act var ex = await Assert.ThrowsAsync<InvalidOperationException>(page.ExecuteAsync); // Assert Assert.Equal("The section named 'header' has already been rendered.", ex.Message); }
public async Task EnsureBodyAndSectionsWereRendered_ThrowsIfDefinedSectionIsNotRendered() { // Arrange var expected = new HelperResult(action: null); var page = CreatePage(v => { v.RenderSection("sectionA"); }); page.PreviousSectionWriters = new Dictionary<string, HelperResult> { { "header", expected }, { "footer", expected }, { "sectionA", expected }, }; // Act await page.ExecuteAsync(); var ex = Assert.Throws<InvalidOperationException>(() => page.EnsureBodyAndSectionsWereRendered()); // Assert Assert.Equal("The following sections have been defined but have not been rendered: 'header, footer'.", ex.Message); }
public async Task RenderSection_ThrowsIfSectionIsRenderedMoreThanOnce() { // Arrange var expected = new HelperResult(action: null); var page = CreatePage(v => { v.RenderSection("header"); v.RenderSection("header"); }); page.PreviousSectionWriters = new Dictionary<string, HelperResult> { { "header", new HelperResult(writer => { }) } }; // Act var ex = await Assert.ThrowsAsync<InvalidOperationException>(page.ExecuteAsync); // Assert Assert.Equal("RenderSection has already been called for the section named 'header'.", ex.Message); }