esdf
Version:
a frugal event-sourced domain-driven design framework with elements of cqrs
29 lines (23 loc) • 1.01 kB
JavaScript
var Repository = require('../utils/Repository.js').Repository;
var DummyEventSink = require('../EventStore/DummyEventSink.js').DummyEventSink;
var DummyEventSinkStreamer = require('../EventStore/DummyEventSinkStreamer.js').DummyEventSinkStreamer;
var AggregateLoader = require('../utils/loadAggregate.js');
var EventEmitter = require('events').EventEmitter;
function TestEnvironment() {
var self = this;
self.sink = new DummyEventSink();
self.loader = AggregateLoader.createAggregateLoader(self.sink, undefined);
self.repository = new Repository(self.loader);
self.streamer = new DummyEventSinkStreamer(self.sink);
self.receiver = new EventEmitter();
self.streamer.setPublisher({
publishCommit: function publishCommit(commit) {
// Publish each Domain Event as a separate event from the emitter.
commit.events.forEach(function(event) {
self.receiver.emit(event.eventType, event, commit);
});
}
});
self.streamer.start();
}
module.exports.TestEnvironment = TestEnvironment;