public async Task Handle_SalesPersonExists_ReturnSalesPerson(
            Core.Entities.SalesPerson salesPerson,
            [Frozen] Mock <IRepository <Core.Entities.SalesPerson> > salesPersonRepoMock,
            GetSalesPersonQueryHandler sut,
            GetSalesPersonQuery query
            )
        {
            //Arrange
            salesPersonRepoMock.Setup(x => x.GetBySpecAsync(
                                          It.IsAny <GetSalesPersonSpecification>(),
                                          It.IsAny <CancellationToken>()
                                          ))
            .ReturnsAsync(salesPerson);

            //Act
            var result = await sut.Handle(query, CancellationToken.None);

            //Assert
            result.Should().NotBeNull();
            salesPersonRepoMock.Verify(x => x.GetBySpecAsync(
                                           It.IsAny <GetSalesPersonSpecification>(),
                                           It.IsAny <CancellationToken>()
                                           ));

            result.FullName().Should().Be(salesPerson.FullName);
        }
        public void Handle_SalesPersonsNull_ThrowsArgumentNullException(
            [Frozen] Mock <IRepository <Core.Entities.SalesPerson> > salesPersonRepoMock,
            GetSalesPersonQueryHandler sut,
            GetSalesPersonQuery query
            )
        {
            //Arrange
            salesPersonRepoMock.Setup(x => x.GetBySpecAsync(
                                          It.IsAny <GetSalesPersonSpecification>(),
                                          It.IsAny <CancellationToken>()
                                          ))
            .ReturnsAsync((Core.Entities.SalesPerson)null);

            //Act
            Func <Task> func = async() => await sut.Handle(query, CancellationToken.None);

            //Assert
            func.Should().ThrowAsync <ArgumentNullException>()
            .WithMessage("Value cannot be null. (Parameter 'salesPerson')");
        }