protected NativeMemberAssignmentFunctionsTests(
     IContextOptionsFactory <DynamicDbContext> contextOptionsFactory,
     Action <DynamicDbContext> setupDbContext = null,
     Action <ModelBuilder> setupModelBuilder  = null)
 {
     ContextOptionsFactory = contextOptionsFactory;
     SetupDbContext        = setupDbContext;
     SetupModelBuilder     = setupModelBuilder;
 }
示例#2
0
 public static DestinationEntity CheckTrigger(
     this IContextOptionsFactory <DynamicDbContext> contextOptionsFactory,
     Expression <Func <SourceEntity, DestinationEntity> > triggerExpression,
     Action <DynamicDbContext> setupDbContext,
     Action <ModelBuilder> setupModelBuilder,
     SourceEntity source)
 {
     return(Assert.Single(contextOptionsFactory.CheckTrigger(triggerExpression, setupDbContext, setupModelBuilder, new[] { source })));
 }
示例#3
0
        public static DynamicDbContext GetDbContext(IContextOptionsFactory <DynamicDbContext> optionsFactory, Action <ModelBuilder> setupDbContext)
        {
            var contextOptions = optionsFactory.CreateDbContextOptions();

            var context = new DynamicDbContext(contextOptions, setupDbContext);

            context.Database.EnsureCreated();

            return(context);
        }
示例#4
0
        /// <summary>
        /// Creates new database with the trigger, then insert into a database passed <see cref="SourceEntity"/>
        /// and return inserted through trigger <see cref="DestinationEntity"/>.
        /// </summary>
        /// <param name="contextOptionsFactory">Factory to initialize new <see cref="DynamicDbContext"/></param>
        /// <param name="triggerExpression">Expression which describe how to create entity in the table with <see cref="DestinationEntity"/>
        ///     basing on passed <see cref="SourceEntity"/></param>
        /// <param name="setupDbContext">Actions with DbContext before a test will start</param>
        /// <param name="setupModelBuilder">Actions with DbContext model builder before a test will start</param>
        /// <param name="sourceEntities">Entities to insert in the table</param>
        /// <returns>Entity inserted by trigger</returns>
        public static DestinationEntity[] CheckTrigger(
            this IContextOptionsFactory <DynamicDbContext> contextOptionsFactory,
            Expression <Func <SourceEntity, DestinationEntity> > triggerExpression,
            Action <DynamicDbContext> setupDbContext,
            Action <ModelBuilder> setupModelBuilder,
            params SourceEntity[] sourceEntities)
        {
            using var dbContext = DynamicDbContextFactory.GetDbContext(
                      contextOptionsFactory, builder =>
            {
                builder.Entity <SourceEntity>()
                .AfterInsert(trigger => trigger.Action(
                                 action => action.Insert(triggerExpression)));
                setupModelBuilder?.Invoke(builder);
            });

            setupDbContext?.Invoke(dbContext);
            dbContext.SourceEntities.AddRange(sourceEntities);
            dbContext.SaveChanges();

            return(dbContext.DestinationEntities.ToArray());
        }
 protected BaseTriggerTests(IContextOptionsFactory <DynamicDbContext> contextOptionsFactory)
 {
     _contextOptionsFactory = contextOptionsFactory;
 }
 protected NativeStringFunctionTests(IContextOptionsFactory <DynamicDbContext> contextOptionsFactory, Action <DynamicDbContext> setupDbContext = null)
 {
     ContextOptionsFactory = contextOptionsFactory;
     SetupDbContext        = setupDbContext;
 }
 protected UpdateTests(IContextOptionsFactory <DynamicDbContext> contextOptionsFactory) : base(contextOptionsFactory)
 {
 }
示例#8
0
 protected InsertTests(IContextOptionsFactory <DynamicDbContext> contextOptionsFactory) : base(contextOptionsFactory)
 {
 }