chore: bump version to 1.7.20 and resolve Ombi user hydration issue
Build and Push Docker Image / build (push) Successful in 2m6s
Docs Check / Markdown lint (push) Successful in 1m58s
Licence Check / Licence compatibility and copyright header verification (push) Successful in 2m4s
Docs Check / Mermaid diagram parse check (push) Successful in 1m58s
CI / Security audit (push) Successful in 1m48s
CI / Tests & coverage (push) Successful in 1m59s
CI / Swagger Validation & Coverage (push) Successful in 1m47s
Build and Push Docker Image / build (push) Successful in 2m6s
Docs Check / Markdown lint (push) Successful in 1m58s
Licence Check / Licence compatibility and copyright header verification (push) Successful in 2m4s
Docs Check / Mermaid diagram parse check (push) Successful in 1m58s
CI / Security audit (push) Successful in 1m48s
CI / Tests & coverage (push) Successful in 1m59s
CI / Swagger Validation & Coverage (push) Successful in 1m47s
This commit is contained in:
@@ -336,4 +336,47 @@ describe('OmbiClient', () => {
|
||||
expect(result).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getUsers', () => {
|
||||
it('should return user array for successful request', async () => {
|
||||
const mockUsers = [
|
||||
{ id: '1', userName: 'Gordon' },
|
||||
{ id: '2', userName: 'Alice' }
|
||||
];
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Identity/Users')
|
||||
.matchHeader('ApiKey', apiKey)
|
||||
.reply(200, mockUsers);
|
||||
|
||||
const client = new OmbiClient(baseUrl, apiKey);
|
||||
const result = await client.getUsers();
|
||||
|
||||
expect(result).toEqual(mockUsers);
|
||||
});
|
||||
|
||||
it('should return empty array on API error', async () => {
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Identity/Users')
|
||||
.matchHeader('ApiKey', apiKey)
|
||||
.reply(500, { error: 'Internal Server Error' });
|
||||
|
||||
const client = new OmbiClient(baseUrl, apiKey);
|
||||
const result = await client.getUsers();
|
||||
|
||||
expect(result).toEqual([]);
|
||||
});
|
||||
|
||||
it('should return empty array on network error', async () => {
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Identity/Users')
|
||||
.matchHeader('ApiKey', apiKey)
|
||||
.replyWithError('Network error');
|
||||
|
||||
const client = new OmbiClient(baseUrl, apiKey);
|
||||
const result = await client.getUsers();
|
||||
|
||||
expect(result).toEqual([]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -766,4 +766,70 @@ describe('OmbiRetriever', () => {
|
||||
expect(stats.age).toBeGreaterThanOrEqual(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('hydration logic', () => {
|
||||
it('should hydrate requestedUser when missing but requestedUserId is present', async () => {
|
||||
const mockMovies = [
|
||||
{ id: 1, title: 'Movie 1', requestedUserId: 'gordon-id', requestedUser: null }
|
||||
];
|
||||
const mockTvShows = [];
|
||||
const mockUsers = [
|
||||
{ id: 'gordon-id', userName: 'Gordon', alias: 'G-Man' }
|
||||
];
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Request/movie')
|
||||
.reply(200, mockMovies);
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Request/tv')
|
||||
.reply(200, mockTvShows);
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Identity/Users')
|
||||
.reply(200, mockUsers);
|
||||
|
||||
const retriever = new OmbiRetriever(instanceConfig);
|
||||
const result = await retriever.getMovieRequests();
|
||||
|
||||
expect(result).toHaveLength(1);
|
||||
expect(result[0].requestedUser).toBeDefined();
|
||||
expect(result[0].requestedUser.userName).toBe('Gordon');
|
||||
expect(result[0].requestedUser.alias).toBe('G-Man');
|
||||
});
|
||||
|
||||
it('should not overwrite non-empty requestedUser object', async () => {
|
||||
const mockMovies = [
|
||||
{
|
||||
id: 1,
|
||||
title: 'Movie 1',
|
||||
requestedUserId: 'gordon-id',
|
||||
requestedUser: { userName: 'ExistingGordon', alias: 'ExistingG' }
|
||||
}
|
||||
];
|
||||
const mockTvShows = [];
|
||||
const mockUsers = [
|
||||
{ id: 'gordon-id', userName: 'Gordon', alias: 'G-Man' }
|
||||
];
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Request/movie')
|
||||
.reply(200, mockMovies);
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Request/tv')
|
||||
.reply(200, mockTvShows);
|
||||
|
||||
nock(baseUrl)
|
||||
.get('/api/v1/Identity/Users')
|
||||
.reply(200, mockUsers);
|
||||
|
||||
const retriever = new OmbiRetriever(instanceConfig);
|
||||
const result = await retriever.getMovieRequests();
|
||||
|
||||
expect(result).toHaveLength(1);
|
||||
expect(result[0].requestedUser.userName).toBe('ExistingGordon');
|
||||
expect(result[0].requestedUser.alias).toBe('ExistingG');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user