public SalesControllerTests()
        {
            var ctx = TestDbUtilities <SalesContext> .BuildInMemoryContext();

            var repo = new SalesRepository(ctx);

            var configuration = new MapperConfiguration(cfg => cfg.AddProfile <SalesMaps>());
            var mapper        = new Mapper(configuration);

            var serviceProvider = new ServiceCollection()
                                  .AddLogging()
                                  .BuildServiceProvider();

            var factory = serviceProvider.GetService <ILoggerFactory>();

            var logger = factory.CreateLogger <SalesController>();

            var ticketServiceMock = new Mock <ITicketService>();

            ticketServiceMock.Setup(s => s.ReserveTickets(It.IsAny <int[]>())).ReturnsAsync(() =>
            {
                return(true);
            });
            ticketServiceMock.Setup(s => s.FinalizeTickets(It.IsAny <int[]>())).ReturnsAsync(() =>
            {
                var result = new FinalizedTicketResponse()
                {
                    Success = true,
                    Tickets = new TicketInfo[]
                    {
                        new TicketInfo()
                        {
                            Price = 49.99m
                        },
                        new TicketInfo()
                        {
                            Price = 49.99m
                        },
                        new TicketInfo()
                        {
                            Price = 49.99m
                        },
                        new TicketInfo()
                        {
                            Price = 49.99m
                        },
                    }
                };
                return(result);
            });


            _controller = new SalesController(logger, mapper, repo, ticketServiceMock.Object);
        }
        public async Task <FinalizedTicketResponse> FinalizeTickets(int[] tickets)
        {
            var client  = new TicketMessageService.TicketMessageServiceClient(_channelProvider.ProvideChannel());
            var request = new TicketRequest();

            request.TicketIds.Add(tickets);
            var response = await client.FinalizeTicketsAsync(request);

            var ticketResponse = new FinalizedTicketResponse()
            {
                Success = response.Success,
                Tickets = _mapper.Map <IEnumerable <TicketInfo> >(response.Tickets.ToArray())
            };

            return(ticketResponse);
        }