public async void Handle_ReturnsNull_WhereCustomerDoesNotExists()
        {
            // Arrange
            var customerId    = fixture.Create <int>();
            var testDbContext = new ApplicationDbContextBuilder().Build();

            mockMapper.Setup(x => x.Map <QueryResult>(null)).Returns((QueryResult)null);

            var sut = new QueryHandler(testDbContext, mockMapper.Object);

            // Act
            var actualResult = await sut.Handle(new Query(customerId), default(CancellationToken));

            // Assert
            actualResult.Should().BeNull();
        }
        public async void Handle_ReturnsCustomer_WhereCustomerExists()
        {
            // Arrange
            var customerData  = fixture.CreateMany <Data.Customer>(1).ToList();
            var testDbContext = new ApplicationDbContextBuilder().WithCustomers(customerData).Build();

            var expectedCustomer = fixture.Create <QueryResult>();

            mockMapper.Setup(x => x.Map <QueryResult>(It.Is <Data.Customer>(y => y.CustomerId == customerData[0].CustomerId))).Returns(expectedCustomer);

            var sut = new QueryHandler(testDbContext, mockMapper.Object);

            // Act
            var actualResult = await sut.Handle(new Query(customerData[0].CustomerId), default(CancellationToken));

            // Assert
            actualResult.Should().BeOfType <QueryResult>()
            .And.BeSameAs(expectedCustomer);
        }
        public async void Handle_ReturnsQueryResult()
        {
            // Arrange
            var fixture = new Fixture();

            var customerData  = fixture.CreateMany <Data.Customer>().ToList();
            var testDbContext = new ApplicationDbContextBuilder().WithCustomers(customerData).Build();

            var expectedCustomers = fixture.CreateMany <QueryResult.Customer>().ToArray();

            var mockMapper = new Mock <IMapper>();

            mockMapper.Setup(x => x.Map <QueryResult.Customer[]>(customerData)).Returns(expectedCustomers);

            var sut = new QueryHandler(testDbContext, mockMapper.Object);

            // Act
            var actualResult = await sut.Handle(new Query(), default(CancellationToken));

            // Assert
            actualResult.Should().BeOfType <QueryResult>()
            .Which.Customers.Should().BeSameAs(expectedCustomers);
        }