public async Task ComponentShouldGetEnglishLocaleIfClientThrows() { //Arrange var client = new Mock <IContentfulClient>(); client.Setup(c => c.GetSpace(default(CancellationToken))).Throws <Exception>(); Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); var mockSession = new Mock <ISession>(); mockSession.Setup(x => x.Set("locale", It.IsAny <byte[]>())).Verifiable(); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.Session).Returns(mockSession.Object); var viewContext = new ViewContext(); viewContext.HttpContext = httpContext.Object; var componentContext = new ViewComponentContext(); componentContext.ViewContext = viewContext; var component = new LocalesViewComponent(client.Object); component.ViewComponentContext = componentContext; //Act var res = await component.InvokeAsync(); //Assert Assert.IsType <ViewViewComponentResult>(res); Assert.Equal("en-US", ((res as ViewViewComponentResult).ViewData.Model as LocalesInfo).SelectedLocale.Code); mockSession.Verify(x => x.Set("locale", It.Is <byte[]>(b => Encoding.UTF8.GetString(b) == "en-US")), Times.Once); }
public async Task ComponentShouldGetTheDefaultLocaleIfSelectedLocaleDoesNotExist() { //Arrange var space = new Space { Locales = new List <Locale> { new Locale { Code = "sv-SE", Default = true }, new Locale { Code = "Klingon" } } }; var client = new Mock <IContentfulClient>(); client.Setup(c => c.GetSpace(default(CancellationToken))).Returns(Task.FromResult(space)); Thread.CurrentThread.CurrentCulture = new CultureInfo("e-US"); var mockSession = new Mock <ISession>(); mockSession.Setup(x => x.Set("locale", It.IsAny <byte[]>())).Verifiable(); var httpContext = new Mock <HttpContext>(); httpContext.SetupGet(c => c.Session).Returns(mockSession.Object); var viewContext = new ViewContext(); viewContext.HttpContext = httpContext.Object; var componentContext = new ViewComponentContext(); componentContext.ViewContext = viewContext; var component = new LocalesViewComponent(client.Object); component.ViewComponentContext = componentContext; //Act var res = await component.InvokeAsync(); //Assert Assert.IsType <ViewViewComponentResult>(res); Assert.Equal("sv-SE", ((res as ViewViewComponentResult).ViewData.Model as LocalesInfo).SelectedLocale.Code); mockSession.Verify(x => x.Set("locale", It.Is <byte[]>(b => Encoding.UTF8.GetString(b) == "sv-SE")), Times.Once); }