Files
sofarr/tests/unit/ombiHelpers.test.js
T
gronod 4aa3590017
Build and Push Docker Image / build (push) Successful in 53s
Docs Check / Markdown lint (push) Successful in 1m36s
Licence Check / Licence compatibility and copyright header verification (push) Failing after 2m31s
CI / Security audit (push) Successful in 2m55s
Docs Check / Mermaid diagram parse check (push) Successful in 3m24s
CI / Swagger Validation & Coverage (push) Successful in 3m30s
CI / Tests & coverage (push) Successful in 3m50s
test: remediate test suite, enable skipped frontend/SSE tests, and add comprehensive unit tests
- Deleted redundant unit test file tests/unit/dashboard.test.js
- Enabled skipped frontend DOM state and API tests in tests/frontend/state.test.js
- Fixed Supertest client socket abort exception in SSE stream integration tests using new graceful testClose parameter
- Consolidated duplicate helpers in server/routes/history.js and server/utils/arrRetrievers.js to unified services TagMatcher and DownloadAssembler
- Added comprehensive unit tests for loadSecrets.js, PollingSonarrRetriever.js, PollingRadarrRetriever.js, and ombiHelpers.js
- Achieved a 100% Vitest pass rate (834/834 tests) with robust code coverage
2026-05-22 13:33:21 +01:00

123 lines
4.2 KiB
JavaScript

// Copyright (c) 2026 Gordon Bolton. MIT License.
import { describe, it, expect } from 'vitest';
const {
extractRequestedUser,
filterRequestsByUser
} = require('../../server/utils/ombiHelpers');
describe('ombiHelpers', () => {
describe('extractRequestedUser', () => {
it('returns empty string if request is null or undefined', () => {
expect(extractRequestedUser(null)).toBe('');
expect(extractRequestedUser(undefined)).toBe('');
});
it('returns requestedUser if requestedUser is a string', () => {
const req = { requestedUser: 'testuser', requestedByAlias: 'alias' };
expect(extractRequestedUser(req)).toBe('testuser');
});
it('falls back to requestedByAlias if requestedUser is missing', () => {
const req = { requestedByAlias: 'aliasuser' };
expect(extractRequestedUser(req)).toBe('aliasuser');
});
it('returns alias from requestedUser object if present', () => {
const req = {
requestedUser: {
alias: 'alias_val',
userAlias: 'userAlias_val',
userName: 'userName_val',
normalizedUserName: 'normalized_val'
}
};
expect(extractRequestedUser(req)).toBe('alias_val');
});
it('returns userAlias from requestedUser object if alias is missing', () => {
const req = {
requestedUser: {
userAlias: 'userAlias_val',
userName: 'userName_val',
normalizedUserName: 'normalized_val'
}
};
expect(extractRequestedUser(req)).toBe('userAlias_val');
});
it('returns userName from requestedUser object if alias/userAlias are missing', () => {
const req = {
requestedUser: {
userName: 'userName_val',
normalizedUserName: 'normalized_val'
}
};
expect(extractRequestedUser(req)).toBe('userName_val');
});
it('returns normalizedUserName from requestedUser object if other fields are missing', () => {
const req = {
requestedUser: {
normalizedUserName: 'normalized_val'
}
};
expect(extractRequestedUser(req)).toBe('normalized_val');
});
it('falls back to requestedByAlias when requestedUser is empty object {} (bug fix)', () => {
const req = {
requestedUser: {},
requestedByAlias: 'fallback_alias'
};
expect(extractRequestedUser(req)).toBe('fallback_alias');
});
it('returns empty string if requestedUser is empty object {} and requestedByAlias is missing', () => {
const req = {
requestedUser: {}
};
expect(extractRequestedUser(req)).toBe('');
});
});
describe('filterRequestsByUser', () => {
const movie1 = { id: 1, requestedUser: { userName: 'user1' }, type: 'movie' };
const movie2 = { id: 2, requestedUser: { userName: 'user2' }, type: 'movie' };
const tv1 = { id: 3, requestedUser: { alias: 'User1' }, type: 'tv' };
it('returns empty array if requests input is not an array', () => {
expect(filterRequestsByUser(null, 'user1', false)).toEqual([]);
expect(filterRequestsByUser({}, 'user1', false)).toEqual([]);
});
it('returns all requests unmodified if showAll is true', () => {
const requests = [movie1, movie2];
expect(filterRequestsByUser(requests, 'user1', true)).toEqual(requests);
});
it('returns all requests unmodified if username is falsy or missing', () => {
const requests = [movie1, movie2];
expect(filterRequestsByUser(requests, '', false)).toEqual(requests);
expect(filterRequestsByUser(requests, null, false)).toEqual(requests);
});
it('filters requests correctly for a specific user', () => {
const requests = [movie1, movie2, tv1];
const result = filterRequestsByUser(requests, 'user1', false);
expect(result).toHaveLength(2);
expect(result).toContainEqual(movie1);
expect(result).toContainEqual(tv1);
expect(result).not.toContainEqual(movie2);
});
it('performs case-insensitive filtering', () => {
const requests = [movie1, movie2, tv1];
const result = filterRequestsByUser(requests, 'USER1', false);
expect(result).toHaveLength(2);
expect(result).toContainEqual(movie1);
expect(result).toContainEqual(tv1);
});
});
});