public async Task Save(Group @group, Guid causation, Guid correlation, Metadata metadata, CancellationToken ct = default(CancellationToken)) { var stream = new StreamName($"groups-{group.Id.ToGuid():N}"); var result = await _writer.WriteStreamAsync(stream, group, causation, correlation, metadata, ct); //CQS violation - only required if an event source instance is to handle multiple commands or is kept in memory. ((IEventSource)group).ExpectedVersion = result.NextExpectedVersion; }
public Task WriteStreamAsyncSourceCanNotBeNull() { var sut = new EventSourceWriter( _fixture.Connection, new EventSourceWriterConfiguration(StreamNameConversions.PassThru, new EventSourceChangesetTranslator(type => type.Name, new JsonSerializerSettings())) ); return (Assert.ThrowsAsync <ArgumentNullException>(() => sut.WriteStreamAsync(_fixture.NextStreamName(), null, Guid.Empty, Guid.Empty))); }
public async Task CanReadUsingReaderWhatWasWrittenUsingWriter() { var stream = _fixture.NextStreamName(); var random = new Random(); var value1 = random.Next(); var value2 = random.Next(); // write var changes = new object[] { new Event1 { Value = value1 }, new Event2 { Value = value2 } }; var writable = new Entity(changes); var writer = new EventSourceWriter( _fixture.Connection, new EventSourceWriterConfiguration( StreamNameConversions.PassThru, new EventSourceChangesetTranslator(type => type.FullName, new JsonSerializerSettings()))); await writer.WriteStreamAsync(stream, writable, Guid.NewGuid(), Guid.NewGuid()); //read var reader = new EventSourceReader( () => new Entity(), _fixture.Connection, new EventSourceReaderConfiguration( StreamNameConversions.PassThru, () => new StreamEventsSliceTranslator( name => Type.GetType(name, true), new JsonSerializerSettings()), new SliceSize(1))); var result = await reader.ReadStreamAsync(stream); Assert.Equal(ReadResultState.Found, result.State); var readable = Assert.IsAssignableFrom <Entity>(result.Value); Assert.Equal(value1, readable.Value1); Assert.Equal(value2, readable.Value2); }