public async Task ShouldNotAllowSavingCommitsWithSameStreamIdAndVersion() { var commits = Data.CreateValidCommits(2); var c1 = commits[0]; var c2 = commits[1]; c2.StreamId = c1.StreamId; c2.Version = c1.Version; var sut = Fixture.Persistence; using (var tx = Util.CreateTransactionScope()) using (var sess = sut.OpenSession()) { var ok = await sess.SaveAsync(c1).ConfigureAwait(false); Assert.True(ok); await AssertException.Is <VersionConflictException>( () => sess.SaveAsync(c2), ex => !string.IsNullOrEmpty(ex.StreamId) && ex.Version > 0); tx.Complete(); } }
public async Task ShouldIgnoreAmbientTransactionIfRequested() { var c1 = Data.CreateValidCommits(1).First(); var sut = Fixture.Persistence; using (var tx = Util.CreateTransactionScope()) using (var sess = sut.OpenSession(suppressAmbientTransaction: true)) { var ok = await sess.SaveAsync(c1).ConfigureAwait(false); Assert.True(ok); // tx disposed without tx.Complete() // => still should accept changes, because session is configured not to use ambient transaction } var(ok1, error1) = await Fixture.HasBeenSavedAsync(c1).ConfigureAwait(false); Assert.True(ok1, CreateMessage(error1)); }