public void When_a_CommandContext_does_not_specify_a_command_then_by_default_new_events_have_null_etags() { using (CommandContext.Establish(clock: Clock.Create(() => DateTimeOffset.UtcNow))) { var created = new Order.Created(); created.ETag.Should().BeNull(); } }
public void If_no_aggregate_id_is_specified_when_adding_events_then_a_default_is_chosen_and_reused() { var created = new Order.Created(); var customerInfoChanged = new Order.CustomerInfoChanged(); CreateScenarioBuilder() .AddEvents(created, customerInfoChanged); created.AggregateId.Should().NotBeEmpty(); customerInfoChanged.AggregateId.Should().Be(created.AggregateId); }
public async Task If_no_aggregate_id_is_specified_when_calling_GetLatest_and_a_single_instance_is_in_the_scenario_then_it_is_returned() { var aggregateId = Any.Guid(); var created = new Order.Created { AggregateId = aggregateId }; var scenario = CreateScenarioBuilder().AddEvents(created).Prepare(); var aggregate = await scenario.GetLatestAsync <Order>(); aggregate.Should().NotBeNull(); aggregate.Id.Should().Be(aggregateId); }
public async Task If_Schedule_is_dependent_on_an_event_with_no_ETag_then_it_sets_one() { var created = new Order.Created { AggregateId = Any.Guid(), ETag = null }; await Schedule( Any.Guid(), new SendOrderConfirmationEmail(Any.Word()), deliveryDependsOn: created); created.ETag.Should().NotBeNullOrEmpty(); }
public async Task If_Schedule_is_dependent_on_an_event_with_no_ETag_then_it_sets_one() { var created = new Order.Created { AggregateId = Any.Guid(), ETag = null }; await Schedule( Any.Guid(), new SendOrderConfirmationEmail(Any.Word()), deliveryDependsOn : created); created.ETag.Should().NotBeNullOrEmpty(); }
public void If_Schedule_is_dependent_on_an_event_with_no_ETag_then_it_sets_one() { var scheduler = new ImmediateCommandScheduler <CustomerAccount>(new InMemoryEventSourcedRepository <CustomerAccount>()); var created = new Order.Created { AggregateId = Any.Guid(), ETag = null }; scheduler.Schedule( Any.Guid(), new SendOrderConfirmationEmail(Any.Word()), deliveryDependsOn: created); created.ETag.Should().NotBeNullOrEmpty(); }
public async Task If_Schedule_is_dependent_on_an_event_with_no_ETag_then_it_sets_one() { var scheduler = new Configuration() .UseInMemoryEventStore() .UseInMemoryCommandScheduling() .CommandScheduler <CustomerAccount>(); var created = new Order.Created { AggregateId = Any.Guid(), ETag = null }; await scheduler.Schedule( Any.Guid(), new SendOrderConfirmationEmail(Any.Word()), deliveryDependsOn : created); created.ETag.Should().NotBeNullOrEmpty(); }
public async Task Events_in_the_currently_configured_event_stream_can_be_queried_from_the_In_memory_context() { var aggregateId = Any.Guid(); var storableEvent = new Order.Created { CustomerName = Any.FullName(), AggregateId = aggregateId }.ToStorableEvent(); var eventStream = new InMemoryEventStream(); await eventStream.Append(new[] { storableEvent.ToInMemoryStoredEvent() }); Configuration.Current.UseDependency(_ => eventStream); using (var db = new InMemoryEventStoreDbContext()) { var orderCreated = db.Events.Single(e => e.AggregateId == aggregateId); orderCreated.Should().NotBeNull(); } }
public async Task Events_can_be_added_to_the_context_and_queried_back() { var aggregateId = Any.Guid(); var storableEvent = new Order.Created { CustomerName = Any.FullName(), AggregateId = aggregateId }.ToStorableEvent(); var eventStream = new InMemoryEventStream(); using (var db = new InMemoryEventStoreDbContext(eventStream)) { db.Events.Add(storableEvent); await db.SaveChangesAsync(); var orderCreated = db.Events.Single(e => e.AggregateId == aggregateId); orderCreated.Should().NotBeNull(); } }
public async Task If_Schedule_is_dependent_on_an_event_with_no_ETag_then_it_sets_one() { var scheduler = new Configuration() .UseInMemoryEventStore() .UseInMemoryCommandScheduling() .CommandScheduler<CustomerAccount>(); var created = new Order.Created { AggregateId = Any.Guid(), ETag = null }; await scheduler.Schedule( Any.Guid(), new SendOrderConfirmationEmail(Any.Word()), deliveryDependsOn: created); created.ETag.Should().NotBeNullOrEmpty(); }
public void HaveConsequences(Order.Created @event) { onCreated(@event); }
public void UpdateProjection(Order.Created @event) { onCreated(@event); }
public void If_Schedule_is_dependent_on_an_event_with_no_ETag_then_it_sets_one() { var scheduler = new ImmediateCommandScheduler<CustomerAccount>(new InMemoryEventSourcedRepository<CustomerAccount>()); var created = new Order.Created { AggregateId = Any.Guid(), ETag = null }; scheduler.Schedule( Any.Guid(), new SendOrderConfirmationEmail(Any.Word()), deliveryDependsOn: created); created.ETag.Should().NotBeNullOrEmpty(); }