Example #1
0
        public void GetEntityTypesTest()
        {
            var types         = new HashSet <Type>();
            var acceptedTypes = new[]
            {
                typeof(AppTask),
                typeof(AppUser),
                typeof(Project),
                typeof(Tag)
            };

            using (var ribEfTestContext = new RibEfTestContext())
            {
                var gettedTypes = ribEfTestContext.GetEntityTypes(typeof(RibEfTestContext).Assembly);
                foreach (var gettedType in gettedTypes)
                {
                    Assert.IsTrue(types.Add(gettedType));
                }
            }
            Assert.AreEqual(acceptedTypes.Length, types.Count);
            foreach (var acceptedType in acceptedTypes)
            {
                Assert.IsTrue(types.Contains(acceptedType));
            }
        }
        public void InvokeTest()
        {
            var invoker = new InterceptorsInvoker();
            var mf      = new MockRepository(MockBehavior.Strict);


            var i1 = mf.Create <IInterceptor>();
            var i2 = mf.Create <IInterceptor>();
            var i3 = mf.Create <IInterceptor>();

            var ctx      = new RibEfTestContext();
            var appTask1 = new AppTask {
                Id = 1
            };
            var appTask2 = new AppTask {
                Id = 2
            };

            ctx.Set <AppTask>().Attach(appTask1);
            ctx.Set <AppTask>().Attach(appTask2);

            var e1 = ctx.Entry(appTask1);
            var e2 = ctx.Entry(appTask2);

            var callOrder = 0;

            i3.Setup(x => x.IsApplicable(e1)).Returns(false).Verifiable();
            i3.Setup(x => x.IsApplicable(e2)).Returns(false).Verifiable();

            i1.Setup(x => x.IsApplicable(e1)).Returns(true).Verifiable();
            i2.Setup(x => x.IsApplicable(e1)).Returns(true).Verifiable();

            i1.Setup(x => x.Order(e1)).Returns(1).Verifiable();
            i2.Setup(x => x.Order(e1)).Returns(2).Verifiable();

            i1.Setup(x => x.BeforeSave(e1)).Callback(() => Assert.AreEqual(0, callOrder++)).Verifiable();
            i2.Setup(x => x.BeforeSave(e1)).Callback(() => Assert.AreEqual(1, callOrder++)).Verifiable();

            i1.Setup(x => x.IsApplicable(e2)).Returns(true).Verifiable();
            i2.Setup(x => x.IsApplicable(e2)).Returns(true).Verifiable();

            i1.Setup(x => x.Order(e2)).Returns(2).Verifiable();
            i2.Setup(x => x.Order(e2)).Returns(1).Verifiable();

            i1.Setup(x => x.BeforeSave(e2)).Callback(() => Assert.AreEqual(3, callOrder++)).Verifiable();
            i2.Setup(x => x.BeforeSave(e2)).Callback(() => Assert.AreEqual(2, callOrder++)).Verifiable();

            invoker.InvokeBeforeSave(new[] { i1.Object, i2.Object, i3.Object }, new DbEntityEntry[] { e1, e2 });

            Assert.AreEqual(4, callOrder);
            mf.VerifyAll();
        }
Example #3
0
        public void BeforeSaveTest()
        {
            var ctx = new RibEfTestContext();

            var t1 = new AppTask {
                Id = 1
            };

            ctx.Tasks.Add(t1);
            var t1e     = ctx.Entry(t1);
            var invoked = false;
            var ic      = new TestInterceptor(t =>
            {
                Assert.AreEqual(t1, t);
                invoked = true;
            });

            ic.BeforeSave(t1e);
            Assert.IsTrue(invoked);
        }
Example #4
0
        public void IsApplicableTest()
        {
            var ic  = new TestInterceptor();
            var ctx = new RibEfTestContext();

            var t1 = new AppTask {
                Id = 1
            };
            var t2 = new AppTask {
                Id = 2
            };

            var t3 = new AppTask();

            var p1 = new Project {
                Id = 1
            };
            var p2 = new Project();

            ctx.Tasks.Attach(t1);
            ctx.Tasks.Attach(t2);
            ctx.Tasks.Add(t3);
            ctx.Set <Project>().Attach(p1);
            ctx.Set <Project>().Add(p2);

            var t1e = ctx.Entry(t1);
            var t2e = ctx.Entry(t2);
            var t3e = ctx.Entry(t3);
            var p1e = ctx.Entry(p1);
            var p2e = ctx.Entry(p2);

            Assert.IsFalse(ic.IsApplicable(t1e));
            Assert.IsFalse(ic.IsApplicable(t2e));
            Assert.IsTrue(ic.IsApplicable(t3e));
            Assert.IsFalse(ic.IsApplicable(p1e));
            Assert.IsFalse(ic.IsApplicable(p2e));
        }