Files
renovate/lib/modules/manager/npm/post-update/node-version.spec.ts
Sebastian Poxhofer 05e1271376 test: use expect().resolves instead of awaiting inside expect (#45672)
Enables the vitest/prefer-expect-resolves oxlint rule and applies its
autofix across the spec suite.
2026-09-04 10:40:46 +00:00

142 lines
3.5 KiB
TypeScript

import { fs } from '~test/util.ts';
import { Lazy } from '../../../../util/lazy.ts';
import {
getNodeConstraint,
getNodeToolConstraint,
getNodeUpdate,
} from './node-version.ts';
vi.mock('../../../../util/fs/index.ts');
describe('modules/manager/npm/post-update/node-version', () => {
const config = {
packageFile: 'package.json',
constraints: { node: '^12.16.0' },
};
describe('getNodeConstraint()', () => {
it('returns from user constraints', async () => {
const res = await getNodeConstraint(
config,
[],
'',
new Lazy(() => Promise.resolve({})),
);
expect(res).toBe('^12.16.0');
expect(fs.readLocalFile).not.toHaveBeenCalled();
});
it('returns .node-version value', async () => {
fs.readLocalFile.mockResolvedValueOnce(null);
fs.readLocalFile.mockResolvedValueOnce('12.16.1\n');
const res = await getNodeConstraint(
{},
[],
'',
new Lazy(() => Promise.resolve({})),
);
expect(res).toBe('12.16.1');
});
it('returns .nvmrc value', async () => {
fs.readLocalFile.mockResolvedValueOnce('12.16.2\n');
const res = await getNodeConstraint(
{},
[],
'',
new Lazy(() => Promise.resolve({})),
);
expect(res).toBe('12.16.2');
});
it('ignores unusable ranges in dotfiles', async () => {
fs.readLocalFile.mockResolvedValueOnce('latest');
fs.readLocalFile.mockResolvedValueOnce('lts');
const res = await getNodeConstraint(
{},
[],
'',
new Lazy(() => Promise.resolve({})),
);
expect(res).toBeNull();
});
it('returns from package.json', async () => {
const res = await getNodeConstraint(
{},
[],
'',
new Lazy(() => Promise.resolve({ engines: { node: '^12.16.3' } })),
);
expect(res).toBe('^12.16.3');
});
it('returns from package.json volta', async () => {
const res = await getNodeConstraint(
{},
[],
'',
new Lazy(() => Promise.resolve({ volta: { node: '14.17.0' } })),
);
expect(res).toBe('14.17.0');
});
it('prefers volta over engines', async () => {
const res = await getNodeConstraint(
{},
[],
'',
new Lazy(() =>
Promise.resolve({
volta: { node: '14.17.0' },
engines: { node: '^12.16.3' },
}),
),
);
expect(res).toBe('14.17.0');
});
});
describe('getNodeUpdate()', () => {
it('returns version', () => {
expect(getNodeUpdate([{ depName: 'node', newValue: '16.15.0' }])).toBe(
'16.15.0',
);
});
it('returns undefined', () => {
expect(getNodeUpdate([])).toBeUndefined();
});
});
describe('getNodeToolConstraint()', () => {
it('returns getNodeUpdate', async () => {
await expect(
getNodeToolConstraint(
config,
[{ depName: 'node', newValue: '16.15.0' }],
'',
new Lazy(() => Promise.resolve({})),
),
).resolves.toEqual({
toolName: 'node',
constraint: '16.15.0',
});
});
it('returns getNodeConstraint', async () => {
await expect(
getNodeToolConstraint(
config,
[],
'',
new Lazy(() => Promise.resolve({})),
),
).resolves.toEqual({
toolName: 'node',
constraint: '^12.16.0',
});
});
});
});