using System.Collections.Generic; using System.Threading; using CoreUnitTests.Infrastructure; using MongoDB.Driver; using MongoDbGenericRepository.DataAccess.Read; using Moq; namespace CoreUnitTests.DataAccessTests.MongoDbReaderTests; public class BaseReaderTests : GenericTestContext { protected Mock> SetupSyncCursor(List documents) { var asyncCursor = MockOf>(); var moveNextSequence = asyncCursor .SetupSequence(x => x.MoveNext(It.IsAny())); var currentSequence = asyncCursor .SetupSequence(x => x.Current); foreach (var projection in documents) { moveNextSequence.Returns(true); currentSequence.Returns(new[] {projection}); } moveNextSequence.Returns(false); return asyncCursor; } protected Mock> SetupAsyncCursor(List documents) { var asyncCursor = MockOf>(); var moveNextSequence = asyncCursor .SetupSequence(x => x.MoveNextAsync(It.IsAny())); var currentSequence = asyncCursor .SetupSequence(x => x.Current); foreach (var projection in documents) { moveNextSequence.ReturnsAsync(true); currentSequence.Returns(new[] {projection}); } moveNextSequence.ReturnsAsync(false); return asyncCursor; } protected static void SetupFindAsync(Mock> collection, Mock> asyncCursor) => collection .Setup( x => x.FindAsync( It.IsAny>(), It.IsAny>(), It.IsAny())) .ReturnsAsync(asyncCursor.Object); protected static void SetupFindSync(Mock> collection, Mock> asyncCursor) => collection .Setup( x => x.FindSync( It.IsAny>(), It.IsAny>(), It.IsAny())) .Returns(asyncCursor.Object); }