@dolittle/sdk.aggregates
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
50 lines (38 loc) • 2.29 kB
text/typescript
// Copyright (c) Dolittle. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
import { describeThis } from '@dolittle/typescript.testing';
import { EventSourceId } from '@dolittle/sdk.events';
import { AnAggregateRoot } from './given/an_aggregate_root';
import { event_types, EventWithOnMethod, EventWithoutOnMethod } from './given/events';
describeThis(__filename, () => {
let event_source: EventSourceId;
let aggregate_root: AnAggregateRoot;
beforeEach(() => {
event_source = EventSourceId.from('f77f4484-e683-4971-9b90-4cbfafbd21f2');
aggregate_root = new AnAggregateRoot(event_source);
aggregate_root.eventTypes = event_types();
});
describe('that does not have an on-method', () => {
let event: EventWithoutOnMethod;
beforeEach(() => {
event = new EventWithoutOnMethod('property');
aggregate_root.applyWithoutOnMethod(event);
});
it('should have applied one event', () => aggregate_root.appliedEvents.should.have.length(1));
it('should have applied the correct event', () => aggregate_root.appliedEvents[0].event.should.equal(event));
it('should not apply the event as public', () => aggregate_root.appliedEvents[0].isPublic.should.be.false);
it('should not have called an on-method', () => aggregate_root.onMethodEventsCalled.should.have.length(0));
});
describe('that has an on-method', () => {
let event: EventWithOnMethod;
beforeEach(() => {
event = new EventWithOnMethod(42);
aggregate_root.applyWithOnMethod(event);
});
it('should have applied one event', () => aggregate_root.appliedEvents.should.have.length(1));
it('should have applied the correct event', () => aggregate_root.appliedEvents[0].event.should.equal(event));
it('should not apply the event as public', () => aggregate_root.appliedEvents[0].isPublic.should.be.false);
it('should not have called an on-method', () => aggregate_root.onMethodEventsCalled.should.have.length(1));
it('should call the on-method with the correct event', () => aggregate_root.onMethodEventsCalled[0].should.equal(event));
});
});