mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-09-27 20:11:15 +02:00
133 lines
3.7 KiB
JavaScript
133 lines
3.7 KiB
JavaScript
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"
|
|
);
|
|
});
|
|
});
|
|
}); |