示例#1
0
        public void ShouldRunPostSaveHooks_WhenExceptionOccured_OnSaveAsync()
        {
            var dbContext = new DbHookContextStub();
            var hook1     = Substitute.For <IDbHook>();
            var hook2     = Substitute.For <IDbHook>();

            dbContext.AddPostSaveHook(hook1);
            dbContext.AddPostSaveHook(hook2);

            var sameKey = Guid.NewGuid();

            dbContext.Foos.Add(new FooEntityStub()
            {
                Id = sameKey
            });
            dbContext.Foos.Add(new FooEntityStub()
            {
                Id = sameKey
            });

            try
            {
                dbContext.SaveChangesAsync().Wait();
            }
            catch (AggregateException) {}

            hook1.Received(2).HookEntry(Arg.Any <IDbEntityEntry>());
            hook2.Received(2).HookEntry(Arg.Any <IDbEntityEntry>());
        }
示例#2
0
        public void PostSaveHookShouldReflectPreSaveEntityState()
        {
            var dbContext = new DbHookContextStub();
            var hook1     = Substitute.For <IDbHook>();

            dbContext.AddPostSaveHook(hook1);

            var foo = new FooEntityStub();

            dbContext.Foos.Add(foo);
            dbContext.SaveChanges();

            hook1.Received(1).HookEntry(Arg.Is <IDbEntityEntry>(entry => entry.State == EntityState.Added));
        }
示例#3
0
        public void ShouldRunPostSaveHooks_OnSave()
        {
            var dbContext = new DbHookContextStub();
            var hook1     = Substitute.For <IDbHook>();
            var hook2     = Substitute.For <IDbHook>();

            dbContext.AddPostSaveHook(hook1);
            dbContext.AddPostSaveHook(hook2);

            var foo = new FooEntityStub();

            dbContext.Foos.Add(foo);
            dbContext.SaveChanges();

            hook1.Received(1).HookEntry(Arg.Any <IDbEntityEntry>());
            hook2.Received(1).HookEntry(Arg.Any <IDbEntityEntry>());
        }
示例#4
0
        public void ShouldNotExecutePostSaveHooks_WhenCanceled_OnSaveChangesAsync()
        {
            var dbContext = new DbHookContextStub();
            var hook1     = Substitute.For <IDbHook>();

            dbContext.AddPostSaveHook(hook1);

            var foo = new FooEntityStub();

            dbContext.Foos.Add(foo);
            _cancellationTokenSource.Cancel();

            try
            {
                dbContext.SaveChangesAsync(_cancellationTokenSource.Token).Wait();
            }
            catch (AggregateException) { }

            hook1.DidNotReceive().HookEntry(Arg.Any <IDbEntityEntry>());
        }
示例#5
0
 protected override IDbContext SetupDbContext()
 {
     return(_dbHookContext = new DbHookContextStub());
 }
示例#6
0
 public void Setup()
 {
     DbHookContextStub.ResetConnections();
 }
示例#7
0
 public void Setup()
 {
     DbHookContextStub.ResetConnections();
     _cancellationTokenSource = new CancellationTokenSource();
 }