public async Task QueryAsync_WhenQueryIsNotNullAndKeyValueEntryWasReturnedFromCommonRepository_ReturnNotNull()
        {
            QueryHandler sut = CreateSut();

            IKeyValueEntry result = await sut.QueryAsync(BuildPullKeyValueEntryQuery());

            Assert.That(result, Is.Not.Null);
        }
        public async Task QueryAsync_WhenQueryIsNotNull_AssertKeyWasCalledOnPullKeyValueEntryQuery()
        {
            QueryHandler sut = CreateSut();

            Mock <IPullKeyValueEntryQuery> pullKeyValueEntryQueryMock = BuildPullKeyValueEntryQueryMock();
            await sut.QueryAsync(pullKeyValueEntryQueryMock.Object);

            pullKeyValueEntryQueryMock.Verify(m => m.Key, Times.Once);
        }
        public async Task QueryAsync_WhenQueryIsNotNull_AssertValidateWasCalledOnPullKeyValueEntryQuery()
        {
            QueryHandler sut = CreateSut();

            Mock <IPullKeyValueEntryQuery> pullKeyValueEntryQueryMock = BuildPullKeyValueEntryQueryMock();
            await sut.QueryAsync(pullKeyValueEntryQueryMock.Object);

            pullKeyValueEntryQueryMock.Verify(m => m.Validate(It.Is <IValidator>(value => value != null && value == _validatorMock.Object)), Times.Once);
        }
        public async Task QueryAsync_WhenQueryIsNotNullAndKeyValueEntryWasReturnedFromCommonRepository_ReturnKeyValueEntryFromCommonRepository()
        {
            IKeyValueEntry keyValueEntry = _fixture.BuildKeyValueEntryMock <object>().Object;
            QueryHandler   sut           = CreateSut(keyValueEntry: keyValueEntry);

            IKeyValueEntry result = await sut.QueryAsync(BuildPullKeyValueEntryQuery());

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

            string key = _fixture.Create <string>();
            IPullKeyValueEntryQuery pullKeyValueEntryQuery = BuildPullKeyValueEntryQuery(key);
            await sut.QueryAsync(pullKeyValueEntryQuery);

            _commonRepositoryMock.Verify(m => m.PullKeyValueEntryAsync(It.Is <string>(value => string.CompareOrdinal(value, key) == 0)), Times.Once);
        }
        public void QueryAsync_WhenQueryIsNull_ThrowsArgumentNullException()
        {
            QueryHandler sut = CreateSut();

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

            // ReSharper disable PossibleNullReferenceException
            Assert.That(result.ParamName, Is.EqualTo("query"));
            // ReSharper restore PossibleNullReferenceException
        }