Files
cozsweet-frontend-nextjs/src/app/private-zoom/__tests__/private-album-gallery-url.test.ts
T

38 lines
1.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
buildPrivateAlbumGalleryUrl,
buildPrivateZoomWithoutGalleryUrl,
getPrivateAlbumGalleryState,
} from "../private-album-gallery-url";
describe("private album gallery URL", () => {
it("builds and parses an album image URL", () => {
const url = buildPrivateAlbumGalleryUrl("album:91", 3);
const params = new URL(url, "https://cozsweet.test").searchParams;
expect(url).toBe("/private-zoom?album=album%3A91&image=3");
expect(getPrivateAlbumGalleryState(params)).toEqual({
albumId: "album:91",
imageIndex: 3,
});
});
it("rejects missing albums and invalid image indexes", () => {
expect(getPrivateAlbumGalleryState(new URLSearchParams("image=0"))).toBeNull();
expect(
getPrivateAlbumGalleryState(
new URLSearchParams("album=album-1&image=-1"),
),
).toBeNull();
});
it("removes gallery params without dropping other query values", () => {
expect(
buildPrivateZoomWithoutGalleryUrl(
new URLSearchParams("album=album-1&image=2&source=external"),
),
).toBe("/private-zoom?source=external");
});
});