mirror of
https://github.com/gethomepage/homepage.git
synced 2026-09-28 06:51:17 -07:00
Chore: full react hooks eslint compliance (#7040)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// @vitest-environment jsdom
|
||||
|
||||
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
|
||||
import { act, fireEvent, render, screen, waitFor } from "@testing-library/react";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
import { ColorContext } from "utils/contexts/color";
|
||||
@@ -25,6 +25,7 @@ const {
|
||||
throwIn: null,
|
||||
validateData: [],
|
||||
hashData: null,
|
||||
hashConfig: null,
|
||||
mutateHash: vi.fn(),
|
||||
servicesData: [],
|
||||
bookmarksData: [],
|
||||
@@ -59,9 +60,12 @@ const {
|
||||
const serverSideTranslations = vi.fn(async (language) => ({ _translations: language }));
|
||||
const logger = { error: vi.fn() };
|
||||
|
||||
const useSWR = vi.fn((key) => {
|
||||
const useSWR = vi.fn((key, config) => {
|
||||
if (key === "/api/validate") return { data: state.validateData };
|
||||
if (key === "/api/hash") return { data: state.hashData, mutate: state.mutateHash };
|
||||
if (key === "/api/hash") {
|
||||
state.hashConfig = config;
|
||||
return { data: state.hashData, mutate: state.mutateHash };
|
||||
}
|
||||
if (key === "/api/services") return { data: state.servicesData };
|
||||
if (key === "/api/bookmarks") return { data: state.bookmarksData };
|
||||
if (key === "/api/widgets") return { data: state.widgetsData };
|
||||
@@ -172,6 +176,7 @@ describe("pages/index getStaticProps", () => {
|
||||
state.throwIn = null;
|
||||
state.validateData = [];
|
||||
state.hashData = null;
|
||||
state.hashConfig = null;
|
||||
state.servicesData = [];
|
||||
state.bookmarksData = [];
|
||||
state.widgetsData = [];
|
||||
@@ -351,6 +356,7 @@ describe("pages/index Index routing + SWR branches", () => {
|
||||
}
|
||||
|
||||
await renderIndex({ initialSettings: { title: "Homepage", layout: {} }, settings: { layout: {} } });
|
||||
act(() => state.hashConfig.onSuccess(state.hashData));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(fetchSpy).toHaveBeenCalledWith("/api/revalidate");
|
||||
@@ -379,11 +385,24 @@ describe("pages/index Index routing + SWR branches", () => {
|
||||
localStorage.removeItem("hash");
|
||||
|
||||
await renderIndex({ initialSettings: { title: "Homepage", layout: {} }, settings: { layout: {} } });
|
||||
act(() => state.hashConfig.onSuccess(state.hashData));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(localStorage.getItem("hash")).toBe("first-hash");
|
||||
});
|
||||
});
|
||||
|
||||
it("ignores a hash response without a hash", async () => {
|
||||
state.validateData = [];
|
||||
localStorage.setItem("hash", "old-hash");
|
||||
|
||||
await renderIndex({ initialSettings: { title: "Homepage", layout: {} }, settings: { layout: {} } });
|
||||
|
||||
expect(() => act(() => state.hashConfig.onSuccess(null))).not.toThrow();
|
||||
expect(() => act(() => state.hashConfig.onSuccess({}))).not.toThrow();
|
||||
expect(localStorage.getItem("hash")).toBe("old-hash");
|
||||
expect(document.querySelector(".animate-spin")).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe("pages/index Home behavior", () => {
|
||||
@@ -419,11 +438,27 @@ describe("pages/index Home behavior", () => {
|
||||
|
||||
fireEvent.keyDown(document.body, { key: "a" });
|
||||
expect(screen.getByTestId("quicklaunch")).toHaveTextContent("open:3");
|
||||
expect(state.quickLaunchProps.searchString).toBe("a");
|
||||
|
||||
fireEvent.keyDown(document.body, { key: "Escape" });
|
||||
expect(screen.getByTestId("quicklaunch")).toHaveTextContent("closed:3");
|
||||
});
|
||||
|
||||
it("opens search on space without seeding the query with whitespace", async () => {
|
||||
await renderIndex({
|
||||
initialSettings: { title: "Homepage", layout: {} },
|
||||
settings: { title: "Homepage", layout: {}, language: "en" },
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(state.quickLaunchProps).toBeTruthy();
|
||||
});
|
||||
|
||||
fireEvent.keyDown(document.body, { key: " " });
|
||||
expect(screen.getByTestId("quicklaunch")).toHaveTextContent("open:3");
|
||||
expect(state.quickLaunchProps.searchString).toBe("");
|
||||
});
|
||||
|
||||
it("renders services and bookmark groups when present", async () => {
|
||||
await renderIndex({
|
||||
initialSettings: { title: "Homepage", layout: {} },
|
||||
|
||||
Reference in New Issue
Block a user