public async Task <ActionResult <LegalCaseWithBillableActivitiesDTO> > GetLegalCaseByIdWithDetailsAsync([FromRoute] int id) { var legalCaseWithDetails = await _genericRepository.GetOneByWithRelatedDataAsync(lc => lc.Id == id, lc => lc.BillableActivities); if (legalCaseWithDetails is null) { var logData = new { Id = id, Action = ControllerContext.ActionDescriptor.DisplayName, Verb = HttpContext.Request.Method, EndpointPath = HttpContext.Request.Path.Value, User = HttpContext.User.Claims.First(usr => usr.Type == "preferred_username").Value }; _logger.LogInformation("No LegalCases were found for Id {id}. Data: {@logData}", id, logData); _logger.LogError($"LegalCasesController.GetLegalCaseByIdWithDetailsAsync: No data was found for id {id}"); return(NotFound("No data was found")); } LegalCaseWithBillableActivitiesDTO caseWithDetailsDTO = _mapper.Map <LegalCaseWithBillableActivitiesDTO>(legalCaseWithDetails); return(Ok(caseWithDetailsDTO)); }
public async void GetLegalCaseByIdWithDetailsAsync_Returns_LegalCaseWithDetails(int id) { //get expected LegalCase LegalCase expectedLegalCase = _legalCases.Where(lc => lc.Id == id).First(); LegalCaseWithBillableActivitiesDTO expectedCaseDTO = _mapper.Map <LegalCaseWithBillableActivitiesDTO>(expectedLegalCase); //configure the Repo return _mockRepository.Setup(repo => repo.GetOneByWithRelatedDataAsync(lc => lc.Id == id, lc => lc.BillableActivities)).ReturnsAsync(expectedLegalCase); //call the controller method var actionResult = await _controller.GetLegalCaseByIdWithDetailsAsync(id); //Get the LegalCase from the ActionResult returned var okObjectResult = Assert.IsType <OkObjectResult>(actionResult.Result); LegalCaseWithBillableActivitiesDTO actualLegalCaseDTO = okObjectResult.Value as LegalCaseWithBillableActivitiesDTO; int?statusCode = okObjectResult.StatusCode; //Assertions Assert.Equal(200, statusCode); Assert.IsType <LegalCaseWithBillableActivitiesDTO>(actualLegalCaseDTO); //use FluentAssertions to compare Reference types actualLegalCaseDTO.Should().BeEquivalentTo(expectedCaseDTO, options => options.ComparingByMembers <LegalCaseWithBillableActivitiesDTO>()); }