fix: resolve missing Sonarr link button on TV request cards (fixes #58)
This commit is contained in:
@@ -233,6 +233,48 @@ describe('GET /api/ombi/requests', () => {
|
||||
expect(res.body.requests.movie[0].requestedUser.userName).toBe('adminuser');
|
||||
});
|
||||
|
||||
it('decorates TV requests with Sonarr links using tvDbId camelCase property (Issue #58)', async () => {
|
||||
// 1. Setup mock instance config
|
||||
process.env.SONARR_INSTANCES = JSON.stringify([
|
||||
{ id: 'sonarr-1', name: 'Test Sonarr', url: 'https://sonarr.test', apiKey: 'sonarr-key' }
|
||||
]);
|
||||
|
||||
// Reset and re-initialize retrievers registry to pick up the Sonarr instance
|
||||
arrRetrieverRegistry.retrievers.clear();
|
||||
arrRetrieverRegistry.initialized = false;
|
||||
|
||||
// 2. Setup mock Ombi TV request carrying `tvDbId` instead of `theTvDbId`
|
||||
const tvRequestsWithTvDbId = [
|
||||
{ id: 4, title: 'Superman Show', requestedUser: { userName: 'adminuser' }, requestedByAlias: 'adminuser', type: 'tv', tvDbId: '101' }
|
||||
];
|
||||
|
||||
nock.cleanAll();
|
||||
setupOmbiRequestMocks(OMBI_REQUESTS.movie, tvRequestsWithTvDbId);
|
||||
|
||||
// 3. Mock Sonarr API series call returning the series with matching tvdbId and titleSlug
|
||||
nock('https://sonarr.test')
|
||||
.get('/api/v3/series')
|
||||
.reply(200, [
|
||||
{ tvdbId: 101, title: 'Superman Show', titleSlug: 'superman-show' }
|
||||
]);
|
||||
|
||||
const { cookies } = await authenticateUser(app, 'AdminUser', true);
|
||||
|
||||
const res = await request(app)
|
||||
.get('/api/ombi/requests?showAll=true')
|
||||
.set('Cookie', cookies)
|
||||
.expect(200);
|
||||
|
||||
// 4. Assert decoration succeeded
|
||||
const supermanShow = res.body.requests.tv.find(r => r.id === 4);
|
||||
expect(supermanShow).toBeDefined();
|
||||
expect(supermanShow.arrLink).toBe('https://sonarr.test/series/superman-show');
|
||||
expect(supermanShow.arrType).toBe('sonarr');
|
||||
|
||||
// Clean up
|
||||
delete process.env.SONARR_INSTANCES;
|
||||
});
|
||||
|
||||
it('handles case-insensitive username matching', async () => {
|
||||
const requestsWithMixedCase = [
|
||||
{ id: 1, title: 'Test Movie', requestedUser: { userName: 'TestUser' }, requestedByAlias: 'TestUser', type: 'movie' },
|
||||
|
||||
Reference in New Issue
Block a user