public async Task ShouldScheduleEvent5() { // arrange var publisher = provider.GetService <IDomainEventOutboxPublisher>(); var db = provider.GetService <EntityContext>(); var correlationId = Guid.NewGuid().ToString(); var messageId = Guid.NewGuid().ToString(); var scheduleDate = DateTime.UtcNow.AddDays(1); // act var @event = new WidgetStateChangedEvent() { WidgetId = 1, Timestamp = DateTime.UtcNow }; await publisher.ScheduleAsync(JsonConvert.SerializeObject(@event), scheduleDate, new EventProperties() { EventType = "foo", Topic = "bar", RoutingKey = "baz", CorrelationId = correlationId, MessageId = messageId }).ConfigureAwait(false); await db.SaveChangesAsync().ConfigureAwait(false); // assert var messages = await db.Set <Outbox>().ToListAsync().ConfigureAwait(false); Assert.Single(messages); Assert.Equal(correlationId, messages[0].CorrelationId); Assert.Equal(messageId, messages[0].MessageId); Assert.Equal("foo", messages[0].EventType); Assert.Equal("bar", messages[0].Topic); Assert.Equal("baz", messages[0].RoutingKey); Assert.Equal(scheduleDate, messages[0].ScheduledDate); }
public async Task ShouldScheduleEvent2() { // arrange var publisher = provider.GetService <IDomainEventOutboxPublisher>(); var db = provider.GetService <EntityContext>(); var correlationId = Guid.NewGuid().ToString(); var scheduleDate = DateTime.UtcNow.AddDays(1); // act var @event = new WidgetStateChangedEvent() { WidgetId = 1, Timestamp = DateTime.UtcNow }; await publisher.ScheduleAsync(@event, scheduleDate, new EventProperties() { CorrelationId = correlationId }).ConfigureAwait(false); await db.SaveChangesAsync().ConfigureAwait(false); // assert var messages = await db.Set <Outbox>().ToListAsync().ConfigureAwait(false); Assert.Single(messages); Assert.Equal(correlationId, messages[0].CorrelationId); messages[0].ScheduledDate.Should().BeCloseTo(scheduleDate); }
public async Task ShouldPublishEvent4() { // arrange var publisher = provider.GetService <IDomainEventOutboxPublisher>(); var db = provider.GetService <EntityContext>(); var correlationId = Guid.NewGuid().ToString(); // act var @event = new WidgetStateChangedEvent() { WidgetId = 1, Timestamp = DateTime.UtcNow }; await publisher.PublishAsync(@event, new EventProperties() { EventType = "foo", Topic = "bar", RoutingKey = "baz", CorrelationId = correlationId }).ConfigureAwait(false); await db.SaveChangesAsync().ConfigureAwait(false); // assert var messages = await db.Set <Outbox>().ToListAsync().ConfigureAwait(false); Assert.Single(messages); Assert.Equal(correlationId, messages[0].CorrelationId); Assert.Equal("foo", messages[0].EventType); Assert.Equal("bar", messages[0].Topic); Assert.Equal("baz", messages[0].RoutingKey); }
public async Task ShouldPublishEvent1() { // arrange var publisher = provider.GetService <IDomainEventOutboxPublisher>(); var db = provider.GetService <EntityContext>(); // act var @event = new WidgetStateChangedEvent() { WidgetId = 1, Timestamp = DateTime.UtcNow }; await publisher.PublishAsync(@event).ConfigureAwait(false); await db.SaveChangesAsync().ConfigureAwait(false); // assert var messages = await db.Set <Outbox>().ToListAsync().ConfigureAwait(false); Assert.Single(messages); }
public async Task ShouldPublishEventWithSerializerSettingsAsync() { // arrange var settings = provider.GetService <DomainEventPublisherSettings>(); settings.SerializerSettings = new JsonSerializerSettings() { Converters = new List <JsonConverter> { new StringEnumConverter(new SnakeCaseNamingStrategy()) } }; var db = provider.GetService <EntityContext>(); var publisher = new DomainEventOutboxPublisher <EntityContext>(settings, db, new NullLogger <DomainEventOutboxPublisher <EntityContext> >()); var correlationId = Guid.NewGuid().ToString(); var messageId = Guid.NewGuid().ToString(); // act var @event = new WidgetStateChangedEvent() { WidgetId = 1, Timestamp = DateTime.UtcNow, Status = WidgetStatus.CreatedWidget }; await publisher.PublishAsync(@event, new EventProperties() { EventType = "foo", Topic = "bar", RoutingKey = "baz", CorrelationId = correlationId, MessageId = messageId }).ConfigureAwait(false); await db.SaveChangesAsync().ConfigureAwait(false); // assert var messages = await db.Set <Outbox>().ToListAsync().ConfigureAwait(false); Assert.Single(messages); Assert.Equal(correlationId, messages[0].CorrelationId); Assert.Equal(messageId, messages[0].MessageId); Assert.Equal("foo", messages[0].EventType); Assert.Equal("bar", messages[0].Topic); Assert.Equal("baz", messages[0].RoutingKey); Assert.Contains("created_widget", messages[0].Body); }
public async Task ShouldScheduleEvent1Async() { // arrange var publisher = provider.GetService <IDomainEventOutboxPublisher>(); var db = provider.GetService <EntityContext>(); var scheduleDate = DateTime.UtcNow.AddDays(1); // act var @event = new WidgetStateChangedEvent() { WidgetId = 1, Timestamp = DateTime.UtcNow }; await publisher.ScheduleAsync(@event, scheduleDate).ConfigureAwait(false); await db.SaveChangesAsync().ConfigureAwait(false); // assert var messages = await db.Set <Outbox>().ToListAsync().ConfigureAwait(false); Assert.Single(messages); messages[0].ScheduledDate.Should().BeCloseTo(scheduleDate, 5.Seconds()); }