예제 #1
0
        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();
                }
        }
예제 #2
0
        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));
        }