Beispiel #1
0
        public void NotifyByWhereAndTwoConditionTest()
        {
            using (var subscruber = new BatchEventTestSubscruber()) {
                NotifyConfiguration.Instance.BatchSubscribe(subscruber.Handler)
                .IfEntity <SimpleEntity>()
                .AndWhere(x => x.Text.Contains("1"))
                .AndWhere(x => x.Text.Contains("2"));

                using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                    var entity1 = new SimpleEntity {
                        Text = "1,2"
                    };
                    uow.Save(entity1);
                    var entity2 = new SimpleEntity {
                        Text = "2"
                    };
                    uow.Save(entity2);
                    var entity3 = new SimpleEntity {
                        Text = "1"
                    };
                    uow.Save(entity3);
                    uow.Commit();
                }

                Assert.That(subscruber.calls.Count, Is.EqualTo(1));
                var changeEvents = subscruber.calls.First();
                Assert.That(changeEvents.Count(), Is.EqualTo(1));
                Assert.That(changeEvents.First().EventType, Is.EqualTo(TypeOfChangeEvent.Insert));
                var entity = changeEvents.First().GetEntity <SimpleEntity>();
                Assert.That(entity.Text, Is.EqualTo("1,2"));
            }
        }
Beispiel #2
0
        public void BatchSubscribe_InsertAndUpdateAndDelete_GetOldAndNewPropertyValuesTest()
        {
            using (var subscruber = new BatchEventTestSubscruber()) {
                NotifyConfiguration.Instance.BatchSubscribeOnEntity <SimpleEntity>(subscruber.Handler);

                using (var uow = UnitOfWorkFactory.CreateWithNewRoot <SimpleEntity>()) {
                    uow.Root.Text = "Test text";
                    uow.Save();
                    uow.Session.Evict(uow.Root);

                    var loadedEntity = uow.GetById <SimpleEntity>(1);
                    loadedEntity.Text = "New test text";
                    uow.Save(loadedEntity);
                    uow.Commit();

                    uow.Delete(loadedEntity);
                    uow.Commit();
                }
                Assert.That(subscruber.calls.Count, Is.EqualTo(3));

                var event1 = subscruber.calls[0].First();
                Assert.That(event1.GetOldValue <SimpleEntity>(x => x.Text), Is.Null);
                Assert.That(event1.GetNewValue <SimpleEntity>(x => x.Text), Is.EqualTo("Test text"));

                var event2 = subscruber.calls[1].First();
                Assert.That(event2.GetOldValue <SimpleEntity>(x => x.Text), Is.EqualTo("Test text"));
                Assert.That(event2.GetNewValue <SimpleEntity>(x => x.Text), Is.EqualTo("New test text"));

                var event3 = subscruber.calls[2].First();
                Assert.That(event3.GetOldValue <SimpleEntity>(x => x.Text), Is.EqualTo("New test text"));
                Assert.That(event3.GetNewValue <SimpleEntity>(x => x.Text), Is.Null);
            }
        }
Beispiel #3
0
        public void DirectBatchSubscribe_NotifySaveEventTest()
        {
            using (var subscruber = new BatchEventTestSubscruber()) {
                NotifyConfiguration.Instance.BatchSubscribeOnEntity <SimpleEntity>(subscruber.Handler);

                using (var uow = UnitOfWorkFactory.CreateWithNewRoot <SimpleEntity>()) {
                    uow.Save();
                }
                Assert.That(subscruber.calls.Count, Is.EqualTo(1));
            }
        }
Beispiel #4
0
        public void NotifyOnlyDeleteEventTest()
        {
            using (var subscruber = new BatchEventTestSubscruber()) {
                NotifyConfiguration.Instance.BatchSubscribe(subscruber.Handler)
                .IfEntity <SimpleEntity>().AndChangeType(TypeOfChangeEvent.Delete);

                using (var uow = UnitOfWorkFactory.CreateWithNewRoot <SimpleEntity>()) {
                    uow.Save();
                    uow.Session.Evict(uow.Root);

                    var loadedEntity = uow.GetById <SimpleEntity>(1);
                    uow.Delete(loadedEntity);
                    uow.Commit();
                }

                Assert.That(subscruber.calls.Count, Is.EqualTo(1));
                var changeEvents = subscruber.calls.First();
                Assert.That(changeEvents.First().EventType, Is.EqualTo(TypeOfChangeEvent.Delete));
            }
        }