import { INestApplication } from '@nestjs/common'; import { Test } from '@nestjs/testing'; import request from 'supertest'; import { App } from 'supertest/types'; import { configureApplication } from '../app.config'; import { DEMO_CHARACTER_ID } from '../demo/demo-character.constants'; import { ReputationController } from './reputation.controller'; import { ReputationService } from './reputation.service'; describe('ReputationController', () => { let app: INestApplication; const getCharacterReputation = jest.fn(); beforeEach(async () => { getCharacterReputation.mockReset(); const module = await Test.createTestingModule({ controllers: [ReputationController], providers: [{ provide: ReputationService, useValue: { getCharacterReputation } }], }).compile(); app = module.createNestApplication(); configureApplication(app); await app.init(); }); afterEach(async () => { await app.close(); }); it('delegates GET /api/reputation to reputationService.getCharacterReputation', async () => { const entries = [ { factionKey: 'border-guard', factionName: 'Grenzwacht', reputation: 40, rank: 'STRANGER', rankLabel: 'Fremder', nextThreshold: 100, }, ]; getCharacterReputation.mockResolvedValue(entries); const response = await request(app.getHttpServer()).get('/api/reputation').expect(200); expect(getCharacterReputation).toHaveBeenCalledWith(DEMO_CHARACTER_ID); expect(response.body).toEqual(entries); }); });