Beispiel #1
0
        private void storeAndLoadEvents(Serialized client)
        {
            Debug.WriteLine("Storing events on aggregate: " + orderType);

            client.StoreEvents(orderType, orderId1, new EventBatch(new List <EventModel>()
            {
                new EventModel("OrderPlaced", Guid.NewGuid(), new Dictionary <string, object>()
                {
                    { "customerId", "some-test-id-1" },
                    { "orderAmount", 12345 },
                    { "placedAt", DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() }
                }
                               , "encrypted-and-secret-payload")
            }, 0));

            client.StoreEvents(orderType, orderId1, new EventBatch(new List <EventModel>()
            {
                new EventModel("OrderPaid", Guid.NewGuid(), new Dictionary <string, object>()
                {
                    { "customerId", "some-test-id-1" },
                    { "paidAt", DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() }
                })
            }, 1));

            client.StoreEvents(orderType, orderId2, new EventBatch(new List <EventModel>()
            {
                new EventModel("OrderPlaced", Guid.NewGuid(), new Dictionary <string, object>()
                {
                    { "customerId", "some-test-id-2" },
                    { "orderAmount", 67890 },
                    { "placedAt", DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() }
                }
                               , "another-encrypted-and-secret-payload")
            }, 0));


            Debug.WriteLine("Loading aggregate: " + orderId1);

            var aggregate1 = client.LoadEvents(orderType, orderId1);

            Assert.AreEqual(false, aggregate1.HasMore);
            Assert.AreEqual(orderId1, aggregate1.AggregateId);
            Assert.AreEqual(orderType, aggregate1.AggregateType);
            Assert.AreEqual(2, aggregate1.AggregateVersion);
            Assert.AreEqual(2, aggregate1.Events.Count);

            var enumerator = aggregate1.Events.GetEnumerator();

            enumerator.MoveNext();

            var eventModel = enumerator.Current;

            Assert.AreEqual("OrderPlaced", eventModel.EventType);
            Assert.AreEqual("encrypted-and-secret-payload", eventModel.EncryptedData);
            Assert.IsNotNull(eventModel.Data);

            enumerator.MoveNext();

            eventModel = enumerator.Current;
            Assert.AreEqual("OrderPaid", eventModel.EventType);
            Assert.IsNull(eventModel.EncryptedData);
            Assert.IsNotNull(eventModel.Data);
        }