mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-09-27 20:11:15 +02:00
feat: unit tests for buildArgs and Notify
This commit is contained in:
133
test/unit/notify.helpers.test.js
Normal file
133
test/unit/notify.helpers.test.js
Normal file
@@ -0,0 +1,133 @@
|
||||
const mockShow = jest.fn();
|
||||
const mockOn = jest.fn();
|
||||
const mockOpenPath = jest.fn();
|
||||
const mockOpenExternal = jest.fn();
|
||||
|
||||
jest.mock("electron", () => ({
|
||||
Notification: jest.fn().mockImplementation(() => ({
|
||||
show: mockShow,
|
||||
on: mockOn,
|
||||
})),
|
||||
shell: {
|
||||
openPath: mockOpenPath,
|
||||
openExternal: mockOpenExternal,
|
||||
},
|
||||
}));
|
||||
|
||||
jest.mock("../../server/helpers/path.helpers", () => ({
|
||||
iconPaths: {
|
||||
confirm: "/icons/confirm.png",
|
||||
error: "/icons/error.png",
|
||||
},
|
||||
}));
|
||||
|
||||
jest.mock("../../server/logger", () => ({
|
||||
logger: {
|
||||
info: jest.fn(),
|
||||
error: jest.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
const { Notification, shell } = require("electron");
|
||||
|
||||
const {
|
||||
notifyDownloadFinished,
|
||||
notifyCookiesBrowserError,
|
||||
notifyFirefoxBrowserMissing,
|
||||
} = require("../../server/helpers/notify.helpers");
|
||||
|
||||
describe("notify.helpers", () => {
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("notifyDownloadFinished", () => {
|
||||
test("does nothing when notifications are disabled", () => {
|
||||
notifyDownloadFinished("/downloads", false);
|
||||
|
||||
expect(Notification).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("does nothing when folder is missing", () => {
|
||||
notifyDownloadFinished(undefined, true);
|
||||
|
||||
expect(Notification).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("creates and shows notification", () => {
|
||||
notifyDownloadFinished("/downloads");
|
||||
|
||||
expect(Notification).toHaveBeenCalledWith({
|
||||
title: "Freedom Loader",
|
||||
body: "Your download is complete, click here to open it.",
|
||||
icon: "/icons/confirm.png",
|
||||
});
|
||||
|
||||
expect(mockOn).toHaveBeenCalledWith(
|
||||
"click",
|
||||
expect.any(Function)
|
||||
);
|
||||
|
||||
expect(mockShow).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("opens folder when notification is clicked", () => {
|
||||
notifyDownloadFinished("/downloads");
|
||||
|
||||
const callback = mockOn.mock.calls[0][1];
|
||||
callback();
|
||||
|
||||
expect(shell.openPath).toHaveBeenCalledWith("/downloads");
|
||||
});
|
||||
});
|
||||
|
||||
describe("notifyCookiesBrowserError", () => {
|
||||
test("creates notification", () => {
|
||||
notifyCookiesBrowserError();
|
||||
|
||||
expect(Notification).toHaveBeenCalledWith({
|
||||
title: "Cookies Error",
|
||||
body: "Unable to retrieve cookies. Please log in to your browser and click here to view the tutorial.",
|
||||
icon: "/icons/error.png",
|
||||
});
|
||||
|
||||
expect(mockShow).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("opens tutorial when clicked", () => {
|
||||
notifyCookiesBrowserError();
|
||||
|
||||
const callback = mockOn.mock.calls[0][1];
|
||||
callback();
|
||||
|
||||
expect(shell.openExternal).toHaveBeenCalledWith(
|
||||
"https://youtube.com/shorts/cN9f4s1Mf88?si=519QCVd_-fzJqRf1"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("notifyFirefoxBrowserMissing", () => {
|
||||
test("creates notification", () => {
|
||||
notifyFirefoxBrowserMissing();
|
||||
|
||||
expect(Notification).toHaveBeenCalledWith({
|
||||
title: "Firefox Missing",
|
||||
body: "Firefox was not found on your system. Click here to follow the installation guide",
|
||||
icon: "/icons/error.png",
|
||||
});
|
||||
|
||||
expect(mockShow).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("opens installation guide when clicked", () => {
|
||||
notifyFirefoxBrowserMissing();
|
||||
|
||||
const callback = mockOn.mock.calls[0][1];
|
||||
callback();
|
||||
|
||||
expect(shell.openExternal).toHaveBeenCalledWith(
|
||||
"https://youtube.com/shorts/cN9f4s1Mf88?si=519QCVd_-fzJqRf1"
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user