Example #1
0
        public async Task BreadCrumbsShouldTranslateLabelsIfAvailable()
        {
            //Arrange
            var localizer = new Mock <IViewLocalizer>();

            localizer.SetupGet(p => p["homeLabel"]).Returns(new LocalizedHtmlString("HomeLabel", "Home"));
            localizer.SetupGet(p => p["coursesLabel"]).Returns(new LocalizedHtmlString("coursesLabel", "Bananas"));
            localizer.Setup(p => p.GetAllStrings(false)).Returns(new List <LocalizedString>()
            {
                new LocalizedString("coursesLabel", "Bananas")
            });

            var breadcrumbs = new Breadcrumbs((innerHttpContext) =>
            {
                return(Task.CompletedTask);
            }, localizer.Object);


            var mockContext = new Mock <HttpContext>();
            var mockRequest = new Mock <HttpRequest>();

            mockRequest.SetupGet(r => r.Path).Returns(new PathString("/Courses/Course-X/Lessons/Lesson-Y"));
            mockContext.SetupGet(c => c.Request).Returns(mockRequest.Object);
            mockContext.SetupGet(c => c.Items).Returns(new Dictionary <object, object>());

            //Act
            await breadcrumbs.Invoke(mockContext.Object);

            //Assert
            Assert.True(mockContext.Object.Items.ContainsKey("breadcrumbs"));
            Assert.Collection((mockContext.Object.Items["breadcrumbs"] as List <Breadcrumb>),
                              (b) => {
                Assert.Equal("Home", b.Label);
                Assert.Equal("/", b.Path);
            },
                              (b) => {
                Assert.Equal("Bananas", b.Label);
                Assert.Equal("/Courses", b.Path);
            },
                              (b) => {
                Assert.Equal("Course X", b.Label);
                Assert.Equal("/Courses/Course-X", b.Path);
            },
                              (b) => {
                Assert.Equal("Lessons", b.Label);
                Assert.Equal("/Courses/Course-X/Lessons", b.Path);
            },
                              (b) => {
                Assert.Equal("Lesson Y", b.Label);
                Assert.Equal("/Courses/Course-X/Lessons/Lesson-Y", b.Path);
            }
                              );
        }