public async Task Scatter_gather_produces_a_unique_etag_per_sent_command() { var repo = configuration.Repository <MarcoPoloPlayerWhoIsIt>(); var it = new MarcoPoloPlayerWhoIsIt(); await repo.Save(it); var numberOfPlayers = 6; var players = Enumerable.Range(1, numberOfPlayers) .Select(_ => new MarcoPoloPlayerWhoIsNotIt()); foreach (var player in players) { var joinGame = new MarcoPoloPlayerWhoIsNotIt.JoinGame { IdOfPlayerWhoIsIt = it.Id }; await player.ApplyAsync(joinGame).AndSave(); } await repo.Refresh(it); await it.ApplyAsync(new MarcoPoloPlayerWhoIsIt.SayMarco()).AndSave(); await repo.Refresh(it); it.Events() .OfType <MarcoPoloPlayerWhoIsIt.HeardPolo>() .Count() .Should() .Be(numberOfPlayers); }
public async Task Aggregates_can_schedule_commands_against_themselves_idempotently() { var it = new MarcoPoloPlayerWhoIsIt(); await configuration.Repository <MarcoPoloPlayerWhoIsIt>().Save(it); await it.ApplyAsync(new MarcoPoloPlayerWhoIsIt.KeepSayingMarcoOverAndOver()); VirtualClock.Current.AdvanceBy(TimeSpan.FromMinutes(1)); await configuration.Repository <MarcoPoloPlayerWhoIsIt>().Refresh(it); it.Events() .OfType <MarcoPoloPlayerWhoIsIt.SaidMarco>() .Count() .Should() .BeGreaterOrEqualTo(5); }