예제 #1
0
        public static AggregateRepository <TAggregate> CreateEnvironment <TAggregate>(
            out EventBus eventBus,
            out EventStore eventStore,
            int snapshotThreashold = 10)
            where TAggregate : IAggregateRoot, new()
        {
            TestDatabase.Items.Clear();

            var savedHandler      = new TestAggregateSavedEventHandler();
            var dependencyService = DependencyServiceMock.GetMock(new List <DependencyDescriptor>()
            {
                new DependencyDescriptor(typeof(IEventHandler <TestAggregateCreatedEvent>),
                                         new TestAggregateCreatedEventHandler()),
                new DependencyDescriptor(typeof(IEventHandler <TestAggregateChangedEvent>),
                                         new TestAggregateChangedEventHandler()),
                new DependencyDescriptor(typeof(IEventHandler <AggregateSavedEvent>), savedHandler)
            });

            eventBus   = new EventBus(dependencyService);
            eventStore = new EventStore(eventBus, new InMemoryEventStore(), PerformanceCounterMock.GetMock());
            var snapshotStore     = new SnapshotStore(new InMemorySnapshotStore());
            var repository        = new AggregateRepository <TAggregate>(eventStore, snapshotStore);
            var snapshotProcessor = new SnapshotProcessor(snapshotStore,
                                                          new List <ISnapshotableRepository>()
            {
                repository
            },
                                                          snapshotThreashold, PerformanceCounterMock.GetMock());

            savedHandler.Processor = snapshotProcessor;

            return(repository);
        }
        public void Initialize()
        {
            this.logger = new Mock <ILogger>(MockBehavior.Strict);
            this.createSnapshotMultiplexer = new Mock <ICreateSnapshotMultiplexer>(MockBehavior.Strict);
            this.createAllSnapshots        = new Mock <ICreateAllSnapshotsProcessor>(MockBehavior.Strict);

            this.target = new SnapshotProcessor(
                this.createSnapshotMultiplexer.Object,
                this.createAllSnapshots.Object);
        }