forked from lix-project/lix-website
82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
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();
|
|
});
|