public async Task Snapshots_include_etags_for_events_that_have_been_persisted_to_the_event_store() { var etag = Guid.NewGuid().ToString().ToETag(); var configuration = Configuration.Current; var addPlayer = new MarcoPoloPlayerWhoIsNotIt.JoinGame { IdOfPlayerWhoIsIt = Any.Guid(), ETag = etag }; var player = await new MarcoPoloPlayerWhoIsNotIt() .ApplyAsync(addPlayer); await configuration.Repository <MarcoPoloPlayerWhoIsNotIt>().Save(player); await configuration.SnapshotRepository().SaveSnapshot(player); var snapshot = await configuration.SnapshotRepository() .GetSnapshot(player.Id); snapshot.ETags .MayContain(etag) .Should() .BeTrue(); }
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 When_sourced_from_a_snapshot_and_applying_a_command_that_is_already_in_the_bloom_filter_then_a_precondition_check_is_used_to_rule_out_false_positives() { var verifierWasCalled = false; var preconditionVerifier = new TestEventStoreETagChecker(() => { verifierWasCalled = true; return(true); }); var configuration = Configuration.Current; configuration.UseDependency <IETagChecker>(_ => preconditionVerifier); var etag = Guid.NewGuid().ToString().ToETag(); var addPlayer = new MarcoPoloPlayerWhoIsNotIt.JoinGame { IdOfPlayerWhoIsIt = Any.Guid(), ETag = etag }; var player = await new MarcoPoloPlayerWhoIsNotIt() .ApplyAsync(addPlayer); await configuration.Repository <MarcoPoloPlayerWhoIsNotIt>().Save(player); // don't call player.ConfirmSave await configuration.SnapshotRepository() .SaveSnapshot(player); var snapshot = await configuration.SnapshotRepository().GetSnapshot(player.Id); player = new MarcoPoloPlayerWhoIsNotIt(snapshot); player.HasETag(etag).Should().BeTrue(); verifierWasCalled.Should().BeTrue(); }