public JournalProjectionDispatcherTest(ITestOutputHelper output) { var converter = new Converter(output); Console.SetOut(converter); _world = World.StartWithDefaults("test-journal-projections"); _accessHolder = new AccessHolder(); var descriptions = new List <ProjectToDescription> { ProjectToDescription <OneHappenedProjectionActor> .With <OneHappened>(() => new OneHappenedProjectionActor(_accessHolder)), ProjectToDescription <TwoHappenedProjectionActor> .With <TwoHappened>(() => new TwoHappenedProjectionActor(_accessHolder)), ProjectToDescription <AllHappenedProjectionActor> .With <OneHappened>(() => new AllHappenedProjectionActor(_accessHolder)) .AndWith <TwoHappened>() .AndWith <ThreeHappened>() }; var dispatcherProtocols = _world.Stage.ActorFor( new[] { typeof(IDispatcher), typeof(IProjectionDispatcher) }, Definition.Has(() => new TextProjectionDispatcherActor(descriptions))); var dispatchers = Protocols.Two <IDispatcher, IProjectionDispatcher>(dispatcherProtocols); var dispatcher = dispatchers._1; _journal = Journal <string> .Using <InMemoryJournalActor <string> >(_world.Stage, dispatcher); EntryAdapterProvider.Instance(_world).RegisterAdapter(new OneHappenedAdapter()); EntryAdapterProvider.Instance(_world).RegisterAdapter(new TwoHappenedAdapter()); EntryAdapterProvider.Instance(_world).RegisterAdapter(new ThreeHappenedAdapter()); _appendInterest = _world.Stage.ActorFor <IAppendResultInterest>(() => new JournalAppendResultInterest()); }
public void TestThatDescribedProjectionsRegister() { var description = ProjectToDescription <DescribedProjection> .With(() => new DescribedProjection(), "op1", "op2"); var dispatcher = World.ActorFor <IDispatcher>(() => new TextProjectionDispatcherActor(new List <ProjectToDescription> { description })); var outcome = new Outcome(2); var accessOutcome = outcome.AfterCompleting(2); dispatcher.ControlWith(outcome); var state = new TextState("123", typeof(object), 1, "blah1", 1, Metadata.With("", "op1")); dispatcher.Dispatch(new Dispatchable("123", DateTimeOffset.Now, state, new List <IEntry>())); var state2 = new TextState("1235", typeof(object), 1, "blah2", 1, Metadata.With("", "op2")); dispatcher.Dispatch(new Dispatchable("1235", DateTimeOffset.Now, state2, new List <IEntry>())); Assert.Equal(2, accessOutcome.ReadFrom <int>("count")); }