using System; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using AutoFixture; using CoreUnitTests.Infrastructure; using CoreUnitTests.Infrastructure.Model; using FluentAssertions; using MongoDB.Driver; using MongoDbGenericRepository.DataAccess.Update; using Moq; using Xunit; namespace CoreUnitTests.BaseMongoRepositoryTests.UpdateTests; public class UpdateOneAsyncTests : TestMongoRepositoryContext { private readonly UpdateDefinition updateDefinition = Builders.Update.Set(x => x.SomeContent, "Updated"); private readonly Expression> fieldExpression = x => x.SomeContent; private readonly FilterDefinition filterDefinition = Builders.Filter.Eq(x => x.SomeContent, "SomeContent"); private readonly Expression> filterExpression = x => x.SomeContent == "SomeContent"; [Fact] public async Task WithDocument_ShouldUpdateOne() { // Arrange var document = Fixture.Create(); Updater = new Mock(); Updater .Setup(x => x.UpdateOneAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(document); // Assert Updater.Verify(x => x.UpdateOneAsync(document, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithDocumentAndCancellationToken_ShouldUpdateOne() { // Arrange var document = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup(x => x.UpdateOneAsync(It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(document, token); // Assert Updater.Verify(x => x.UpdateOneAsync(document, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithDocumentAndUpdateDefinition_ShouldUpdateOne() { // Arrange var document = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(document, updateDefinition); // Assert Updater.Verify( x => x.UpdateOneAsync( document, updateDefinition, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithDocumentAndUpdateDefinitionAndCancellationToken_ShouldUpdateOne() { // Arrange var document = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(document, updateDefinition, token); // Assert Updater.Verify( x => x.UpdateOneAsync( document, updateDefinition, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithDocumentAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var document = Fixture.Create(); var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny(), It.IsAny>>(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(document, fieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync( document, fieldExpression, value, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithDocumentAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var document = Fixture.Create(); var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny(), It.IsAny>>(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(document, fieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync( document, fieldExpression, value, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterDefinitionAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterDefinition, fieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync( filterDefinition, fieldExpression, value, null, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterDefinitionAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterDefinition, fieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync( filterDefinition, fieldExpression, value, null, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterDefinitionAndFieldExpressionAndValueAndPartitionKey_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterDefinition, fieldExpression, value, partitionKey); // Assert Updater.Verify( x => x.UpdateOneAsync( filterDefinition, fieldExpression, value, partitionKey, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterDefinitionAndFieldExpressionAndValueAndPartitionKeyAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterDefinition, fieldExpression, value, partitionKey, token); // Assert Updater.Verify( x => x.UpdateOneAsync( filterDefinition, fieldExpression, value, partitionKey, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterExpressionAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterExpression, fieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync( filterExpression, fieldExpression, value, null, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterExpressionAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterExpression, fieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync( filterExpression, fieldExpression, value, null, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterExpressionAndFieldExpressionAndValueAndPartitionKey_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterExpression, fieldExpression, value, partitionKey); // Assert Updater.Verify( x => x.UpdateOneAsync( filterExpression, fieldExpression, value, partitionKey, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task WithFilterExpressionAndFieldExpressionAndValueAndPartitionKeyAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync( It.IsAny>>(), It.IsAny>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync(filterExpression, fieldExpression, value, partitionKey, token); // Assert Updater.Verify( x => x.UpdateOneAsync( filterExpression, fieldExpression, value, partitionKey, token), Times.Once); result.Should().BeTrue(); } #region Keyed private readonly UpdateDefinition> keyedUpdateDefinition = Builders>.Update.Set(x => x.SomeContent, "Updated"); private readonly Expression, string>> keyedFieldExpression = x => x.SomeContent; private readonly FilterDefinition> keyedFilterDefinition = Builders>.Filter.Eq(x => x.Id, 1); private readonly Expression, bool>> keyedFilterExpression = x => x.SomeContent == "SomeContent"; [Fact] public async Task Keyed_WithDocument_ShouldUpdateOne() { // Arrange var document = Fixture.Create>(); Updater = new Mock(); Updater .Setup(x => x.UpdateOneAsync, int>(It.IsAny>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(document); // Assert Updater.Verify(x => x.UpdateOneAsync, int>(document, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithDocumentAndCancellationToken_ShouldUpdateOne() { // Arrange var document = Fixture.Create>(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup(x => x.UpdateOneAsync, int>(It.IsAny>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(document, token); // Assert Updater.Verify(x => x.UpdateOneAsync, int>(document, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithDocumentAndUpdateDefinition_ShouldUpdateOne() { // Arrange var document = Fixture.Create>(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int>( It.IsAny>(), It.IsAny>>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(document, keyedUpdateDefinition); // Assert Updater.Verify( x => x.UpdateOneAsync, int>( document, keyedUpdateDefinition, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithDocumentAndUpdateDefinitionAndCancellationToken_ShouldUpdateOne() { // Arrange var document = Fixture.Create>(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int>( It.IsAny>(), It.IsAny>>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(document, keyedUpdateDefinition, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int>( document, keyedUpdateDefinition, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithDocumentAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var document = Fixture.Create>(); var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(document, keyedFieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( document, keyedFieldExpression, value, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithDocumentAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var document = Fixture.Create>(); var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(document, keyedFieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( document, keyedFieldExpression, value, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterDefinitionAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterDefinition, keyedFieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( keyedFilterDefinition, keyedFieldExpression, value, null, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterDefinitionAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterDefinition, keyedFieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( keyedFilterDefinition, keyedFieldExpression, value, null, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterDefinitionAndFieldExpressionAndValueAndPartitionKey_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterDefinition, keyedFieldExpression, value, partitionKey); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( keyedFilterDefinition, keyedFieldExpression, value, partitionKey, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterDefinitionAndFieldExpressionAndValueAndPartitionKeyAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterDefinition, keyedFieldExpression, value, partitionKey, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( keyedFilterDefinition, keyedFieldExpression, value, partitionKey, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterExpressionAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterExpression, keyedFieldExpression, value); // Assert var expectedFilter = Builders>.Filter.Where(keyedFilterExpression); Updater.Verify( x => x.UpdateOneAsync, int, string>( It.Is>>(y => y.EquivalentTo(expectedFilter)), keyedFieldExpression, value, null, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterExpressionAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterExpression, keyedFieldExpression, value, token); // Assert var expectedFilter = Builders>.Filter.Where(keyedFilterExpression); Updater.Verify( x => x.UpdateOneAsync, int, string>( It.Is>>(y => y.EquivalentTo(expectedFilter)), keyedFieldExpression, value, null, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterExpressionAndFieldExpressionAndValueAndPartitionKey_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterExpression, keyedFieldExpression, value, partitionKey); // Assert var expectedFilter = Builders>.Filter.Where(keyedFilterExpression); Updater.Verify( x => x.UpdateOneAsync, int, string>( It.Is>>(y => y.EquivalentTo(expectedFilter)), keyedFieldExpression, value, partitionKey, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithFilterExpressionAndFieldExpressionAndValueAndPartitionKeyAndCancellationToken_ShouldUpdateOne() { // Arrange var value = Fixture.Create(); var partitionKey = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(keyedFilterExpression, keyedFieldExpression, value, partitionKey, token); // Assert var expectedFilter = Builders>.Filter.Where(keyedFilterExpression); Updater.Verify( x => x.UpdateOneAsync, int, string>( It.Is>>(y => y.EquivalentTo(expectedFilter)), keyedFieldExpression, value, partitionKey, token), Times.Once); result.Should().BeTrue(); } #endregion #region ClientSession [Fact] public async Task Keyed_WithClientSessionHandlerAndDocument_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var document = Fixture.Create>(); Updater = new Mock(); Updater .Setup(x => x.UpdateOneAsync, int>( It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(session, document); // Assert Updater.Verify( x => x.UpdateOneAsync, int>( session, document, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndDocumentAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var document = Fixture.Create>(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup(x => x.UpdateOneAsync, int>( It.IsAny(), It.IsAny>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(session, document, token); // Assert Updater.Verify(x => x.UpdateOneAsync, int>(session, document, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndDocumentAndUpdateDefinition_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var document = Fixture.Create>(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int>( It.IsAny(), It.IsAny>(), It.IsAny>>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(session, document, keyedUpdateDefinition); // Assert Updater.Verify( x => x.UpdateOneAsync, int>( session, document, keyedUpdateDefinition, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndDocumentAndUpdateDefinitionAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var document = Fixture.Create>(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int>( It.IsAny(), It.IsAny>(), It.IsAny>>(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int>(session, document, keyedUpdateDefinition, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int>( session, document, keyedUpdateDefinition, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndDocumentAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var document = Fixture.Create>(); var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, document, keyedFieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, document, keyedFieldExpression, value, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndDocumentAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var document = Fixture.Create>(); var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, document, keyedFieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, document, keyedFieldExpression, value, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterDefinitionAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterDefinition, keyedFieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterDefinition, keyedFieldExpression, value, null, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterDefinitionAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterDefinition, keyedFieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterDefinition, keyedFieldExpression, value, null, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterDefinitionAndFieldExpressionAndValueAndPartitionKey_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); var partitionKey = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterDefinition, keyedFieldExpression, value, partitionKey); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterDefinition, keyedFieldExpression, value, partitionKey, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterDefinitionAndFieldExpressionAndValueAndPartitionKeyAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); var partitionKey = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterDefinition, keyedFieldExpression, value, partitionKey, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterDefinition, keyedFieldExpression, value, partitionKey, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterExpressionAndFieldExpressionAndValue_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny, bool>>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterExpression, keyedFieldExpression, value); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterExpression, keyedFieldExpression, value, null, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterExpressionAndFieldExpressionAndValueAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny, bool>>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterExpression, keyedFieldExpression, value, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterExpression, keyedFieldExpression, value, null, token), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterExpressionAndFieldExpressionAndValueAndPartitionKey_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); var partitionKey = Fixture.Create(); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny, bool>>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterExpression, keyedFieldExpression, value, partitionKey); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterExpression, keyedFieldExpression, value, partitionKey, CancellationToken.None), Times.Once); result.Should().BeTrue(); } [Fact] public async Task Keyed_WithClientSessionHandlerAndFilterExpressionAndFieldExpressionAndValueAndPartitionKeyAndCancellationToken_ShouldUpdateOne() { // Arrange var session = new Mock().Object; var value = Fixture.Create(); var partitionKey = Fixture.Create(); var token = new CancellationToken(true); Updater = new Mock(); Updater .Setup( x => x.UpdateOneAsync, int, string>( It.IsAny(), It.IsAny, bool>>>(), It.IsAny, string>>>(), It.IsAny(), It.IsAny(), It.IsAny())) .ReturnsAsync(true); // Act var result = await Sut.UpdateOneAsync, int, string>(session, keyedFilterExpression, keyedFieldExpression, value, partitionKey, token); // Assert Updater.Verify( x => x.UpdateOneAsync, int, string>( session, keyedFilterExpression, keyedFieldExpression, value, partitionKey, token), Times.Once); result.Should().BeTrue(); } #endregion }