feat: emit notification event on player creation
This commit is contained in:
@@ -31,6 +31,7 @@ describe('TeamsService#getOverviewStats theoretical balance', () => {
|
||||
access as any,
|
||||
{} as any,
|
||||
{} as any,
|
||||
{ emit: jest.fn() } as any,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -290,6 +291,7 @@ describe('TeamsService#getTeamTransactionsJournal', () => {
|
||||
access as any,
|
||||
{} as any,
|
||||
{} as any,
|
||||
{ emit: jest.fn() } as any,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -410,6 +412,7 @@ describe('TeamsService#createNewTeam', () => {
|
||||
{} as any,
|
||||
{} as any,
|
||||
dataSource as any,
|
||||
{ emit: jest.fn() } as any,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -464,3 +467,50 @@ describe('TeamsService#createNewTeam', () => {
|
||||
expect(logger.info).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('TeamsService.createNewPlayer', () => {
|
||||
const repository = { findOneBy: jest.fn() };
|
||||
const playerRepository = { create: jest.fn((value) => value), save: jest.fn() };
|
||||
const rolesRepository = { findOneBy: jest.fn() };
|
||||
const logger = { info: jest.fn() };
|
||||
const access = { assertManager: jest.fn() };
|
||||
const eventEmitter = { emit: jest.fn() };
|
||||
let service: TeamsService;
|
||||
|
||||
beforeEach(() => {
|
||||
jest.resetAllMocks();
|
||||
access.assertManager.mockResolvedValue(undefined);
|
||||
rolesRepository.findOneBy.mockResolvedValue({ id: 1, name: 'player' });
|
||||
repository.findOneBy.mockResolvedValue({ id: 10, name: 'Team A' });
|
||||
playerRepository.save.mockImplementation((value) =>
|
||||
Promise.resolve({ ...value, id: 55 }),
|
||||
);
|
||||
service = new TeamsService(
|
||||
repository as any,
|
||||
playerRepository as any,
|
||||
{} as any,
|
||||
rolesRepository as any,
|
||||
{} as any,
|
||||
{} as any,
|
||||
logger as any,
|
||||
access as any,
|
||||
{} as any,
|
||||
{} as any,
|
||||
eventEmitter as any,
|
||||
);
|
||||
});
|
||||
|
||||
it('emits a player-created event with the new player id and name', async () => {
|
||||
await service.createNewPlayer('10', { firstName: 'Ada', lastName: 'Lovelace', teamRole: undefined }, '5');
|
||||
|
||||
expect(eventEmitter.emit).toHaveBeenCalledWith(
|
||||
'notifications.player.created',
|
||||
expect.objectContaining({
|
||||
teamId: 10,
|
||||
actorUserId: 5,
|
||||
playerId: 55,
|
||||
playerName: 'Ada Lovelace',
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { LoggingService } from 'src/database/logging/logging.service';
|
||||
import { NOTIFICATION_EVENT_NAME } from '../notifications/events/notification-event-names';
|
||||
import { PlayerCreatedEvent } from '../notifications/events/player-created.event';
|
||||
import { Player } from 'src/players/entities/player.entity';
|
||||
import { TeamRole } from 'src/team-roles/entities/team-roles.entity';
|
||||
import { CreateTeamSettingDTO } from 'src/team-settings/dto/create-team-setting.dto';
|
||||
@@ -51,6 +54,7 @@ export class TeamsService {
|
||||
@InjectRepository(User)
|
||||
private usersRepository: Repository<User>,
|
||||
private dataSource: DataSource,
|
||||
private eventEmitter: EventEmitter2,
|
||||
) {}
|
||||
|
||||
async getOverview(teamId: string, actorUserId: string) {
|
||||
@@ -165,6 +169,11 @@ export class TeamsService {
|
||||
details: `Spieler ${playerSaved.id}, ${p.firstName} ${p.lastName} erstellt`,
|
||||
userId: Number(id),
|
||||
});
|
||||
|
||||
this.eventEmitter.emit(
|
||||
NOTIFICATION_EVENT_NAME.playerCreated,
|
||||
new PlayerCreatedEvent(Number(id), Number(actorUserId), playerSaved.id, `${p.firstName} ${p.lastName}`),
|
||||
);
|
||||
return playerSaved;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user