public void SimpleSchema() { var language = new LanguageSchemaBuilder().Add <DemoAgg>().Build(); var logic = new LogicSchemaBuilder(language) .Add <DemoAggLogic>() .Add <DemoSvc>() .Build(); var projection = new ProjectionSchemaBuilder(logic) .Add <DemoProjector>() .Build(); projection.Projectors.Count.ShouldBe(1); var prjInfo = projection.Projectors.Single(); prjInfo.Type.ShouldBe(typeof(DemoProjector)); prjInfo.Name.ShouldBe(nameof(DemoProjector)); prjInfo.Events.ShouldNotBeNull(); prjInfo.Events.Count.ShouldBe(1); var aggEventInfo = prjInfo.Events.Single(); aggEventInfo.Type.ShouldBe(typeof(DemoAggLogic.AggEvent)); aggEventInfo.Name.ShouldBe(nameof(DemoAggLogic.AggEvent)); }
public void SimpleSchema() { var language = new LanguageSchemaBuilder().Add <DemoAgg>().Build(); language.Aggregates.Count.ShouldBe(1); Should.NotThrow(() => language.GetAggregate(typeof(DemoAgg))); var aggInfo = language.GetAggregate(typeof(DemoAgg)); language.GetAggregate(typeof(DemoAgg)).ShouldBe(aggInfo); aggInfo.Type.ShouldBe(typeof(DemoAgg)); aggInfo.Name.ShouldBe(nameof(DemoAgg)); aggInfo.Commands.ShouldNotBeNull(); aggInfo.Commands.Count.ShouldBe(1); var cmdInfo = aggInfo.Commands.Single(); language.GetCommand(typeof(DemoAgg.Cmd)).ShouldBe(cmdInfo); language.FindCommand("DemoAgg", "Cmd").Type.ShouldBe(typeof(DemoAgg.Cmd)); cmdInfo.Type.ShouldBe(typeof(DemoAgg.Cmd)); cmdInfo.Name.ShouldBe(nameof(DemoAgg.Cmd)); aggInfo.Views.ShouldNotBeNull(); aggInfo.Views.Count.ShouldBe(1); var viewInfo = aggInfo.Views.Single(); language.GetAggregateView(typeof(DemoAgg.View)).ShouldBe(viewInfo); }
protected EventStoreRequirements() { var languageSchema = new LanguageSchemaBuilder().Add <Agg>().Build(); LogicSchema = new LogicSchemaBuilder(languageSchema).Add <AggLogic>().Build(); ConnectEventStore(); }
public void EmptySchema() { var language = new LanguageSchemaBuilder().Build(); var logic = new LogicSchemaBuilder(language).Build(); var projection = new ProjectionSchemaBuilder(logic).Build(); projection.Projectors.ShouldNotBeNull(); projection.Projectors.ShouldBeEmpty(); }
public void SimpleSchema() { var language = new LanguageSchemaBuilder().Add <DemoAgg>().Build(); var logic = new LogicSchemaBuilder(language) .Add <DemoAggLogic>() .Add <DemoSaga>() .Add <DemoSvc>() .Build(); logic.Aggregates.Count.ShouldBe(1); logic.Sagas.Count.ShouldBe(1); logic.Services.Count.ShouldBe(1); var aggInfo = language.GetAggregate(typeof(DemoAgg)); Should.NotThrow(() => logic.GetAggregate(aggInfo)); var aggLogicInfo = logic.GetAggregate(aggInfo); logic.GetAggregate(aggInfo).ShouldBe(aggLogicInfo); aggLogicInfo.Type.ShouldBe(typeof(DemoAggLogic)); aggLogicInfo.Name.ShouldBe(nameof(DemoAgg)); aggLogicInfo.Events.ShouldNotBeNull(); aggLogicInfo.Events.Count.ShouldBe(1); var aggEventInfo = aggLogicInfo.Events.Single(); aggEventInfo.Type.ShouldBe(typeof(DemoAggLogic.AggEvent)); aggEventInfo.Name.ShouldBe(nameof(DemoAggLogic.AggEvent)); Should.NotThrow(() => logic.GetReactingSagas(aggEventInfo)); var sagas = logic.GetReactingSagas(aggEventInfo); sagas.ShouldNotBeNull(); sagas.Length.ShouldBe(1); var saga = sagas.Single(); logic.Sagas.Single().ShouldBe(saga); saga.Type.ShouldBe(typeof(DemoSaga)); saga.Name.ShouldBe(nameof(DemoSaga)); saga.AggregateEvents.ShouldNotBeNull(); saga.AggregateEvents.Count.ShouldBe(1); saga.AggregateEvents.Single().ShouldBe(aggEventInfo); var svc = logic.Services.Single(); svc.Type.ShouldBe(typeof(DemoSvc)); svc.Name.ShouldBe(nameof(DemoSvc)); }
public void SagaTriggeredByOutsideAggregate() { var language = new LanguageSchemaBuilder().Add <DemoAgg>().Build(); var domain = new LogicSchemaBuilder(language).Add <DemoSaga>().Build(); domain.Aggregates.ShouldBeEmpty(); domain.Sagas.Count.ShouldBe(1); domain.Services.ShouldBeEmpty(); var saga = domain.Sagas.Single(); saga.AggregateEvents.Count.ShouldBe(1); var evnt = saga.AggregateEvents.Single(); evnt.Type.ShouldBe(typeof(DemoAggLogic.AggEvent)); }
public void EmptySchema() { var language = new LanguageSchemaBuilder().Build(); var logic = new LogicSchemaBuilder(language).Build(); logic.Aggregates.ShouldNotBeNull(); logic.Aggregates.ShouldBeEmpty(); logic.Sagas.ShouldNotBeNull(); logic.Sagas.ShouldBeEmpty(); logic.Services.ShouldNotBeNull(); logic.Services.ShouldBeEmpty(); Should.Throw <ArgumentNullException>(() => logic.GetReactingSagas(null)); }
public void EmptySchema() { var schema = new LanguageSchemaBuilder().Build(); schema.Aggregates.ShouldNotBeNull(); schema.Aggregates.ShouldBeEmpty(); Should.Throw <ArgumentNullException>(() => schema.GetAggregate(null)); Should.Throw <ArgumentNullException>(() => schema.GetCommand(null)); Should.Throw <ArgumentNullException>(() => schema.GetQuery(null)); var anyTermType = typeof(Object); // no matter what it is because language is empty Should.Throw <ArgumentOutOfRangeException>(() => schema.GetAggregate(anyTermType)); Should.Throw <ArgumentOutOfRangeException>(() => schema.GetCommand(anyTermType)); Should.Throw <ArgumentOutOfRangeException>(() => schema.GetQuery(anyTermType)); var anyTermName = "sdfsdf"; // no matter what it is because language is empty Should.Throw <LanguageSchemaException>(() => schema.FindCommand(anyTermName, anyTermName)); }