diff --git a/__tests__/__main__/notification.js b/__tests__/__main__/notification.mjs
similarity index 57%
rename from __tests__/__main__/notification.js
rename to __tests__/__main__/notification.mjs
index bfb94778..5310b214 100644
--- a/__tests__/__main__/notification.js
+++ b/__tests__/__main__/notification.mjs
@@ -1,44 +1,42 @@
/* eslint-disable no-undef */
'use strict';
-const { createNotification, createLeaveNotification, updateDismiss, getDismiss } = require('../../js/notification.js');
-const { getUserPreferences, savePreferences, resetPreferences } = require('../../js/user-preferences.js');
-const { getDateStr } = require('../../js/date-aux.js');
+import assert from 'assert';
import { app } from 'electron';
+import { stub } from 'sinon';
+
+import { createNotification, createLeaveNotification, updateDismiss, getDismiss } from '../../js/notification.mjs';
+import { getUserPreferences, savePreferences, resetPreferences } from '../../js/user-preferences.mjs';
+import { getDateStr } from '../../js/date-aux.mjs';
function buildTimeString(now)
{
return `0${now.getHours()}`.slice(-2) + ':' + `0${now.getMinutes()}`.slice(-2);
}
+process.env.NODE_ENV = 'test';
+
describe('Notifications', function()
{
describe('notify', () =>
{
- beforeEach(() =>
- {
- // displays a notification in test fails if mocks are not restored
- jest.restoreAllMocks();
- });
-
- test('displays a notification in test', (done) =>
+ it('displays a notification in test', (done) =>
{
- process.env.NODE_ENV = 'test';
const notification = createNotification('test');
// On Win32 the notification uses a different specification, with toastXml
if (process.platform === 'win32')
{
- expect(notification.toastXml).toMatch('test');
- expect(notification.toastXml).toMatch('Time to Leave');
+ assert.match(notification.toastXml, RegExp('test'));
+ assert.match(notification.toastXml, RegExp('Time to Leave'));
}
else
{
- expect(notification.body).toBe('test');
- expect(notification.title).toBe('Time to Leave');
+ assert.strictEqual(notification.body, 'test');
+ assert.strictEqual(notification.title, 'Time to Leave');
}
notification.on('show', (event) =>
{
- expect(event).toBeTruthy();
+ assert.strictEqual(typeof event === 'object', true);
// In Electron 25 the definition of Event changed and we can no longer
// check information about the event sender
notification.close();
@@ -61,24 +59,24 @@ describe('Notifications', function()
}
});
- test('displays a notification in production', (done) =>
+ it('displays a notification in production', (done) =>
{
process.env.NODE_ENV = 'production';
const notification = createNotification('production');
// On Win32 the notification uses a different specification, with toastXml
if (process.platform === 'win32')
{
- expect(notification.toastXml).toMatch('production');
- expect(notification.toastXml).toMatch('Time to Leave');
+ assert.match(notification.toastXml, RegExp('production'));
+ assert.match(notification.toastXml, RegExp('Time to Leave'));
}
else
{
- expect(notification.body).toBe('production');
- expect(notification.title).toBe('Time to Leave');
+ assert.strictEqual(notification.body, 'production');
+ assert.strictEqual(notification.title, 'Time to Leave');
}
notification.on('show', (event) =>
{
- expect(event).toBeTruthy();
+ assert.strictEqual(typeof event === 'object', true);
// In Electron 25 the definition of Event changed and we can no longer
// check information about the event sender
notification.close();
@@ -105,54 +103,53 @@ describe('Notifications', function()
describe('createLeaveNotification', () =>
{
- test('Should fail when notifications are disabled', () =>
+ it('Should fail when notifications are disabled', () =>
{
const preferences = getUserPreferences();
preferences['notification'] = false;
savePreferences(preferences);
const notify = createLeaveNotification(true);
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should fail when leaveByElement is not found', () =>
+ it('Should fail when leaveByElement is not found', () =>
{
const notify = createLeaveNotification(undefined);
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should fail when notifications have been dismissed', () =>
+ it('Should fail when notifications have been dismissed', () =>
{
const now = new Date();
const dateToday = getDateStr(now);
updateDismiss(dateToday);
const notify = createLeaveNotification(true);
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should fail when time is not valid', () =>
+ it('Should fail when time is not valid', () =>
{
const notify = createLeaveNotification('33:90');
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should fail when time is in the future', () =>
+ it('Should fail when time is in the future', () =>
{
- jest.restoreAllMocks();
const now = new Date();
now.setMinutes(now.getMinutes() + 1);
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should fail when time is in the past', () =>
+ it('Should fail when time is in the past', () =>
{
const now = new Date();
now.setMinutes(now.getMinutes() - 9);
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should fail when repetition is disabled', () =>
+ it('Should fail when repetition is disabled', () =>
{
const preferences = getUserPreferences();
preferences['repetition'] = false;
@@ -160,61 +157,62 @@ describe('Notifications', function()
const now = new Date();
now.setHours(now.getHours() - 1);
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBe(false);
+ assert.strictEqual(notify, false);
});
- test('Should pass when time is correct and dismiss action is pressed', () =>
+ it('Should pass when time is correct and dismiss action is pressed', () =>
{
const now = new Date();
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBeTruthy();
- expect(getDismiss()).toBe(null);
- expect(notify.listenerCount('action')).toBe(1);
- expect(notify.listenerCount('close')).toBe(1);
- expect(notify.listenerCount('click')).toBe(1);
+ assert.notStrictEqual(notify, false);
+ assert.strictEqual(getDismiss(), null);
+ assert.strictEqual(notify.listenerCount('action'), 1);
+ assert.strictEqual(notify.listenerCount('close'), 1);
+ assert.strictEqual(notify.listenerCount('click'), 1);
notify.emit('action', 'dismiss');
- expect(getDismiss()).toBe(getDateStr(now));
+ assert.strictEqual(getDismiss(), getDateStr(now));
});
- test('Should pass when time is correct and other action is pressed', () =>
+ it('Should pass when time is correct and other action is pressed', () =>
{
const now = new Date();
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBeTruthy();
- expect(getDismiss()).toBe(null);
- expect(notify.listenerCount('action')).toBe(1);
- expect(notify.listenerCount('close')).toBe(1);
- expect(notify.listenerCount('click')).toBe(1);
+ assert.notStrictEqual(notify, false);
+ assert.strictEqual(getDismiss(), null);
+ assert.strictEqual(notify.listenerCount('action'), 1);
+ assert.strictEqual(notify.listenerCount('close'), 1);
+ assert.strictEqual(notify.listenerCount('click'), 1);
notify.emit('action', '');
- expect(getDismiss()).toBe(null);
+ assert.strictEqual(getDismiss(), null);
});
- test('Should pass when time is correct and close is pressed', () =>
+ it('Should pass when time is correct and close is pressed', () =>
{
const now = new Date();
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBeTruthy();
- expect(getDismiss()).toBe(null);
- expect(notify.listenerCount('action')).toBe(1);
- expect(notify.listenerCount('close')).toBe(1);
- expect(notify.listenerCount('click')).toBe(1);
+ assert.notStrictEqual(notify, false);
+ assert.strictEqual(getDismiss(), null);
+ assert.strictEqual(notify.listenerCount('action'), 1);
+ assert.strictEqual(notify.listenerCount('close'), 1);
+ assert.strictEqual(notify.listenerCount('click'), 1);
notify.emit('close');
- expect(getDismiss()).toBe(getDateStr(now));
+ assert.strictEqual(getDismiss(), getDateStr(now));
});
- test('Should pass when time is correct and close is pressed', (done) =>
+ it('Should pass when time is correct and close is pressed', (done) =>
{
- jest.spyOn(app, 'emit').mockImplementation((key) =>
+ const appStub = stub(app, 'emit').callsFake((key) =>
{
- expect(key).toBe('activate');
+ assert.strictEqual(key, 'activate');
+ appStub.restore();
done();
});
const now = new Date();
const notify = createLeaveNotification(buildTimeString(now));
- expect(notify).toBeTruthy();
- expect(notify.listenerCount('action')).toBe(1);
- expect(notify.listenerCount('close')).toBe(1);
- expect(notify.listenerCount('click')).toBe(1);
+ assert.notStrictEqual(notify, false);
+ assert.strictEqual(notify.listenerCount('action'), 1);
+ assert.strictEqual(notify.listenerCount('close'), 1);
+ assert.strictEqual(notify.listenerCount('click'), 1);
notify.emit('click', 'Clicked on notification');
});
});
@@ -225,4 +223,3 @@ describe('Notifications', function()
updateDismiss(null);
});
});
-