예제 #1
0
        public void WhenCreating_AndDeclaringAsABaseClass_ShouldSetEventTypeAsGenericBaseClass()
        {
            var eventData = NewEventData.Create <Something>(new SubSomething());

            // The EventType should be based on the actual concrete class of the event. Not the base class.
            eventData.EventType.Should().Be(typeof(Something).FullName);
        }
예제 #2
0
        public void WhenCreating_AndDeclaringAsObject_ShouldSetEventTypeAsMostSpecificType() // when using params array, you probably don't wish to publish 'object's
        {
            var eventData = NewEventData.Create <object>(new SubSomething());

            // The EventType should be based on the actual concrete class of the event. Not the genmeric-declared class.
            eventData.EventType.Should().Be(typeof(SubSomething).FullName);
        }
예제 #3
0
        public void WhenCreatingWithoutSpecifyingEventId_ShouldCreateAnEventId()
        {
            var expectedData = new { Id = 123, Foo = "bar" };

            var eventData = NewEventData.Create(expectedData);

            eventData.EventId.Should().NotBeEmpty();
        }
예제 #4
0
        public void WhenCreating_ShouldSetMetadataCorrectly()
        {
            var metadata = new { Id = 123, Foo = "bar" };

            var eventData = NewEventData.Create("something", metadata);

            eventData.Metadata.Should().Be(metadata);
        }
예제 #5
0
        public void WhenCreating_ShouldSetDataCorrectly()
        {
            var expectedData = new { Id = 123, Foo = "bar" };

            var eventData = NewEventData.Create(expectedData);

            eventData.Data.Should().Be(expectedData);
        }
예제 #6
0
        public void WhenCreatingAndSpecifyingEventId_ShouldUsedPassedEventId()
        {
            var expectedData = new { Id = 123, Foo = "bar" };
            var expectedId   = Guid.NewGuid();

            var eventData = NewEventData.Create(expectedId, expectedData);

            eventData.EventId.Should().Be(expectedId);
        }
예제 #7
0
        async Task InsertRefundOrder(long orderId, decimal amount, Guid conversationId)
        {
            RefundOrder refundOrder = new RefundOrder();

            refundOrder.OrderId        = orderId;
            refundOrder.Amount         = amount;
            refundOrder.ConversationId = conversationId;

            NewEventData @event = NewEventData.Create(refundOrder);

            await Connection.AppendToStreamAsync(OrderDeliveredStreamName, ExpectedVersion.Any, @event);
        }
예제 #8
0
        async Task InsertOrderDelivered(IEnumerable <SampleOrder> sampleOrders)
        {
            foreach (SampleOrder sampleOrder in sampleOrders)
            {
                OrderDelivered d = new OrderDelivered
                {
                    ConversationId = sampleOrder.ConversationId,
                    OrderId        = sampleOrder.OrderId,
                };

                NewEventData @event = NewEventData.Create(d);

                await Connection.AppendToStreamAsync(OrderDeliveredStreamName, ExpectedVersion.Any, @event);
            }
        }
예제 #9
0
        async Task InsertRemovedToBasket(IEnumerable <SampleOrder> sampleOrders, string product)
        {
            foreach (SampleOrder sampleOrder in sampleOrders)
            {
                ProductRemovedFromBasket d = new ProductRemovedFromBasket
                {
                    ConversationId = sampleOrder.ConversationId,
                    CustomerId     = sampleOrder.OrderId + 1000,
                    Product        = product,
                };

                NewEventData @event = NewEventData.Create(d);

                await Connection.AppendToStreamAsync(ProductRemovedFromBasketStreamName, ExpectedVersion.Any, @event);
            }
        }
예제 #10
0
        async Task InsertPaymentCaptured(IEnumerable <SampleOrder> sampleOrders)
        {
            foreach (SampleOrder sampleOrder in sampleOrders)
            {
                PaymentCaptured d = new PaymentCaptured
                {
                    ConversationId = sampleOrder.ConversationId,
                    Amount         = 25m,
                    OrderId        = sampleOrder.OrderId,
                    Currency       = "GBP"
                };

                NewEventData @event = NewEventData.Create(d);

                await Connection.AppendToStreamAsync(PaymentCapturedStreamName, ExpectedVersion.Any, @event);
            }
        }
예제 #11
0
        private async Task AppendToStreamTest(int expectedVersion, NewEventData data, Action <HttpClient, HttpRequestMessage> test)
        {
            var called = false;

            _httpClientProxyMock.Setup(x => x.SendAsync(It.IsAny <HttpClient>(), It.IsAny <HttpRequestMessage>()))
            .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK))
            .Callback <HttpClient, HttpRequestMessage>(
                (client, request) =>
            {
                test(client, request);

                called = true;
            });

            await _connection.AppendToStreamAsync(StreamName, expectedVersion, data);

            called.Should().BeTrue();
        }
예제 #12
0
        async Task InsertOrderCreated(IEnumerable <SampleOrder> sampleOrders)
        {
            List <string> products = new List <string>();

            products.Add("Burger");
            products.Add("Pizza");
            products.Add("Drinks");

            foreach (SampleOrder sampleOrder in sampleOrders)
            {
                OrderCreated d = new OrderCreated
                {
                    ConversationId = sampleOrder.ConversationId,
                    Amount         = 25m,
                    ProductList    = products,
                    CustomerId     = sampleOrder.OrderId + 1000,
                    OrderId        = sampleOrder.OrderId
                };

                NewEventData @event = NewEventData.Create(d);

                await Connection.AppendToStreamAsync(OrderCreatedStreamName, ExpectedVersion.Any, @event);
            }
        }
예제 #13
0
        public void WhenCreating_AndNotSpeifyingAGenericType_ShouldSetEventTypeAsMostSpecificType()
        {
            var eventData = NewEventData.Create(new Something());

            eventData.EventType.Should().Be(typeof(Something).FullName);
        }
 private async Task SaveToEventStore(dynamic token)
 {
     dynamic      messageDetails = JObject.Parse(token.Message.ToString());
     NewEventData @event         = NewEventData.Create(messageDetails);
     await _eventStore.AppendToStreamAsync(token.Subject.ToString(), ExpectedVersion.Any, @event);
 }
        private async Task AppendToStreamTest(int expectedVersion, NewEventData data, Action<HttpClient, HttpRequestMessage> test)
        {
            var called = false;

            _httpClientProxyMock.Setup(x => x.SendAsync(It.IsAny<HttpClient>(), It.IsAny<HttpRequestMessage>()))
                .ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK))
                .Callback<HttpClient, HttpRequestMessage>(
                    (client, request) =>
                    {
                        test(client, request);

                        called = true;
                    });

            await _connection.AppendToStreamAsync(StreamName, expectedVersion, data);

            called.Should().BeTrue();
        }