38 lines
1.1 KiB
TypeScript
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");
|
|
});
|
|
});
|