Beispiel #1
0
        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());
        }
Beispiel #2
0
 public TwoHappenedProjectionActor(AccessHolder accessHolder) => _accessHolder = accessHolder;