mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
* feat(tests): add comprehensive unit tests for various utility functions and views - Implement tests for cache utility to ensure proper behavior with no cache and TTL keys. - Add tests for common utilities including string manipulation and path handling. - Introduce tests for directory import functionality to validate file imports and pattern matching. - Create tests for git hash retrieval to handle fallback scenarios. - Develop tests for deprecated got utility to verify response handling and retry logic. - Enhance got utility tests to include request hooks and search parameter handling. - Mock header generator tests to validate user agent handling. - Expand helpers tests to cover current path retrieval and duration parsing. - Implement tests for ofetch utility to ensure proper proxy handling and logging. - Add OpenTelemetry metric tests to validate metric serialization. - Create proxy tests to verify multi-proxy selection and failure handling. - Introduce request rewriter tests to validate fetch and get wrapper functionality. - Add timezone utility tests to handle various input types. - Implement view tests for Atom and RSS rendering to ensure correct output. - Create index view tests to validate debug information display based on configuration. * refactor: remove deprecated got implementation and associated tests * test: expand coverage for api, middleware, and utils
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { getCurrentPath, getRouteNameFromPath, getSearchParamsString, parseDuration } from '@/utils/helpers';
|
|
|
|
describe('helpers', () => {
|
|
it('getRouteNameFromPath', () => {
|
|
expect(getRouteNameFromPath('/test/1')).toBe('test');
|
|
expect(getRouteNameFromPath('/')).toBeNull();
|
|
});
|
|
|
|
it('getCurrentPath', () => {
|
|
const expected = import.meta.dirname;
|
|
expect(getCurrentPath(import.meta.url)).toBe(expected);
|
|
});
|
|
|
|
it('getSearchParamsString', () => {
|
|
expect(getSearchParamsString({ a: 1, b: 2 })).toBe('a=1&b=2');
|
|
expect(getSearchParamsString({ a: 1, b: undefined })).toBe('a=1');
|
|
expect(getSearchParamsString({ a: undefined })).toBe('');
|
|
expect(getSearchParamsString({})).toBe('');
|
|
|
|
const searchParams = new URLSearchParams();
|
|
searchParams.append('ids[]', '1');
|
|
searchParams.append('ids[]', '2');
|
|
expect(getSearchParamsString(searchParams)).toBe('ids%5B%5D=1&ids%5B%5D=2');
|
|
});
|
|
|
|
it('parseDuration', () => {
|
|
expect(parseDuration('01:01:01')).toBe(3661);
|
|
expect(parseDuration('01:01')).toBe(61);
|
|
expect(parseDuration('00:01')).toBe(1);
|
|
expect(parseDuration('59')).toBe(59);
|
|
expect(parseDuration(null)).toBeUndefined();
|
|
expect(parseDuration('1:xx')).toBe(60);
|
|
const invalid: any = {
|
|
trim: () => ({
|
|
replaceAll: () => 'NaN:1',
|
|
}),
|
|
};
|
|
expect(() => parseDuration(invalid)).toThrow('Invalid segment');
|
|
});
|
|
});
|