示例#1
0
        public void ESLoadEvents()
        {
            FakeVersionedEntity feeOriginal = new FakeVersionedEntity();

            FakeVersionedEntity feeRestored = new FakeVersionedEntity(feeOriginal.Id);

            feeOriginal.RaiseFakeEvent(new FakeEvent()
            {
                TestString = "a"
            });
            feeOriginal.RaiseFakeEvent(new FakeEvent()
            {
                TestString = "b"
            });
            feeOriginal.RaiseFakeEvent(new FakeEvent()
            {
                TestString = "c"
            });

            FakeEventSourcedRepository.Save(feeOriginal);

            FakeEventSourcedRepository.Load(feeRestored);

            Assert.AreEqual(feeOriginal.FakeString, feeRestored.FakeString, "Not the same string.");
            Assert.AreEqual(feeOriginal.Events.Count, 0, "Original with events.");
            Assert.AreEqual(feeRestored.Events.Count, 0, "Restored with events.");
        }
示例#2
0
        public void ESSaveEntityFailedSaving()
        {
            testAction.MarkExceptionSavingDbSet <TimeoutException>(1, true);

            FakeVersionedEntity fee = new FakeVersionedEntity();

            fee.Events.Enqueue(new FakeEvent());
            FakeEventSourcedRepository.Save(fee);
        }
示例#3
0
        public void ESSaveEntityFailedPublishSuceeded()
        {
            testAction.MarkExceptionSavingDbSet <Exception>(1, false);

            FakeVersionedEntity fee = new FakeVersionedEntity();

            fee.Events.Enqueue(new FakeEvent());
            FakeEventSourcedRepository.Save(fee);

            Assert.IsTrue(fee.Events.Count == 0, "Must no be events pending in queue");
            Assert.AreEqual(Store.EnvelopeId.ToString(), fee.Id.ToString());
        }
示例#4
0
        public void ESSaveEntityFailedPublishing()
        {
            Guid g = Guid.NewGuid();
            FakeVersionedEntity fee = new FakeVersionedEntity();

            fee.Events.Enqueue(new FakeEvent());
            fee.Events.Enqueue(new FakeFailedEvent());
            fee.Events.Enqueue(new FakeEvent());
            FakeEventSourcedRepository.Save(fee);

            Assert.IsTrue(fee.Events.Count == 1, "One event pending in queue");
            Assert.AreEqual(Store.EnvelopeId.ToString(), typeof(FakeFailedEvent).Name);
        }
示例#5
0
        public void ESSaveEntity()
        {
            FakeEvent fe = new FakeEvent();

            FakeVersionedEntity fee = new FakeVersionedEntity();

            fee.Events.Enqueue(fe);
            FakeEventSourcedRepository.Save(fee);

            Assert.IsTrue(fee.Events.Count == 0, "Events in queue");
            Assert.IsTrue(String.IsNullOrEmpty(Store.EnvelopeId), "Different IDs");
            Assert.AreEqual(Store.Id, fee.Id, "Different IDs");
        }
示例#6
0
        public void ESSaveEntityFailedSavingAfterFailedPublishing()
        {
            testAction.MarkExceptionSavingDbSet <Exception>(1, false);

            FakeVersionedEntity fee = new FakeVersionedEntity();

            fee.Events.Enqueue(new FakeEvent());
            fee.Events.Enqueue(new FakeFailedEvent());
            fee.Events.Enqueue(new FakeEvent());
            FakeEventSourcedRepository.Save(fee);

            Assert.IsTrue(fee.Events.Count == 1, "One event pending in queue");
            Assert.AreEqual(Store.EnvelopeId.ToString(), typeof(FakeFailedEvent).Name);
        }
示例#7
0
文件: Core.cs 项目: crazyants/nCubed
        public void ESApplyEventsUsingRaise()
        {
            int expectedEvents  = 0;
            int expectedVersion = 3;

            string one   = "1+";
            string two   = "1=";
            string three = "2";

            Queue <IVersionedEvent> queue = new Queue <IVersionedEvent>();

            queue.Enqueue(new FakeEvent());

            FakeVersionedEntity fve = new FakeVersionedEntity();
            FakeEvent           fe1 = new FakeEvent()
            {
                TestString = one
            };

            fe1.Version = 1;
            FakeEvent fe2 = new FakeEvent()
            {
                TestString = two
            };

            fe2.Version = 2;
            FakeEvent fe3 = new FakeEvent()
            {
                TestString = three
            };

            fe3.Version = 3;

            List <FakeEvent> fes = new List <FakeEvent>()
            {
                fe1, fe2, fe3
            };

            fve.ApplyEvents(fes);

            Assert.AreEqual(fve.FakeString, one + two + three, "Event not applied");
            Assert.AreEqual(fve.Version, expectedVersion, "Version does not mismatch");
            Assert.AreEqual(fve.Events.Count, expectedEvents, "There are pending events");
        }
示例#8
0
文件: Core.cs 项目: crazyants/nCubed
        public void ESRaiseEvents()
        {
            int expectedEvents  = 3;
            int expectedVersion = 3;

            string one   = "1+";
            string two   = "1=";
            string three = "2";

            Queue <IVersionedEvent> queue = new Queue <IVersionedEvent>();

            queue.Enqueue(new FakeEvent());

            FakeVersionedEntity fve = new FakeVersionedEntity();
            FakeEvent           fe1 = new FakeEvent()
            {
                TestString = one
            };
            FakeEvent fe2 = new FakeEvent()
            {
                TestString = two
            };
            FakeEvent fe3 = new FakeEvent()
            {
                TestString = three
            };

            fve.RaiseFakeEvent(fe1);
            fve.RaiseFakeEvent(fe2);
            fve.RaiseFakeEvent(fe3);

            List <FakeEvent> fes = new List <FakeEvent>()
            {
                fe1, fe2, fe3
            };

            Assert.AreEqual(fve.FakeString, one + two + three, "Event not applied");
            Assert.AreEqual(fve.Version, expectedVersion, "Version does not mismatch");
            Assert.AreEqual(fve.Events.Count, expectedEvents, "Count events expected");
        }