public async Task <IActionResult> Get ([FromQuery] ApiActorListQuery request) { try { var currentPrincipal = HttpContext.User; using var logScope = Logger.BeginScope("{User}", currentPrincipal?.Identity?.Name); Logger.LogInformation(ApiLogEvent.ApiRequest, "Get Actor List request {query}", request.ToDictionary()); var query = request.ToActorListQuery(currentPrincipal); var result = await Mediator.Send(query); if (result is null || !result.Success) { Logger.LogWarning(ApiLogEvent.ApiErrorResponse, "Get Actors List error response. Errors={errors}", result?.Errors); return(BadRequest()); } return(Ok(result.ToApiActorList())); } catch (Exception ex) when(Logger.WriteScopeWhenException (ApiLogEvent.ApiErrorResponse, ex)) { return(BadRequest()); } }
public static Dictionary <string, object> ToDictionary (this ApiActorListQuery from) { if (from is null) { return(null); } return(new Dictionary <string, object> { { nameof(from.ActorRoleMask), from.ActorRoleMask }, { nameof(from.Archived), from.Archived }, { nameof(from.ContainsKeyWords), from.ContainsKeyWords }, { nameof(from.Limit), from.Limit }, { nameof(from.Offset), from.Offset }, }); }
public static ActorListQuery ToActorListQuery (this ApiActorListQuery from, ClaimsPrincipal currentPrincipal) { if (from is null) { return(null); } return(new ActorListQuery { ActorRoleMask = from.ActorRoleMask, Archived = from.Archived, СontainsKeyWords = from.ContainsKeyWords, Limit = from.Limit, Offset = from.Offset, CurrentPrincipal = currentPrincipal }); }
public async Task GetListReturnsOkResultWhenSuccessAnswerAsync() { // Arrange var actors = new List <Actor>(); var apiActors = new List <ApiActor>(); actors.AddRange(Enumerable.Range(0, 5) .Select(x => new Actor() { Id = x.ToString() })); var query = new ApiActorListQuery(); apiActors.AddRange(Enumerable.Range(0, 5) .Select(x => new ApiActor() { Id = x.ToString() })); var expectedAnswer = new ApiList <ApiActor>() { TotalCount = apiActors.Count }; expectedAnswer.Entities.AddRange(apiActors); var mediator = new Mock <IMediator>(); mediator.Setup(x => x.Send(It.IsAny <ActorListQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync( new ListResponse <Actor>(actors, actors.Count)) .Verifiable("Query was not sent."); ActorsController controller = BuildController(mediator); // Act var answer = await controller.Get(query); // Assert Assert.IsType <OkObjectResult>(answer); Assert.Equal(expectedAnswer.Entities.Select(x => x.Id), (((OkObjectResult)answer).Value as ApiList <ApiActor>) .Entities.Select(x => x.Id)); mediator.Verify(x => x.Send(It.IsAny <ActorListQuery>(), It.IsAny <CancellationToken>())); }
public async Task GetListReturnsBadResultWhenNotSuccessAnswerAsync() { // Arrange var query = new ApiActorListQuery(); var mediator = new Mock <IMediator>(); mediator.Setup(x => x.Send(It.IsAny <ActorListQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync( new ListResponse <Actor>(new string[] { "Error answer" })) .Verifiable("Query was not sent."); ActorsController controller = BuildController(mediator); // Act var answer = await controller.Get(query); // Assert Assert.IsType <BadRequestResult>(answer); mediator.Verify(x => x.Send(It.IsAny <ActorListQuery>(), It.IsAny <CancellationToken>())); }