public void Should_be_able_to_handle_concurrency_invariant_check() { var stream = new EventStream(Guid.NewGuid(), 5, new List<Event>(), null); Assert.DoesNotThrow(() => stream.ConcurrencyInvariant(5)); Assert.Throws<EventStreamConcurrencyException>(() => stream.ConcurrencyInvariant(10)); }
public void Should_be_able_to_handle_concurrency_invariant_check() { var stream = new EventStream(Guid.NewGuid(), 5, new List <object>(), new Mock <IEventMethodInvoker>().Object); Assert.DoesNotThrow(() => stream.ConcurrencyInvariant(5)); Assert.Throws <EventStreamConcurrencyException>(() => stream.ConcurrencyInvariant(10)); }
public void SaveEventStream(EventStream eventStream) { Guard.AgainstNull(eventStream, "eventStream"); if (eventStream.Removed) { Remove(eventStream.Id); return; } eventStream.ConcurrencyInvariant(_databaseGateway.GetScalarUsing <int>(_queryFactory.GetVersion(eventStream.Id))); if (eventStream.HasSnapshot) { using (var stream = _serializer.Serialize(eventStream.Snapshot.Data)) { _databaseGateway.ExecuteUsing(_queryFactory.SaveSnapshot(eventStream.Id, eventStream.Snapshot, stream.ToBytes())); } } foreach (var @event in eventStream.NewEvents()) { using (var stream = _serializer.Serialize(@event.Data)) { _databaseGateway.ExecuteUsing(_queryFactory.AddEvent(eventStream.Id, @event, stream.ToBytes())); } } eventStream.CommitVersion(); }