Skip to content

Commit b083d70

Browse files
committed
Show event id in log
1 parent f39aae6 commit b083d70

File tree

4 files changed

+50
-7
lines changed

4 files changed

+50
-7
lines changed

src/queries/log/construct-view-model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Params} from '../query';
22
import {pipe} from 'fp-ts/lib/function';
3-
import {DomainEvent, User} from '../../types';
3+
import {StoredDomainEvent, User} from '../../types';
44
import {Dependencies} from '../../dependencies';
55
import * as TE from 'fp-ts/TaskEither';
66
import {ViewModel, LogSearch} from './view-model';
@@ -26,7 +26,7 @@ function parseQueryToLogSearch(query: Params): LogSearch {
2626
}
2727

2828
const applyLogSearch =
29-
(search: LogSearch) => (events: ReadonlyArray<DomainEvent>) =>
29+
(search: LogSearch) => (events: ReadonlyArray<StoredDomainEvent>) =>
3030
pipe(events, events => {
3131
const start = search.offset;
3232
const end = search.offset + search.limit;

src/queries/log/render.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ import {pipe} from 'fp-ts/lib/function';
22
import * as RA from 'fp-ts/ReadonlyArray';
33
import {html, safe, joinHtml, sanitizeString} from '../../types/html';
44
import {ViewModel, LogSearch} from './view-model';
5-
import {DomainEvent} from '../../types';
65
import {inspect} from 'node:util';
76
import {displayDate} from '../../templates/display-date';
87
import {DateTime} from 'luxon';
98
import {renderActor} from '../../types/actor';
109
import * as qs from 'qs';
1110

12-
const renderPayload = (event: DomainEvent) =>
11+
const renderPayload = (event: ViewModel['events'][number]) =>
1312
// eslint-disable-next-line unused-imports/no-unused-vars
14-
pipe(event, ({type, actor, recordedAt, ...payload}) =>
13+
pipe(event, ({type, actor, recordedAt, event_id, ...payload}) =>
1514
pipe(
1615
payload,
1716
Object.entries,
@@ -25,6 +24,7 @@ const renderEntry = (event: ViewModel['events'][number]) => html`
2524
<li>
2625
<b>${sanitizeString(event.type)}</b> by ${renderActor(event.actor)} at
2726
${displayDate(DateTime.fromJSDate(event.recordedAt))}<br />
27+
Event ID: ${sanitizeString(event.event_id)}<br />
2828
${renderPayload(event)}
2929
</li>
3030
`;

src/queries/log/view-model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {DomainEvent, User} from '../../types';
1+
import {StoredDomainEvent, User} from '../../types';
22

33
export interface LogSearch {
44
offset: number;
@@ -9,5 +9,5 @@ export type ViewModel = {
99
user: User;
1010
count: number;
1111
search: LogSearch;
12-
events: ReadonlyArray<DomainEvent>;
12+
events: ReadonlyArray<StoredDomainEvent>;
1313
};

tests/queries/log/render.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* @jest-environment jsdom
3+
*/
4+
5+
import {render} from '../../../src/queries/log/render';
6+
import {ViewModel} from '../../../src/queries/log/view-model';
7+
import {arbitraryUser} from '../../types/user.helper';
8+
import {UUID} from 'io-ts-types';
9+
10+
const renderPage = (viewModel: ViewModel) => {
11+
const body = document.createElement('body');
12+
body.innerHTML = render(viewModel);
13+
return body;
14+
};
15+
16+
describe('/event-log render', () => {
17+
it('shows the event id for each event', () => {
18+
const viewModel: ViewModel = {
19+
user: arbitraryUser(),
20+
count: 1,
21+
search: {
22+
offset: 0,
23+
limit: 10,
24+
},
25+
events: [
26+
{
27+
event_id: 'cb5bdc6d-f734-43e2-a025-b5d89a5ba3fc' as UUID,
28+
type: 'AreaCreated',
29+
actor: {tag: 'system'},
30+
recordedAt: new Date('1991-02-20T00:00:00.000Z'),
31+
name: 'Craft room',
32+
id: 'd1428735-0482-49c4-b16b-82503ccea74b' as UUID,
33+
},
34+
],
35+
};
36+
37+
const page = renderPage(viewModel);
38+
39+
expect(page.textContent).toContain('Event ID:');
40+
expect(page.textContent).toContain('cb5bdc6d-f734-43e2-a025-b5d89a5ba3fc');
41+
expect(page.textContent).not.toContain('event_id:');
42+
});
43+
});

0 commit comments

Comments
 (0)