Example #1
0
        public Specification()
        {
            var eventpublisher  = new SpecEventPublisher();
            var eventstorage    = new SpecEventStorage(eventpublisher, Given().ToList());
            var snapshotstorage = new SpecSnapShotStorage(Snapshot);

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage), eventstorage);

            Session = new Session(repository);

            try
            {
                Aggregate = Session.Get <TAggregate>(Guid.Empty);
            }
            catch (AggregateNotFoundException)
            {
            }

            var handler = BuildHandler();

            handler.Handle(When());

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
Example #2
0
        public Specification()
        {
            var eventpublisher  = new SpecEventPublisher();
            var eventstorage    = new SpecEventStorage(eventpublisher, Given().ToList());
            var snapshotstorage = new SpecSnapShotStorage(Snapshot);

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage), eventstorage);

            Session   = new Session(repository);
            Aggregate = GetAggregate().Result;

            dynamic handler = BuildHandler();

            if (handler is ICancellableCommandHandler <TCommand> )
            {
                handler.Handle(When(), new CancellationToken());
            }
            else if (handler is ICommandHandler <TCommand> )
            {
                handler.Handle(When());
            }
            else
            {
                throw new InvalidCastException($"{nameof(handler)} is not a command handler of type {typeof(TCommand)}");
            }

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
Example #3
0
        public Specification()
        {
            var eventpublisher  = new SpecEventPublisher();
            var eventstorage    = new SpecEventStorage(eventpublisher, Given().ToList());
            var snapshotstorage = new SpecSnapShotStorage(Snapshot);

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage), eventstorage);

            Session   = new Session(repository);
            Aggregate = GetAggregate().Result;

            var handler = BuildHandler();

            handler.Handle(When());

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
Example #4
0
        public void Run()
        {
            var eventstorage    = new SpecEventStorage(Given().ToList());
            var snapshotstorage = new SpecSnapShotStorage(Snapshot);
            var eventpublisher  = new SpecEventPublisher();

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage, eventpublisher), eventstorage);

            Session = new Session(repository);

            Aggregate = Session.GetAsync <TAggregate>(Guid.Empty).Result;

            var handler = BuildHandler();

            handler.HandleAsync(When());

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }