public async Task GetItemFound() { var item = new TestEntity() { Id = 123, Name = "Uom123" }; var mockRepository = new Mock <IReadRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.GetAsync(123)).ReturnsAsync(item); var supportedMedia = new LrpSupportedMedia(); var context = new ControllerContext { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.Headers["Accept"] = "application/vnd.lrp.v1+json"; var pageLinksBuilder = new Mock <IPageLinksBuilder>(MockBehavior.Strict).Object; var controller = new ReadController <TestEntity>(mockRepository.Object, pageLinksBuilder) { ControllerContext = context }; var actionResult = await controller.GetItemAsync(123) as OkObjectResult; Assert.NotNull(actionResult); var dataResult = actionResult.Value as TestEntity; Assert.NotNull(dataResult); Assert.AreEqual(123, dataResult.Id); Assert.AreEqual("Uom123", dataResult.Name); }
public void GetPageLinksBuilderThrows() { var page = new Page <TestEntity>("", 40, 0, 10, new List <TestEntity>()); var mockRepository = new Mock <IReadRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.GetAsync("", 0, 20)).ReturnsAsync(page); var supportedMedia = new LrpSupportedMedia(); var context = new ControllerContext { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.Headers["Accept"] = "application/vnd.lrp.v1+json"; var pageLinksBuilder = new Mock <IPageLinksBuilder>(); pageLinksBuilder.Setup(p => p.Build(page, context.HttpContext.Request)).Throws(new Exception()); var controller = new ReadController <TestEntity>(mockRepository.Object, pageLinksBuilder.Object) { ControllerContext = context }; Assert.ThrowsAsync <Exception>(async() => await controller.GetPageAsync("", 0, 20)); }
public async Task GetPageTakeLessThan1() { var mockRepository = new Mock <IReadRepository <TestEntity> >(MockBehavior.Strict).Object; var supportedMedia = new LrpSupportedMedia(); var pageLinksBuilder = new Mock <IPageLinksBuilder>(MockBehavior.Strict).Object; var controller = new ReadController <TestEntity>(mockRepository, pageLinksBuilder); var actionResult = await controller.GetPageAsync("", 0, 0) as BadRequestObjectResult; Assert.NotNull(actionResult); var message = actionResult.Value as string; Assert.NotNull(message); Assert.AreEqual(ReadController <TestEntity> .BadTakeMessage, actionResult.Value); }
public async Task GetPageSucceeds() { var page = new Page <TestEntity>("", 40, 0, 10, new List <TestEntity> { new TestEntity { Id = 1001, Name = "TheEntity" } }); var mockRepository = new Mock <IReadRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.GetAsync("", 0, 20)).ReturnsAsync(page); var supportedMedia = new LrpSupportedMedia(); var context = new ControllerContext { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.Headers["Accept"] = "application/vnd.lrp.v1+json"; var pageLinksBuilder = new Mock <IPageLinksBuilder>(); pageLinksBuilder.Setup(p => p.Build(page, context.HttpContext.Request)).Returns("daLinks"); var controller = new ReadController <TestEntity>(mockRepository.Object, pageLinksBuilder.Object) { ControllerContext = context }; var actionResult = await controller.GetPageAsync("", 0, 20) as OkObjectResult; Assert.NotNull(actionResult); var items = actionResult.Value as ImmutableList <TestEntity>; Assert.NotNull(items); Assert.AreEqual(1, items.Count); Assert.AreEqual(1001, items[0].Id); Assert.AreEqual("TheEntity", items[0].Name); }
public async Task GetItemNotFound() { var mockRepository = new Mock <IReadRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.GetAsync(123)).ReturnsAsync(null as TestEntity); var supportedMedia = new LrpSupportedMedia(); var context = new ControllerContext { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.Headers["Accept"] = "application/vnd.lrp.v1+json"; var pageLinksBuilder = new Mock <IPageLinksBuilder>(MockBehavior.Strict).Object; var controller = new ReadController <TestEntity>(mockRepository.Object, pageLinksBuilder) { ControllerContext = context }; var result = await controller.GetItemAsync(123) as NotFoundResult; Assert.NotNull(result); }
public void GetItemRepoThrows() { var mockRepository = new Mock <IReadRepository <TestEntity> >(MockBehavior.Strict); mockRepository.Setup(r => r.GetAsync(123)).ThrowsAsync(new IOException()); var supportedMedia = new LrpSupportedMedia(); var context = new ControllerContext { HttpContext = new DefaultHttpContext() }; context.HttpContext.Request.Headers["Accept"] = "application/vnd.lrp.v1+json"; var pageLinksBuilder = new Mock <IPageLinksBuilder>(MockBehavior.Strict).Object; var controller = new ReadController <TestEntity>(mockRepository.Object, pageLinksBuilder) { ControllerContext = context }; Assert.ThrowsAsync <IOException>(async() => await controller.GetItemAsync(123)); }