Example #1
0
        public async Task SumAsync_NullableDecimal_HasValue()
        {
            EntityMapping.RegisterType(typeof(QueryableAsyncSumModel));

            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var provider   = new MongoFrameworkQueryProvider <QueryableAsyncSumModel>(connection);
            var queryable  = new MongoFrameworkQueryable <QueryableAsyncSumModel>(provider);

            context.ChangeTracker.SetEntityState(new QueryableAsyncSumModel {
                Title = "SumAsync_NullableDecimal_HasValue.1", NullableDecimalNumber = 5
            }, EntityEntryState.Added);
            context.ChangeTracker.SetEntityState(new QueryableAsyncSumModel {
                Title = "SumAsync_NullableDecimal_HasValue.2", NullableDecimalNumber = 9
            }, EntityEntryState.Added);
            context.ChangeTracker.SetEntityState(new QueryableAsyncSumModel {
                Title = "SumAsync_NullableDecimal_HasValue.3"
            }, EntityEntryState.Added);
            context.SaveChanges();

            var a      = queryable.Select(e => e.NullableDecimalNumber).Sum();
            var result = await queryable.Select(e => e.NullableDecimalNumber).SumAsync();

            Assert.AreEqual(14, result);
        }
Example #2
0
        public void EntityProcessorsNotFiredWhenNotTEntity()
        {
            var database = TestConfiguration.GetDatabase();

            new EntityMapper <MongoFrameworkQueryableModel>();
            var collection          = database.GetCollection <MongoFrameworkQueryableModel>("MongoFrameworkQueryableModel");
            var underlyingQueryable = collection.AsQueryable();
            var queryable           = new MongoFrameworkQueryable <MongoFrameworkQueryableModel, MongoFrameworkQueryableModel>(underlyingQueryable);

            var processor = new TestProcessor <MongoFrameworkQueryableModel>();

            queryable.EntityProcessors.Add(processor);

            var entityContainer = new DbEntityCollection <MongoFrameworkQueryableModel>();
            var writer          = new DbEntityWriter <MongoFrameworkQueryableModel>(database);

            entityContainer.Update(new MongoFrameworkQueryableModel {
                Title = "EntityProcessorNoFireTest"
            }, DbEntityEntryState.Added);
            writer.Write(entityContainer);

            foreach (var titles in queryable.Select(e => e.Title))
            {
                //Do nothing
            }

            Assert.IsFalse(processor.EntityProcessed);
        }
Example #3
0
        public void EntityProcessorsNotFiredWhenNotTEntity()
        {
            EntityMapping.RegisterType(typeof(MongoFrameworkQueryableModel));

            var connection          = TestConfiguration.GetConnection();
            var collection          = connection.GetDatabase().GetCollection <MongoFrameworkQueryableModel>(nameof(MongoFrameworkQueryableModel));
            var underlyingQueryable = collection.AsQueryable();
            var queryable           = new MongoFrameworkQueryable <MongoFrameworkQueryableModel, MongoFrameworkQueryableModel>(connection, underlyingQueryable);

            var processor = new TestProcessor <MongoFrameworkQueryableModel>();

            queryable.EntityProcessors.Add(processor);

            var entityCollection = new EntityCollection <MongoFrameworkQueryableModel>();
            var writerPipeline   = new EntityWriterPipeline <MongoFrameworkQueryableModel>(connection);

            writerPipeline.AddCollection(entityCollection);
            entityCollection.Update(new MongoFrameworkQueryableModel {
                Title = "EntityProcessorNoFireTest"
            }, EntityEntryState.Added);
            writerPipeline.Write();

            foreach (var titles in queryable.Select(e => e.Title))
            {
                //Do nothing
            }

            Assert.IsFalse(processor.EntityProcessed);
        }
        public void EntityProcessorsNotFiredWhenNotTEntity_Select()
        {
            EntityMapping.RegisterType(typeof(MongoFrameworkQueryableModel));

            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var provider   = new MongoFrameworkQueryProvider <MongoFrameworkQueryableModel>(connection);
            var queryable  = new MongoFrameworkQueryable <MongoFrameworkQueryableModel>(provider);

            var processor = new TestProcessor <MongoFrameworkQueryableModel>();

            provider.EntityProcessors.Add(processor);

            context.ChangeTracker.SetEntityState(new MongoFrameworkQueryableModel {
                Title = "EntityProcessorsNotFiredWhenNotTEntity_Select"
            }, EntityEntryState.Added);
            context.SaveChanges();

            foreach (var titles in queryable.Select(e => e.Title))
            {
                //Do nothing
            }

            Assert.IsFalse(processor.EntityProcessed);
        }
Example #5
0
        public async Task SumAsync_NullableLong_NoValue()
        {
            EntityMapping.RegisterType(typeof(QueryableAsyncSumModel));

            var connection = TestConfiguration.GetConnection();
            var provider   = new MongoFrameworkQueryProvider <QueryableAsyncSumModel>(connection);
            var queryable  = new MongoFrameworkQueryable <QueryableAsyncSumModel>(provider);

            var result = await queryable.Select(e => e.NullableLongNumber).SumAsync();

            Assert.IsNull(result);
        }
        public async Task MinAsync_HasValues_Date()
        {
            EntityMapping.RegisterType(typeof(QueryableAsyncModel));

            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var provider   = new MongoFrameworkQueryProvider <QueryableAsyncModel>(connection);
            var queryable  = new MongoFrameworkQueryable <QueryableAsyncModel>(provider);

            context.ChangeTracker.SetEntityState(new QueryableAsyncModel {
                Title = "MinAsync_HasValues_Date.1", Date = new DateTime(2020, 3, 10, 0, 0, 0, DateTimeKind.Utc)
            }, EntityEntryState.Added);
            context.ChangeTracker.SetEntityState(new QueryableAsyncModel {
                Title = "MinAsync_HasValues_Date.2", Date = new DateTime(2020, 1, 10, 0, 0, 0, DateTimeKind.Utc)
            }, EntityEntryState.Added);
            context.SaveChanges();

            var result = await queryable.Select(e => e.Date).MinAsync();

            Assert.AreEqual(new DateTime(2020, 1, 10, 0, 0, 0, DateTimeKind.Utc), result);
        }
        public async Task MinAsync_HasValues_Number()
        {
            EntityMapping.RegisterType(typeof(QueryableAsyncModel));

            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var provider   = new MongoFrameworkQueryProvider <QueryableAsyncModel>(connection);
            var queryable  = new MongoFrameworkQueryable <QueryableAsyncModel>(provider);

            context.ChangeTracker.SetEntityState(new QueryableAsyncModel {
                Title = "MinAsync_HasValues_Number.1", IntNumber = 7
            }, EntityEntryState.Added);
            context.ChangeTracker.SetEntityState(new QueryableAsyncModel {
                Title = "MinAsync_HasValues_Number.2", IntNumber = 5
            }, EntityEntryState.Added);
            context.SaveChanges();

            var result = await queryable.Select(e => e.IntNumber).MinAsync();

            Assert.AreEqual(5, result);
        }
        public async Task MinAsync_NoValues()
        {
            EntityMapping.RegisterType(typeof(QueryableAsyncModel));

            var connection = TestConfiguration.GetConnection();
            var context    = new MongoDbContext(connection);
            var provider   = new MongoFrameworkQueryProvider <QueryableAsyncModel>(connection);
            var queryable  = new MongoFrameworkQueryable <QueryableAsyncModel>(provider);

            context.SaveChanges();

            await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await queryable.Select(e => e.IntNumber).MinAsync());
        }