public void Test1() { if (Directory.Exists(PATH)) { Directory.Delete(PATH, true); } var es = new FilesInFolderEventstore(PATH); var sut = new CounterManagement(es); sut.Handle(new Increment { Name = "a" }); sut.Handle(new Increment { Name = "b" }); sut.Handle(new Increment { Name = "a" }); var result = sut.Handle(new Value { Name = "a" }); Assert.Equal(2, result.Value); }
public void UseCase() { const string PATH = "usecase_test"; if (Directory.Exists(PATH)) { Directory.Delete(PATH, true); } var sut = new FilesInFolderEventstore(PATH); sut.Record(new Increment { Id = "a" }); sut.Record(new Increment { Id = "b" }); sut.Record(new Increment { Id = "a" }); sut.Record(new Decrement { Id = "b" }); // 0 sut.Record(new Increment { Id = "a" }); // 3 var events = sut.Replay(typeof(Decrement)); Assert.Single(events); events = sut.Replay(typeof(Increment)); Assert.Equal(4, events.Length); Assert.Equal(5, sut.Length); }
public MessageHandling(string path = "calculator.db") { var es = new FilesInFolderEventstore(path); _mp = new MessagePump(es); _mp.RegisterCommandPipeline(new ExpandNumberPipeline()); _mp.RegisterQueryPipeline(new NumberPipeline()); _mp.RegisterQueryPipeline(new ResultPipeline()); _mp.RegisterCommandPipeline(new AppendOperatorPipeline()); }
public void Run() { const string PATH = "msgpump_tests"; if (Directory.Exists(PATH)) { Directory.Delete(PATH, true); } var es = new FilesInFolderEventstore(PATH); var sut = new MessagePump(es); sut.RegisterCommandPipeline(new IncrementPipeline()); sut.RegisterCommandPipeline(new DecrementPipeline()); sut.RegisterQueryPipeline(new CounterValuePipeline()); var result = sut.Handle(new Increment { CounterId = "a" }); Assert.IsType <Success>(result.response); result = sut.Handle(new Increment { CounterId = "b" }); Assert.IsType <Success>(result.response); result = sut.Handle(new Increment { CounterId = "a" }); Assert.IsType <Success>(result.response); var qresult = sut.Handle <CounterValue.Result>(new CounterValue { CounterId = "a" }); Assert.Equal(2, qresult.response.Value); result = sut.Handle(new Decrement() { CounterId = "x" }); Assert.IsType <Failure>(result.response); result = sut.Handle(new Decrement() { CounterId = "a" }); Assert.IsType <Success>(result.response); qresult = sut.Handle <CounterValue.Result>(new CounterValue { CounterId = "a" }); Assert.Equal(1, qresult.response.Value); }
public void UseCase_with_versioning() { const string PATH = "usecase_test"; if (Directory.Exists(PATH)) { Directory.Delete(PATH, true); } var sut = new FilesInFolderEventstore(PATH); var resultA = sut.Record(new Version("a"), new Increment { Id = "a" }); Assert.Equal("1", resultA.version.Number); var resultB = sut.Record(new Version("b"), new Increment { Id = "b" }); resultA = sut.Record(resultA.version, new Increment { Id = "a" }); resultB = sut.Record(resultB.version, new Decrement { Id = "b" }); Assert.Equal("2", resultB.version.Number); sut.Record(resultA.version, new Increment { Id = "a" }); var ex = Assert.Throws <InvalidOperationException>(() => sut.Record(resultA.version, new Decrement() { Id = "a" })); Assert.StartsWith("Expected version", ex.Message); var version = sut.Version(resultA.version.Id); Assert.Equal("3", version.Number); }
public void UseCase_retrieve_with_versions() { const string PATH = "usecase_test"; if (Directory.Exists(PATH)) { Directory.Delete(PATH, true); } var sut = new FilesInFolderEventstore(PATH); var resultA = sut.Record(new Version("a"), new Increment { Id = "a" }); var resultB = sut.Record(new Version("b"), new Increment { Id = "b" }); resultA = sut.Record(resultA.version, new Increment { Id = "a" }); resultB = sut.Record(resultB.version, new Decrement { Id = "b" }); sut.Record(resultA.version, new Increment { Id = "a" }); var result = sut.ReplayWithVersion(MapToVersionId); Assert.Equal("3", result.versions[0].Number); Assert.Equal("2", result.versions[1].Number); string MapToVersionId(Event e) => e switch { Increment i => i.Id, Decrement d => d.Id }; }