Compare commits
1
Commits
19fe99695c
...
c6f2f2eedc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6f2f2eedc |
@@ -3,8 +3,9 @@ import type { FC, PropsWithChildren } from "react";
|
||||
import { QueryClientProvider, useQueryClient } from "@tanstack/react-query";
|
||||
import { act, renderHook, waitFor } from "@testing-library/react";
|
||||
import { http, HttpResponse } from "msw";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { describe, expect, it, onTestFinished, vi } from "vitest";
|
||||
|
||||
import * as sharedApi from "@/shared/api";
|
||||
import { apiClient, apiQueryClient, useAuthenticatedQuery } from "@/shared/api";
|
||||
import { createTestQueryClient } from "@/test/query";
|
||||
import { resource } from "@/test/resource";
|
||||
@@ -398,4 +399,23 @@ describe("AuthProvider", () => {
|
||||
expect(result.current.cards.data?.[0]?.id).toBe("b-card"),
|
||||
);
|
||||
});
|
||||
|
||||
it("registers auth handlers once until unmount", async () => {
|
||||
const configure = vi.spyOn(sharedApi, "configureAuthClient");
|
||||
onTestFinished(() => configure.mockRestore());
|
||||
|
||||
const { rerender, result, unmount } = renderHook(useAuth, {
|
||||
wrapper: createAuthWrapper(createTestQueryClient()),
|
||||
});
|
||||
|
||||
await waitFor(() => expect(result.current.ready).toBe(true));
|
||||
const registrations = configure.mock.calls.length;
|
||||
|
||||
rerender();
|
||||
expect(configure).toHaveBeenCalledTimes(registrations);
|
||||
|
||||
unmount();
|
||||
expect(configure).toHaveBeenCalledTimes(registrations + 1);
|
||||
expect(configure).toHaveBeenLastCalledWith();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -161,7 +161,8 @@ function useAuthProviderVm() {
|
||||
refresh,
|
||||
unavailable: () => unavailableRef.current,
|
||||
});
|
||||
});
|
||||
// `user` tracks access-token changes, which configureAuthClient publishes as session state.
|
||||
}, [clearSession, refresh, user]);
|
||||
useEffect(() => () => configureAuthClient(), []);
|
||||
|
||||
const authContextValue = {
|
||||
|
||||
Reference in New Issue
Block a user