public async Task UXO_GetAllHasAnError_ShouldReturnInternalServerError()
        {
            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.GetUXOsForDisplay())
            .ThrowsAsync(new Exception());

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);
            var result     = await controller.GetUXOs();

            var actionResult = Assert.IsType <ActionResult <List <UXOMapItem> > >(result);
            var objectResult = Assert.IsType <ObjectResult>(actionResult.Result);

            Assert.Equal((int)HttpStatusCode.InternalServerError, objectResult.StatusCode);
        }
        public async Task UXO_GetAllWithNoExceptions_ShouldReturnOk()
        {
            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.GetUXOsForDisplay())
            .ReturnsAsync(SampleData.SampleMapItems());

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);
            var result     = await controller.GetUXOs();

            var actionResult = Assert.IsType <ActionResult <List <UXOMapItem> > >(result);
            var objectResult = Assert.IsType <OkObjectResult>(actionResult.Result);

            Assert.IsType <List <UXOMapItem> >(objectResult.Value);
        }
        public async Task UXO_GenerateDocumentWithInvalidId_ShouldReturnNotFound()
        {
            var uxoId = "1";

            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.FetchUXO(uxoId))
            .ReturnsAsync((UXO)null);

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);
            var result     = await controller.GenerateDocument(uxoId);

            var actionResult = Assert.IsType <NotFoundObjectResult>(result);

            Assert.IsType <ErrorResponse>(actionResult.Value);
        }
        public async Task UXO_GetUXOById_ShouldReturnOk()
        {
            var uxoId = "1";

            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.FetchUXO(uxoId))
            .ReturnsAsync(SampleData.MinimalUXO());

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);
            var result     = await controller.GetUXOData(uxoId);

            var actionResult = Assert.IsType <ActionResult <UXO> >(result);
            var objectResult = Assert.IsType <OkObjectResult>(actionResult.Result);

            Assert.IsType <UXO>(objectResult.Value);
        }
        public async Task UXO_GetUXOByIdHasAnError_ShouldReturnInternalServerError()
        {
            var uxoId = "1";

            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.FetchUXO(uxoId))
            .ThrowsAsync(new Exception());

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);
            var result     = await controller.GetUXOData(uxoId);

            var actionResult = Assert.IsType <ActionResult <UXO> >(result);
            var objectResult = Assert.IsType <ObjectResult>(actionResult.Result);

            Assert.Equal((int)HttpStatusCode.InternalServerError, objectResult.StatusCode);
        }
        public async Task UXO_GenerateDocumentFailsToProduceDocument_ShouldReturnInternalServerError()
        {
            var uxoId = "1";

            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.FetchUXO(uxoId))
            .ReturnsAsync(SampleData.MinimalUXO());
            mockUxoDocumentService.Setup(svc => svc.CreateDocument(It.IsAny <UXO>()))
            .ReturnsAsync((byte[])null);

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);
            var result     = await controller.GenerateDocument(uxoId);

            var objectResult = Assert.IsType <ObjectResult>(result);

            Assert.Equal((int)HttpStatusCode.InternalServerError, objectResult.StatusCode);
        }
        public async Task UXO_GenerateDocumentWithValidId_ShouldReturnFile()
        {
            var uxoId = "1";

            var mockUxoService         = new Mock <IUXOService>();
            var mockUxoDocumentService = new Mock <IUXODocumentService>();

            mockUxoService.Setup(svc => svc.FetchUXO(uxoId))
            .ReturnsAsync(SampleData.MinimalUXO());
            mockUxoDocumentService.Setup(svc => svc.CreateDocument(It.IsAny <UXO>()))
            .ReturnsAsync(SampleData.SampleFile());

            var controller = new UxoController(mockUxoService.Object, mockUxoDocumentService.Object, _logger);

            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = new DefaultHttpContext();
            var result = await controller.GenerateDocument(uxoId);

            var actionResult = Assert.IsType <FileContentResult>(result);

            Assert.Equal("APPLICATION/octet-stream", actionResult.ContentType);
        }