concurrency
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { render, screen, waitFor } from "@testing-library/react";
|
||||
import axios from "axios";
|
||||
import { MemoryRouter } from "react-router-dom";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { AuthProvider, useAuth } from "./AuthContext";
|
||||
|
||||
const Probe = () => {
|
||||
const { loading, authEnabled } = useAuth();
|
||||
return (
|
||||
<div>
|
||||
<span data-testid="loading">{String(loading)}</span>
|
||||
<span data-testid="auth-enabled">{String(authEnabled)}</span>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
describe("AuthProvider", () => {
|
||||
it("defaults to auth-enabled mode if /auth/status fails", async () => {
|
||||
const storage = new Map<string, string>();
|
||||
Object.defineProperty(window, "localStorage", {
|
||||
configurable: true,
|
||||
value: {
|
||||
getItem: (key: string) => storage.get(key) ?? null,
|
||||
setItem: (key: string, value: string) => {
|
||||
storage.set(key, value);
|
||||
},
|
||||
removeItem: (key: string) => {
|
||||
storage.delete(key);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
vi.spyOn(axios, "get").mockRejectedValueOnce(new Error("network down"));
|
||||
|
||||
render(
|
||||
<MemoryRouter>
|
||||
<AuthProvider>
|
||||
<Probe />
|
||||
</AuthProvider>
|
||||
</MemoryRouter>
|
||||
);
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByTestId("loading").textContent).toBe("false");
|
||||
});
|
||||
expect(screen.getByTestId("auth-enabled").textContent).toBe("true");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user