feat: v2 return team event type hosts username (#21617)

* feat: return team event type hosts username

* docs: team event types hosts username in return
This commit is contained in:
Lauris Skraucis
2025-05-29 14:58:40 +03:00
committed by GitHub
parent 2cbf805ffb
commit 044df04d3f
6 changed files with 59 additions and 5 deletions
@@ -89,11 +89,13 @@ describe("Organizations Event Types Endpoints", () => {
teammate1 = await userRepositoryFixture.create({
email: teammate1Email,
username: teammate1Email,
name: "alice",
});
teammate2 = await userRepositoryFixture.create({
email: teammate2Email,
username: teammate2Email,
name: "bob",
});
falseTestUser = await userRepositoryFixture.create({
@@ -432,6 +434,21 @@ describe("Organizations Event Types Endpoints", () => {
const responseTeamEvent = responseBody.data.find((event) => event.teamId === team.id);
expect(responseTeamEvent).toBeDefined();
expect(responseTeamEvent?.hosts).toEqual([
{
userId: teammate1.id,
name: teammate1.name,
username: teammate1.username,
avatarUrl: teammate1.avatarUrl,
},
{
userId: teammate2.id,
name: teammate2.name,
username: teammate2.username,
avatarUrl: teammate2.avatarUrl,
},
]);
if (!responseTeamEvent) {
throw new Error("Team event not found");
}
@@ -93,7 +93,7 @@ export class OutputOrganizationsEventTypesService {
const hosts =
databaseEventType.schedulingType === "MANAGED"
? await this.getManagedEventTypeHosts(databaseEventType.id)
: await this.transformHosts(databaseEventType.hosts, databaseEventType.schedulingType);
: await this.getNonManagedEventTypeHosts(databaseEventType.hosts, databaseEventType.schedulingType);
return {
...rest,
@@ -138,13 +138,18 @@ export class OutputOrganizationsEventTypesService {
for (const child of children) {
if (child.userId) {
const user = await this.usersRepository.findById(child.userId);
transformedHosts.push({ userId: child.userId, name: user?.name || "" });
transformedHosts.push({
userId: child.userId,
name: user?.name || "",
username: user?.username || "",
avatarUrl: user?.avatarUrl,
});
}
}
return transformedHosts;
}
async transformHosts(
async getNonManagedEventTypeHosts(
databaseHosts: Host[],
schedulingType: SchedulingType | null
): Promise<TeamEventTypeResponseHost[]> {
@@ -160,6 +165,7 @@ export class OutputOrganizationsEventTypesService {
transformedHosts.push({
userId: databaseHost.userId,
name: databaseUser?.name || "",
username: databaseUser?.username || "",
mandatory: !!databaseHost.isFixed,
priority: getPriorityLabel(databaseHost.priority || 2),
avatarUrl: databaseUser?.avatarUrl,
@@ -168,6 +174,7 @@ export class OutputOrganizationsEventTypesService {
transformedHosts.push({
userId: databaseHost.userId,
name: databaseUser?.name || "",
username: databaseUser?.username || "",
avatarUrl: databaseUser?.avatarUrl,
});
}
@@ -85,11 +85,13 @@ describe("Organizations Event Types Endpoints", () => {
teamMember1 = await userRepositoryFixture.create({
email: teammate1Email,
username: teammate1Email,
name: "alice",
});
teamMember2 = await userRepositoryFixture.create({
email: teammate2Email,
username: teammate2Email,
name: "bob",
});
falseTestUser = await userRepositoryFixture.create({
@@ -403,6 +405,21 @@ describe("Organizations Event Types Endpoints", () => {
const responseTeamEvent = responseBody.data.find((event) => event.teamId === team.id);
expect(responseTeamEvent).toBeDefined();
expect(responseTeamEvent?.hosts).toEqual([
{
userId: teamMember1.id,
name: teamMember1.name,
username: teamMember1.username,
avatarUrl: teamMember1.avatarUrl,
},
{
userId: teamMember2.id,
name: teamMember2.name,
username: teamMember2.username,
avatarUrl: teamMember2.avatarUrl,
},
]);
if (!responseTeamEvent) {
throw new Error("Team event not found");
}