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)); }
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)); }