@modusign/ddd
Advanced tools
Comparing version 0.2.4 to 0.2.5
import { Entity } from './Entity'; | ||
import { Identity } from './Identity'; | ||
import { DomainEvent } from '../domainEvent'; | ||
export declare abstract class AggregateRoot<TEntity extends Entity<TEntity, TIdentity>, TIdentity extends Identity<TIdentity>> extends Entity<TEntity, TIdentity> { | ||
private readonly _eventStore; | ||
constructor(id: TIdentity); | ||
readonly domainEvents: DomainEvent[]; | ||
addDomainEvent<TDomainEvent extends DomainEvent>(event: TDomainEvent): void; | ||
} |
@@ -7,4 +7,11 @@ "use strict"; | ||
super(id); | ||
this._eventStore = []; | ||
} | ||
get domainEvents() { | ||
return this._eventStore; | ||
} | ||
addDomainEvent(event) { | ||
this._eventStore.push(event); | ||
} | ||
} | ||
exports.AggregateRoot = AggregateRoot; |
@@ -7,2 +7,3 @@ "use strict"; | ||
const AggregateRoot_1 = require("./AggregateRoot"); | ||
const domainEvent_1 = require("../domainEvent"); | ||
class UserId extends Identity_1.Identity { | ||
@@ -19,8 +20,12 @@ constructor(id) { | ||
} | ||
class UserCreated extends domainEvent_1.DomainEvent { | ||
} | ||
describe('Aggregate (abstract)', () => { | ||
let userId; | ||
let user; | ||
let userCreatedEvent; | ||
beforeEach(() => { | ||
userId = new UserId(uuid.v1()); | ||
user = new User(userId); | ||
userCreatedEvent = new UserCreated(); | ||
}); | ||
@@ -33,2 +38,16 @@ describe('Entity (inheritance)', () => { | ||
}); | ||
describe('.addDomainEvent()', () => { | ||
it('should push event to this._eventStore', () => { | ||
user.addDomainEvent(userCreatedEvent); | ||
const result = user._eventStore; | ||
expect(result).toEqual([userCreatedEvent]); | ||
}); | ||
}); | ||
describe('domainEvents (getter)', () => { | ||
it('should return this._eventStore', () => { | ||
user._eventStore = [userCreatedEvent]; | ||
const result = user.domainEvents; | ||
expect(result).toEqual([userCreatedEvent]); | ||
}); | ||
}); | ||
}); |
{ | ||
"name": "@modusign/ddd", | ||
"version": "0.2.4", | ||
"version": "0.2.5", | ||
"description": "```cli npm i @modusign/ddd ```", | ||
@@ -40,2 +40,3 @@ "main": "lib/index.js", | ||
"jest": "^24.8.0", | ||
"jest-date-mock": "^1.0.7", | ||
"ts-jest": "^24.0.2", | ||
@@ -42,0 +43,0 @@ "ts-node": "^8.2.0", |
15053
38
432
9