diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx index bfa6fbca..3d2498a1 100644 --- a/frontend/src/components/Header.tsx +++ b/frontend/src/components/Header.tsx @@ -94,7 +94,7 @@ export default function Header({ // Absolutely positioned within the (relative) content column, so its left edge tracks the // actual left zone: it sits just inside the content, reclaiming the space when the nav rail is // slim and/or no filter sidebar is present — no hard-coded offset. -
+
{ + const actual = await importOriginal(); + return { ...actual, useTranslation: () => ({ t: (key: string) => key }) }; +}); + +const plexState = { scope: "both" } as { scope: string }; +const setScope = vi.fn(); +vi.mock("./PlexProvider", () => ({ + usePlex: () => plexState, + usePlexActions: () => ({ setScope }), +})); + +import PlexScopeToggle from "./PlexScopeToggle"; + +beforeEach(() => { + plexState.scope = "both"; + setScope.mockReset(); +}); +afterEach(cleanup); + +describe("PlexScopeToggle", () => { + it("renders the three library scopes, current one pressed", () => { + plexState.scope = "movie"; + render(); + const group = screen.getByRole("group", { name: "plex.filter.scope" }); + const btns = [...group.querySelectorAll("button")]; + expect(btns.map((b) => b.textContent)).toEqual([ + "plex.filter.scopeOpt.both", + "plex.filter.scopeOpt.movie", + "plex.filter.scopeOpt.show", + ]); + const pressed = btns.filter((b) => b.getAttribute("aria-pressed") === "true"); + expect(pressed.map((b) => b.textContent)).toEqual(["plex.filter.scopeOpt.movie"]); + }); + + it("writes the picked scope back to the provider", () => { + render(); + fireEvent.click(screen.getByRole("button", { name: "plex.filter.scopeOpt.show" })); + expect(setScope).toHaveBeenCalledWith("show"); + }); +}); diff --git a/frontend/src/components/PlexSearchBox.tsx b/frontend/src/components/PlexSearchBox.tsx index 69311b42..c6fc3e8f 100644 --- a/frontend/src/components/PlexSearchBox.tsx +++ b/frontend/src/components/PlexSearchBox.tsx @@ -117,10 +117,10 @@ export default function PlexSearchBox() { leading={ - {pillLabel} + {pillLabel}