Skip to content

Commit

Permalink
fix(players): get rid of the getPlayerGames() endpoint (#1705)
Browse files Browse the repository at this point in the history
BREAKING CHANGE: /players/:playerId/games endpoint is gone
  • Loading branch information
garrappachc committed Jun 5, 2022
1 parent 1b0b903 commit ec78d98
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 90 deletions.
51 changes: 0 additions & 51 deletions src/players/controllers/players.controller.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import { Test, TestingModule } from '@nestjs/testing';
import { PlayersController } from './players.controller';
import { PlayersService } from '../services/players.service';
import { Player } from '../models/player';
import { GamesService } from '@/games/services/games.service';
import { Game } from '@/games/models/game';
import { PlayerStatsDto } from '../dto/player-stats.dto';
import { PlayerSkillService } from '../services/player-skill.service';
import { PlayerSkill } from '../models/player-skill';
Expand All @@ -18,7 +16,6 @@ import { plainToInstance } from 'class-transformer';
import { PlayerBan } from '../models/player-ban';
import { LinkedProfilesService } from '../services/linked-profiles.service';
import { LinkedProfileProviderName } from '../types/linked-profile-provider-name';
import { LinkedProfilesDto } from '../dto/linked-profiles.dto';
import { Types } from 'mongoose';

jest.mock('../services/linked-profiles.service');
Expand Down Expand Up @@ -60,25 +57,6 @@ class PlayersServiceStub {
}
}

class GamesServiceStub {
games: Game[] = [
{ number: 1, map: 'cp_fake_rc1', state: 'ended', slots: [] } as Game,
{ number: 2, map: 'cp_fake_rc2', state: 'launching', slots: [] } as Game,
];
getPlayerGames(
playerId: string,
sort: any = { launchedAt: -1 },
limit = 10,
skip = 0,
) {
return Promise.resolve(this.games);
}

getPlayerGameCount() {
return Promise.resolve(2);
}
}

class PlayerSkillServiceStub {
skill: PlayerSkill = {
player: 'FAKE_ID' as any,
Expand Down Expand Up @@ -142,7 +120,6 @@ class PlayerBansServiceStub {
describe('Players Controller', () => {
let controller: PlayersController;
let playersService: PlayersServiceStub;
let gamesService: GamesServiceStub;
let playerSkillService: PlayerSkillServiceStub;
let playerBansService: PlayerBansServiceStub;
let linkedProfilesService: jest.Mocked<LinkedProfilesService>;
Expand All @@ -151,7 +128,6 @@ describe('Players Controller', () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
{ provide: PlayersService, useClass: PlayersServiceStub },
{ provide: GamesService, useClass: GamesServiceStub },
{ provide: PlayerSkillService, useClass: PlayerSkillServiceStub },
{ provide: PlayerBansService, useClass: PlayerBansServiceStub },
LinkedProfilesService,
Expand All @@ -162,7 +138,6 @@ describe('Players Controller', () => {

controller = module.get<PlayersController>(PlayersController);
playersService = module.get(PlayersService);
gamesService = module.get(GamesService);
playerSkillService = module.get(PlayerSkillService);
playerBansService = module.get(PlayerBansService);
linkedProfilesService = module.get(LinkedProfilesService);
Expand Down Expand Up @@ -221,32 +196,6 @@ describe('Players Controller', () => {
});
});

describe('#getPlayerGames()', () => {
it('should return player games', async () => {
const spy1 = jest.spyOn(gamesService, 'getPlayerGames');
const spy2 = jest.spyOn(gamesService, 'getPlayerGameCount');

const ret = await controller.getPlayerGames(
playersService.player,
44,
52,
'launched_at',
);
expect(spy1).toHaveBeenCalledWith('FAKE_ID', { launchedAt: 1 }, 44, 52);
expect(spy2).toHaveBeenCalled();
expect(ret).toEqual({
results: gamesService.games,
itemCount: 2,
} as any);
});

it('should throw an error unless the sort param is correct', async () => {
await expect(
controller.getPlayerGames(playersService.player, 3, 5, 'lol'),
).rejects.toThrow();
});
});

describe('#getPlayerStats()', () => {
it('should return player stats', async () => {
const spy = jest.spyOn(playersService, 'getPlayerStats');
Expand Down
39 changes: 0 additions & 39 deletions src/players/controllers/players.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ import {
Patch,
Body,
BadRequestException,
ParseIntPipe,
Query,
Put,
Post,
UsePipes,
ValidationPipe,
HttpCode,
Header,
UseInterceptors,
CacheInterceptor,
CacheTTL,
Expand All @@ -22,7 +20,6 @@ import { PlayersService } from '../services/players.service';
import { ObjectIdValidationPipe } from '@/shared/pipes/object-id-validation.pipe';
import { Player } from '../models/player';
import { Auth } from '@/auth/decorators/auth.decorator';
import { GamesService } from '@/games/services/games.service';
import { PlayerSkillService } from '../services/player-skill.service';
import { PlayerBansService } from '../services/player-bans.service';
import { PlayerBan } from '../models/player-ban';
Expand All @@ -45,7 +42,6 @@ import { PlayerBanDto } from '../dto/player-ban.dto';
export class PlayersController {
constructor(
private playersService: PlayersService,
private gamesService: GamesService,
private playerSkillService: PlayerSkillService,
private playerBansService: PlayerBansService,
private linkedProfilesService: LinkedProfilesService,
Expand Down Expand Up @@ -86,41 +82,6 @@ export class PlayersController {
return await this.playersService.updatePlayer(player.id, update, admin.id);
}

/**
* @deprecated
*/
@Get(':id/games')
@Header('Warning', '299 - "Deprecated API"')
async getPlayerGames(
@Param('id', PlayerByIdPipe) player: Player,
@Query('limit', ParseIntPipe) limit = 10,
@Query('offset', ParseIntPipe) offset = 0,
@Query('sort') sort = '-launched_at',
) {
let sortParam: { launchedAt: 1 | -1 };
switch (sort) {
case '-launched_at':
case '-launchedAt':
sortParam = { launchedAt: -1 };
break;

case 'launched_at':
case 'launchedAt':
sortParam = { launchedAt: 1 };
break;

default:
throw new BadRequestException('invalid value for the sort parameter');
}

const [results, itemCount] = await Promise.all([
this.gamesService.getPlayerGames(player.id, sortParam, limit, offset),
this.gamesService.getPlayerGameCount(player.id),
]);

return { results, itemCount };
}

@CacheTTL(12 * 60 * 60)
@Get(':id/stats')
async getPlayerStats(
Expand Down

0 comments on commit ec78d98

Please sign in to comment.