コード例 #1
0
ファイル: RazorPageTest.cs プロジェクト: Nakro/Mvc
        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);
        }
コード例 #2
0
ファイル: RazorPageTest.cs プロジェクト: Nakro/Mvc
        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);
        }
コード例 #3
0
ファイル: RazorPageTest.cs プロジェクト: 4myBenefits/Mvc
        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);
        }
コード例 #4
0
ファイル: RazorPageTest.cs プロジェクト: 4myBenefits/Mvc
        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);
        }
コード例 #5
0
ファイル: RazorPage.cs プロジェクト: Nakro/Mvc
 public void DefineSection(string name, HelperResult action)
 {
     if (SectionWriters.ContainsKey(name))
     {
         throw new InvalidOperationException(Resources.FormatSectionAlreadyDefined(name));
     }
     SectionWriters[name] = action;
 }
コード例 #6
0
ファイル: RazorPageTest.cs プロジェクト: AndersBillLinden/Mvc
        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);
        }
コード例 #7
0
ファイル: RazorPageTest.cs プロジェクト: AndersBillLinden/Mvc
        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);
        }
コード例 #8
0
ファイル: RazorPageTest.cs プロジェクト: AndersBillLinden/Mvc
        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);
        }
コード例 #9
0
ファイル: RazorPageTest.cs プロジェクト: Nakro/Mvc
        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);
        }
コード例 #10
0
ファイル: RazorPageTest.cs プロジェクト: Nakro/Mvc
        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);
        }