public override async Task When_a_constructor_command_fails_with_a_ConcurrencyException_it_is_not_retried() { // arrange var deliveredEtags = new List <string>(); Configuration.Current.AddToCommandSchedulerPipeline <NonEventSourcedCommandTarget>( deliver: async(scheduled, next) => { deliveredEtags.Add(scheduled.Command.ETag); await next(scheduled); }); var id = Any.CamelCaseName(); var etag1 = Any.Word().ToETag(); var etag2 = Any.Word().ToETag(); var command1 = new CreateCommandTarget(id, etag: etag1); var command2 = new CreateCommandTarget(id, etag: etag2); // act await Schedule(id, command1); await Schedule(id, command2); await AdvanceClock(1.Days()); await AdvanceClock(1.Days()); await AdvanceClock(1.Days()); // assert deliveredEtags.Should() .ContainSingle(e => e == etag1) .And .ContainSingle(e => e == etag2); }
public override async Task When_a_clock_is_set_on_a_command_then_it_takes_precedence_over_GetClockName() { // arrange var clockName = Any.CamelCaseName(); var targetId = Any.CamelCaseName(); var command = new CreateCommandTarget(targetId); var scheduledCommand = new ScheduledCommand <CommandTarget>( targetId: targetId, command: command, dueTime: DateTimeOffset.Parse("2016-03-20 09:00:00 AM")) { Clock = new CommandScheduler.Clock { Name = clockName, UtcNow = DateTimeOffset.Parse("2016-03-01 02:00:00 AM") } }; // act await scheduler.Schedule(scheduledCommand); await Configuration.Current.SchedulerClockTrigger() .AdvanceClock(clockName, by: 30.Days()); //assert var target = await store.Get(targetId); target.Should().NotBeNull(); }
public override async Task When_a_clock_is_set_on_a_command_then_it_takes_precedence_over_GetClockName() { // arrange var clockName = Any.CamelCaseName(); var targetId = Any.CamelCaseName(); var command = new CreateCommandTarget(targetId); var clock = new CommandScheduler.Clock { Name = clockName, UtcNow = DateTimeOffset.Parse("2016-03-01 02:00:00 AM") }; using (var commandScheduler = Configuration.Current.CommandSchedulerDbContext()) { commandScheduler.Clocks.Add(clock); commandScheduler.SaveChanges(); } var scheduledCommand = new ScheduledCommand<CommandTarget>( targetId: targetId, command: command, dueTime: DateTimeOffset.Parse("2016-03-20 09:00:00 AM")) { Clock = clock }; // act await scheduler.Schedule(scheduledCommand); await Configuration.Current.SchedulerClockTrigger() .AdvanceClock(clockName, by: 30.Days()); //assert var target = await store.Get(targetId); target.Should().NotBeNull(); }
public override async Task When_a_constructor_command_fails_with_a_ConcurrencyException_it_is_not_retried() { // arrange var deliveredEtags = new List<string>(); Configuration.Current.AddToCommandSchedulerPipeline<CommandTarget>( deliver: async (scheduled, next) => { deliveredEtags.Add(scheduled.Command.ETag); await next(scheduled); }); var id = Any.CamelCaseName(); var etag1 = Any.Word().ToETag(); var etag2 = Any.Word().ToETag(); var command1 = new CreateCommandTarget(id, etag: etag1); var command2 = new CreateCommandTarget(id, etag: etag2); // act await scheduler.Schedule(id, command1); await scheduler.Schedule(id, command2); await AdvanceClock(1.Days()); await AdvanceClock(1.Days()); await AdvanceClock(1.Days()); // assert deliveredEtags.Should() .ContainSingle(e => e == etag1) .And .ContainSingle(e => e == etag2); }