Example #1
0
        public void Load_DoesNotThrowException_WhenParametersArePopulated()
        {
            var configuration = new MongoConfiguration
            {
                ConnectionString = "A",
                Database         = "B"
            };

            var environment = new Mock <IHostingEnvironment>();

            environment.Setup(item => item.ApplicationName).Returns("C");
            environment.Setup(item => item.EnvironmentName).Returns("D");

            var context = new WebHostBuilderContext
            {
                HostingEnvironment = environment.Object
            };

            var repository = new Mock <ISettingsRepository>();
            var client     = new Mock <IMongoClient>();
            var database   = new Mock <IMongoDatabase>();
            var collection = new Mock <IMongoCollection <Setting> >();

            client.Setup(item => item.GetDatabase(It.IsAny <string>(), null)).Returns(database.Object);
            database.Setup(item => item.GetCollection <Setting>(It.IsAny <string>(), null)).Returns(collection.Object);
            collection.Setup(item => item.FindSync <Setting>(It.IsAny <FilterDefinition <Setting> >(), null, CancellationToken.None)).Returns((IAsyncCursor <Setting>)null);

            repository.Setup(item => item.CreateClient(It.IsAny <string>())).Returns(client.Object);

            var    source = new MongoConfigurationProvider(context, configuration, new Mock <IParser <string> >().Object, repository.Object);
            Action sut    = () => source.Load();

            sut.Should().NotThrow <Exception>();
        }
Example #2
0
        public void Load_PopulatesData_WhenSettingsAreFound()
        {
            var configuration = new MongoConfiguration
            {
                ConnectionString = "A",
                Database         = "B"
            };

            var environment = new Mock <IHostingEnvironment>();

            environment.Setup(item => item.ApplicationName).Returns("C");
            environment.Setup(item => item.EnvironmentName).Returns("D");

            var context = new WebHostBuilderContext
            {
                HostingEnvironment = environment.Object
            };

            var repository = new Mock <ISettingsRepository>();
            var client     = new Mock <IMongoClient>();
            var database   = new Mock <IMongoDatabase>();
            var collection = new Mock <IMongoCollection <Setting> >();
            var parser     = new Mock <IParser <string> >();
            var result     = new Mock <IAsyncCursor <Setting> >();

            client.Setup(item => item.GetDatabase(It.IsAny <string>(), null)).Returns(database.Object);
            database.Setup(item => item.GetCollection <Setting>(It.IsAny <string>(), null)).Returns(collection.Object);
            collection.Setup(item => item.FindSync <Setting>(It.IsAny <FilterDefinition <Setting> >(), null, CancellationToken.None)).Returns(result.Object);
            result.Setup(item => item.Current).Returns(new List <Setting> {
                new Setting {
                    Settings = "{\"E\":\"F\"}"
                }
            });

            repository.Setup(item => item.CreateClient(It.IsAny <string>())).Returns(client.Object);

            var sut = new MongoConfigurationProvider(context, configuration, parser.Object, repository.Object);

            sut.Load();

            parser.Verify(item => item.Parse(It.IsAny <string>()), Times.Once);
        }