public CosmosRepository( CosmosClient client, IOptions <CosmosDBRepositoryOptions <T> > options, ILogger <CosmosRepository <T> > logger, ICosmosDBRepositoryMetricsTracker <T> metricsTracker) { this._client = client; this._options = options.Value; this._logger = logger; this._metricsTracker = metricsTracker; this._collectionIdentifier = $"{options.Value.DatabaseId}.{options.Value.CollectionId}"; }
public CosmosDBRespositoryTests() { var servicesBuilder = new ServiceCollection(); servicesBuilder.AddLogging(logging => logging.AddDebug()); var services = servicesBuilder.BuildServiceProvider(); _loggerDebug = services.GetService < ILogger < CosmosRepository < InternalDroneUtilization> > >(); _fakeResults = new List <InternalDroneUtilization> { new InternalDroneUtilization { Id = "d0001", PartitionKey = "o00042", OwnerId = "o00042", Month = 6, Year = 2019, TraveledMiles = 10d, AssignedHours = 1d, DocumentType = typeof(InternalDroneUtilization).Name }, new InternalDroneUtilization { Id = "d0002", PartitionKey = "o00042", OwnerId = "o00042", Month = 6, Year = 2019, TraveledMiles = 32d, AssignedHours = 2d, DocumentType = typeof(InternalDroneUtilization).Name } }; _clientMockObject = Mock.Of <CosmosClient>(c => c.ClientOptions == new CosmosClientOptions()); var responseMock = new Mock <FeedResponse <InternalDroneUtilization> >(); responseMock.Setup(r => r.Count).Returns(() => _fakeResults.Count); responseMock.Setup(r => r.GetEnumerator()).Returns(() => _fakeResults.GetEnumerator()); var mockFeedIterator = new Mock <FeedIterator <InternalDroneUtilization> >(); mockFeedIterator.Setup(i => i.HasMoreResults).Returns(new Queue <bool>(new[] { true, false }).Dequeue); mockFeedIterator.Setup(i => i.ReadNextAsync(It.IsAny <CancellationToken>())).ReturnsAsync(responseMock.Object); _containerMockObject = Mock.Of <Container>(c => c.GetItemQueryIterator <InternalDroneUtilization>(It.IsAny <QueryDefinition>(), It.IsAny <string>(), It.IsAny <QueryRequestOptions>()) == mockFeedIterator.Object); var fakeOptionsValue = new CosmosDBRepositoryOptions <InternalDroneUtilization> { Container = _containerMockObject }; var optionsMock = new Mock < IOptions < CosmosDBRepositoryOptions < InternalDroneUtilization> > >(); optionsMock .Setup(o => o.Value) .Returns(fakeOptionsValue); _optionsMockObject = optionsMock.Object; _metricsTrackerMockObject = Mock.Of <ICosmosDBRepositoryMetricsTracker <InternalDroneUtilization> >( t => t.GetQueryMetricsTracker( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>(), It.IsAny <ConnectionMode>(), It.IsAny <int>()) == Mock.Of <ICosmosDBRepositoryQueryMetricsTracker <InternalDroneUtilization> >()); }