PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / dashboard / hooks / test / useLink.spec.js
presto-player / src / admin / dashboard / hooks / test Last commit date
useCompleteOnboarding.spec.js 1 month ago useDateRangePicker.spec.js 2 months ago useEmail.spec.js 2 months ago useEngagementChartData.spec.js 2 months ago useLicenseSettings.spec.js 2 months ago useLink.spec.js 2 months ago useMediaDetail.spec.js 2 months ago useMediaLibrary.spec.js 2 months ago useMediaList.spec.js 1 month ago usePerformanceSettings.spec.js 2 months ago useRegisterActivePage.spec.js 2 months ago useSettingOption.spec.js 2 months ago useSimpleSettingsPage.spec.js 2 months ago useTopPerforming.spec.js 2 months ago useTopVideosPaginated.spec.js 2 months ago useUpgradeCTA.spec.js 2 months ago useUserDetail.spec.js 2 months ago
useLink.spec.js
64 lines
1 import { renderHook } from "@testing-library/react-hooks";
2
3 const mockPush = jest.fn();
4 const mockUseHistory = jest.fn(() => ({ push: mockPush }));
5 const mockRunNavGuards = jest.fn();
6
7 jest.mock("../../router/router", () => ({
8 useHistory: () => mockUseHistory(),
9 }));
10
11 jest.mock("../../pages/settings/shared/navigationGuard", () => ({
12 runNavGuards: (...args) => mockRunNavGuards(...args),
13 }));
14
15 import useLink from "../useLink";
16
17 describe("useLink", () => {
18 let originalLocation;
19
20 beforeEach(() => {
21 mockPush.mockReset();
22 mockRunNavGuards.mockReset().mockReturnValue(false);
23 originalLocation = window.location;
24 delete window.location;
25 window.location = { pathname: "/wp-admin/admin.php" };
26 });
27
28 afterEach(() => {
29 window.location = originalLocation;
30 });
31
32 it("computes href by appending params to the current pathname", () => {
33 const { result } = renderHook(() =>
34 useLink({ tab: "Analytics", section: "Top" })
35 );
36 expect(result.current.href).toBe(
37 "/wp-admin/admin.php?tab=Analytics&section=Top"
38 );
39 });
40
41 it("onClick prevents default and calls history.push when no guard blocks", () => {
42 const params = { tab: "Settings" };
43 const { result } = renderHook(() => useLink(params));
44
45 const event = { preventDefault: jest.fn() };
46 result.current.onClick(event);
47
48 expect(event.preventDefault).toHaveBeenCalled();
49 expect(mockRunNavGuards).toHaveBeenCalledWith(params);
50 expect(mockPush).toHaveBeenCalledWith(params);
51 });
52
53 it("onClick does NOT call history.push when a nav guard returns true", () => {
54 mockRunNavGuards.mockReturnValue(true);
55 const { result } = renderHook(() => useLink({ tab: "Settings" }));
56
57 const event = { preventDefault: jest.fn() };
58 result.current.onClick(event);
59
60 expect(event.preventDefault).toHaveBeenCalled();
61 expect(mockPush).not.toHaveBeenCalled();
62 });
63 });
64