71 lines
1.5 KiB
TypeScript
71 lines
1.5 KiB
TypeScript
/**
|
|
* Tests for checkForUpdates (update-notifier integration)
|
|
*/
|
|
|
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
|
|
const { mockNotify, mockUpdateNotifier } = vi.hoisted(() => {
|
|
const mockNotify = vi.fn();
|
|
const mockUpdateNotifier = vi.fn(() => ({ notify: mockNotify }));
|
|
return { mockNotify, mockUpdateNotifier };
|
|
});
|
|
|
|
vi.mock('update-notifier', () => ({
|
|
default: mockUpdateNotifier,
|
|
}));
|
|
|
|
vi.mock('node:module', () => {
|
|
const mockRequire = vi.fn(() => ({
|
|
name: 'takt',
|
|
version: '0.2.4',
|
|
}));
|
|
return {
|
|
createRequire: () => mockRequire,
|
|
};
|
|
});
|
|
|
|
import { checkForUpdates } from '../shared/utils/updateNotifier.js';
|
|
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
describe('checkForUpdates', () => {
|
|
it('should call updateNotifier with package info from package.json', () => {
|
|
// When
|
|
checkForUpdates();
|
|
|
|
// Then
|
|
expect(mockUpdateNotifier).toHaveBeenCalledWith({
|
|
pkg: { name: 'takt', version: '0.2.4' },
|
|
});
|
|
});
|
|
|
|
it('should call notify on the notifier instance', () => {
|
|
// When
|
|
checkForUpdates();
|
|
|
|
// Then
|
|
expect(mockNotify).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should call updateNotifier before notify', () => {
|
|
// Given
|
|
const callOrder: string[] = [];
|
|
mockUpdateNotifier.mockImplementation(() => {
|
|
callOrder.push('updateNotifier');
|
|
return {
|
|
notify: () => {
|
|
callOrder.push('notify');
|
|
},
|
|
};
|
|
});
|
|
|
|
// When
|
|
checkForUpdates();
|
|
|
|
// Then
|
|
expect(callOrder).toEqual(['updateNotifier', 'notify']);
|
|
});
|
|
});
|