PHP 8.2.30
Preview: hasNewVersion.spec.ts Size: 2.32 KB
/proc/thread-self/root/home/byroehnu/.trash/node_modules11/simple-update-notifier/src/hasNewVersion.spec.ts

import hasNewVersion from './hasNewVersion';
import { getLastUpdate } from './cache';
import getDistVersion from './getDistVersion';

jest.mock('./getDistVersion', () => jest.fn().mockReturnValue('1.0.0'));
jest.mock('./cache', () => ({
  getLastUpdate: jest.fn().mockReturnValue(undefined),
  createConfigDir: jest.fn(),
  saveLastUpdate: jest.fn(),
}));

const pkg = { name: 'test', version: '1.0.0' };

afterEach(() => jest.clearAllMocks());

const defaultArgs = {
  pkg,
  shouldNotifyInNpmScript: true,
  alwaysRun: true,
};

test('it should not trigger update for same version', async () => {
  const newVersion = await hasNewVersion(defaultArgs);

  expect(newVersion).toBe(false);
});

test('it should trigger update for patch version bump', async () => {
  (getDistVersion as jest.Mock).mockReturnValue('1.0.1');

  const newVersion = await hasNewVersion(defaultArgs);

  expect(newVersion).toBe('1.0.1');
});

test('it should trigger update for minor version bump', async () => {
  (getDistVersion as jest.Mock).mockReturnValue('1.1.0');

  const newVersion = await hasNewVersion(defaultArgs);

  expect(newVersion).toBe('1.1.0');
});

test('it should trigger update for major version bump', async () => {
  (getDistVersion as jest.Mock).mockReturnValue('2.0.0');

  const newVersion = await hasNewVersion(defaultArgs);

  expect(newVersion).toBe('2.0.0');
});

test('it should not trigger update if version is lower', async () => {
  (getDistVersion as jest.Mock).mockReturnValue('0.0.9');

  const newVersion = await hasNewVersion(defaultArgs);

  expect(newVersion).toBe(false);
});

it('should trigger update check if last update older than config', async () => {
  const TWO_WEEKS = new Date().getTime() - 1000 * 60 * 60 * 24 * 14;
  (getLastUpdate as jest.Mock).mockReturnValue(TWO_WEEKS);
  const newVersion = await hasNewVersion({
    pkg,
    shouldNotifyInNpmScript: true,
  });

  expect(newVersion).toBe(false);
  expect(getDistVersion).toHaveBeenCalled();
});

it('should not trigger update check if last update is too recent', async () => {
  const TWELVE_HOURS = new Date().getTime() - 1000 * 60 * 60 * 12;
  (getLastUpdate as jest.Mock).mockReturnValue(TWELVE_HOURS);
  const newVersion = await hasNewVersion({
    pkg,
    shouldNotifyInNpmScript: true,
  });

  expect(newVersion).toBe(false);
  expect(getDistVersion).not.toHaveBeenCalled();
});

Directory Contents

Dirs: 0 × Files: 11

Name Size Perms Modified Actions
371 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
527 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
1.03 KB lrw-r--r-- 2026-02-03 15:06:46
Edit Download
810 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
811 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
2.32 KB lrw-r--r-- 2026-02-03 15:06:46
Edit Download
1.12 KB lrw-r--r-- 2026-02-03 15:06:46
Edit Download
744 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
984 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
444 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download
202 B lrw-r--r-- 2026-02-03 15:06:46
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).