Skip to content
Snippets Groups Projects
Commit fd47a0b9 authored by Peter Hooper's avatar Peter Hooper
Browse files

Add missing files for definition of Event

parent d59f3944
No related branches found
No related tags found
No related merge requests found
import { Event } from './event';
describe('Event class', () => {
const create = (T, type, payload): Event => new T(type, payload);
it('initialises members', () => {
const x = create(Event, 'test', 'some-payload');
expect(x.id).toHaveLength(41);
expect(x.created instanceof Date).toBeTruthy();
expect(x.created.toISOString()).toHaveLength(24);
expect(x.eventType).toBe('test');
expect(x.payload).toBe('some-payload');
});
it('has correct members', () => {
const keys = Object.keys(create(Event, 'test', 'payload'));
expect(keys).toHaveLength(4);
expect(keys).toContain('id');
expect(keys).toContain('created');
expect(keys).toContain('eventType');
expect(keys).toContain('payload');
});
});
import { v4 as uuid } from 'uuid';
import { EventType } from './types';
/**
* Event - Used in this abstract form throughout this library.
* It is abstract so you cannot create an instance of it - derived Event types
* and their associated Payload types are the responsibility of the caller.
*/
export abstract class Event {
readonly id: string;
readonly created: Date;
constructor(readonly eventType: EventType, readonly payload: object) {
this.id = eventType.toString() + '_' + uuid();
this.created = new Date();
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment