Skip to content

Commit

Permalink
fix: minor
Browse files Browse the repository at this point in the history
  • Loading branch information
whiitex committed May 25, 2024
1 parent defd47b commit dad4992
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 96 deletions.
75 changes: 75 additions & 0 deletions api/src/mocks/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -229,3 +229,78 @@ export const mockAvailability = {
export const mockCreateAvailabilityDto = {
timeSlotId: mockTimeSlot.id,
} as CreateAvailabilityDto;

export const mockTimeSlotsJoined = [
{
start: new Date('2022-01-01T09:00:00'),
end: new Date('2022-01-01T10:00:00'),
id: 1,
recruitmentSession: 3,
availabilities: [
{
state: AvailabilityState.Interviewing,
user: {
role: Role.None,
is_board: false,
is_expert: true,
},
},
{
state: AvailabilityState.Free,
user: {
role: Role.Member,
is_board: true,
is_expert: false,
},
},
{
state: AvailabilityState.Free,
user: {
role: Role.Applicant,
is_board: false,
is_expert: false,
},
},
{
state: AvailabilityState.Free,
user: {
role: Role.Member,
is_board: false,
is_expert: true,
},
},
{
state: AvailabilityState.Interviewing,
user: {
role: Role.Member,
is_board: false,
is_expert: true,
},
},
{
state: AvailabilityState.Interviewing,
user: {
role: Role.Admin,
is_board: false,
is_expert: true,
},
},
],
},
{
start: new Date('2022-01-01T9:00:00'),
end: new Date('2022-01-01T20:00:00'),
id: 2,
recruitmentSession: 3,
availabilities: [
{
state: AvailabilityState.Free,
user: {
role: Role.Member,
is_board: true,
is_expert: true,
},
},
],
},
];
82 changes: 7 additions & 75 deletions api/src/timeslots/timeslots.service.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { mockGenerateTimeSlots, mockTimeSlot, testDate } from 'src/mocks/data';
import {
mockGenerateTimeSlots,
mockTimeSlot,
mockTimeSlotsJoined,
testDate,
} from 'src/mocks/data';
import { mockedRepository } from 'src/mocks/repositories';
import { TestingModule, Test } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm';
Expand Down Expand Up @@ -283,80 +288,7 @@ describe('TimeSlotsService', () => {
innerJoinAndSelect: jest.fn().mockReturnThis(),
where: jest.fn().mockReturnThis(),
andWhere: jest.fn().mockReturnThis(),
getMany: jest.fn().mockResolvedValue([
{
start: new Date('2022-01-01T09:00:00'),
end: new Date('2022-01-01T10:00:00'),
id: 1,
recruitmentSession: 3,
availabilities: [
{
state: AvailabilityState.Interviewing,
user: {
role: Role.None,
is_board: false,
is_expert: true,
},
},
{
state: AvailabilityState.Free,
user: {
role: Role.Member,
is_board: true,
is_expert: false,
},
},
{
state: AvailabilityState.Free,
user: {
role: Role.Applicant,
is_board: false,
is_expert: false,
},
},
{
state: AvailabilityState.Free,
user: {
role: Role.Member,
is_board: false,
is_expert: true,
},
},
{
state: AvailabilityState.Interviewing,
user: {
role: Role.Member,
is_board: false,
is_expert: true,
},
},
{
state: AvailabilityState.Interviewing,
user: {
role: Role.Admin,
is_board: false,
is_expert: true,
},
},
],
},
{
start: new Date('2022-01-01T9:00:00'),
end: new Date('2022-01-01T20:00:00'),
id: 2,
recruitmentSession: 3,
availabilities: [
{
state: AvailabilityState.Free,
user: {
role: Role.Member,
is_board: true,
is_expert: true,
},
},
],
},
]),
getMany: jest.fn().mockResolvedValue(mockTimeSlotsJoined),
};

// Mock the timeSlotRepository and its methods
Expand Down
35 changes: 14 additions & 21 deletions api/src/timeslots/timeslots.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -185,30 +185,23 @@ export class TimeSlotsService {

const allMatches = await queryBuilder.getMany();

let goodTimeSlots: TimeSlot[] = [];
allMatches.forEach((timeSlot) => {
let boardMembers = 0;
let expertMembers = 0;
for (let availability of timeSlot.availabilities) {
// redundant checks
if (availability.state !== AvailabilityState.Free) continue;
if (availability.user.role === Role.None) continue;
if (availability.user.role === Role.Applicant) continue;

if (availability.user.is_board) ++boardMembers;
else if (availability.user.is_expert) ++expertMembers;
}

if ((boardMembers && expertMembers) || boardMembers > 1) {
const timeslotToPush = {
return allMatches
.filter((timeSlot) => {
let [boardMembers, expertMembers] = [0, 0];
for (let av of timeSlot.availabilities) {
if (av.state !== AvailabilityState.Free) continue;
if ([Role.None, Role.Applicant].includes(av.user.role)) continue;
if (av.user.is_board) ++boardMembers;
else if (av.user.is_expert) ++expertMembers;
}
return (boardMembers && expertMembers) || boardMembers > 1;
})
.map((timeSlot) => {
return {
id: timeSlot.id,
start: timeSlot.start,
end: timeSlot.end,
} as TimeSlot;
goodTimeSlots.push(timeslotToPush);
}
});

return goodTimeSlots;
});
}
}

0 comments on commit dad4992

Please sign in to comment.