示例#1
0
 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}";
 }
示例#2
0
        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> >());
        }