public async Task GenerateReport_ShouldReturnOkObjectResult_WhenValidRequest() { //Arrange var request = new MetricsRequestDto { StartDate = "01/02/2021", EndDate = "01/02/2021", Metrics = new List <string> { "some metric" }, PipelineDto = new PipelineDto { Token = "someToken", Deployment = new List <Deployment> { new Deployment { Id = "someId", Name = "someName", Step = "someStep", Repository = "someRepository", } } }, CodeBaseSettingDto = new CodeBaseSettingDto { Token = "someToken", LeadTime = new List <LeadTime> { new LeadTime { Id = "someId", Name = "someName", Step = "someStep", Repository = "someRepository", } } } }; //Act var actual = await _controller.GenerateReport(request); //Assert var result = Assert.IsType <OkObjectResult>(actual); Assert.Equal(200, result.StatusCode); await _reportingService.Received(1).GenerateReport(Arg.Any <MetricsRequest>()); }
public async Task <IActionResult> GenerateReport([FromBody] MetricsRequestDto request) { if (!ModelState.IsValid) { return(BadRequest()); } try { var metricsRequest = _mapper.Map <MetricsRequest>(request); var response = await _reportingService.GenerateReport(metricsRequest); return(new OkObjectResult(response)); } catch (UnauthorizedAccessException e) { return(new UnauthorizedObjectResult(e.Message)); } catch (Exception e) { return(StatusCode(StatusCodes.Status500InternalServerError, e.Message)); } }