public void QueryAsync_WhenQueryIsNull_ThrowsArgumentNullException()
        {
            QueryHandler sut = CreateSut();

            ArgumentNullException result = Assert.ThrowsAsync <ArgumentNullException>(async() => await sut.QueryAsync(null));

            Assert.That(result.ParamName, Is.EqualTo("query"));
        }
        public async Task QueryAsync_WhenCalled_AssertNumberWasCalledOnGetBudgetAccountGroupQuery()
        {
            QueryHandler sut = CreateSut();

            Mock <IGetBudgetAccountGroupQuery> queryMock = CreateQueryMock();
            await sut.QueryAsync(queryMock.Object);

            queryMock.Verify(m => m.Number, Times.Once);
        }
        public async Task QueryAsync_WhenCalled_ReturnsBudgetAccountGroupFromAccountingRepository()
        {
            IBudgetAccountGroup budgetAccountGroup = _fixture.Create <IBudgetAccountGroup>();
            QueryHandler        sut = CreateSut(budgetAccountGroup);

            IGetBudgetAccountGroupQuery query  = CreateQueryMock().Object;
            IBudgetAccountGroup         result = await sut.QueryAsync(query);

            Assert.That(result, Is.EqualTo(budgetAccountGroup));
        }
        public async Task QueryAsync_WhenCalled_AssertGetBudgetAccountGroupAsyncWasCalledOnAccountingRepository()
        {
            QueryHandler sut = CreateSut();

            int number = _fixture.Create <int>();
            IGetBudgetAccountGroupQuery query = CreateQueryMock(number).Object;
            await sut.QueryAsync(query);

            _accountingRepositoryMock.Verify(m => m.GetBudgetAccountGroupAsync(It.Is <int>(value => value == number)), Times.Once);
        }
        public async Task QueryAsync_WhenCalled_AssertValidateWasCalledOnGetBudgetAccountGroupQuery()
        {
            QueryHandler sut = CreateSut();

            Mock <IGetBudgetAccountGroupQuery> queryMock = CreateQueryMock();
            await sut.QueryAsync(queryMock.Object);

            queryMock.Verify(m => m.Validate(
                                 It.Is <IValidator>(value => value == _validatorMock.Object),
                                 It.Is <IAccountingRepository>(value => value == _accountingRepositoryMock.Object)),
                             Times.Once);
        }