mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-29 09:50:10 -06:00
140 lines
5.7 KiB
TypeScript
140 lines
5.7 KiB
TypeScript
import { cleanup } from "@testing-library/react";
|
|
import { afterEach, describe, expect, test } from "vitest";
|
|
import {
|
|
checkForLoomUrl,
|
|
checkForVimeoUrl,
|
|
checkForYoutubeUrl,
|
|
convertToEmbedUrl,
|
|
extractLoomId,
|
|
extractVimeoId,
|
|
extractYoutubeId,
|
|
} from "./video-upload";
|
|
|
|
afterEach(() => {
|
|
cleanup();
|
|
});
|
|
|
|
describe("checkForYoutubeUrl", () => {
|
|
test("returns true for valid YouTube URLs", () => {
|
|
expect(checkForYoutubeUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ")).toBe(true);
|
|
expect(checkForYoutubeUrl("https://youtu.be/dQw4w9WgXcQ")).toBe(true);
|
|
expect(checkForYoutubeUrl("https://youtube.com/watch?v=dQw4w9WgXcQ")).toBe(true);
|
|
expect(checkForYoutubeUrl("https://youtube-nocookie.com/embed/dQw4w9WgXcQ")).toBe(true);
|
|
expect(checkForYoutubeUrl("https://www.youtube-nocookie.com/embed/dQw4w9WgXcQ")).toBe(true);
|
|
expect(checkForYoutubeUrl("https://www.youtu.be/dQw4w9WgXcQ")).toBe(true);
|
|
});
|
|
|
|
test("returns false for invalid YouTube URLs", () => {
|
|
expect(checkForYoutubeUrl("https://www.invalid.com/watch?v=dQw4w9WgXcQ")).toBe(false);
|
|
expect(checkForYoutubeUrl("invalid-url")).toBe(false);
|
|
expect(checkForYoutubeUrl("http://www.youtube.com/watch?v=dQw4w9WgXcQ")).toBe(false); // Non-HTTPS protocol
|
|
});
|
|
});
|
|
|
|
describe("extractYoutubeId", () => {
|
|
test("extracts video ID from YouTube URLs", () => {
|
|
expect(extractYoutubeId("https://www.youtube.com/watch?v=dQw4w9WgXcQ")).toBe("dQw4w9WgXcQ");
|
|
expect(extractYoutubeId("https://youtu.be/dQw4w9WgXcQ")).toBe("dQw4w9WgXcQ");
|
|
expect(extractYoutubeId("https://youtube.com/embed/dQw4w9WgXcQ")).toBe("dQw4w9WgXcQ");
|
|
expect(extractYoutubeId("https://youtube-nocookie.com/embed/dQw4w9WgXcQ")).toBe("dQw4w9WgXcQ");
|
|
});
|
|
|
|
test("returns null for invalid YouTube URLs", () => {
|
|
expect(extractYoutubeId("https://www.invalid.com/watch?v=dQw4w9WgXcQ")).toBeNull();
|
|
expect(extractYoutubeId("invalid-url")).toBeNull();
|
|
expect(extractYoutubeId("https://youtube.com/notavalidpath")).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("convertToEmbedUrl", () => {
|
|
test("converts YouTube URL to embed URL", () => {
|
|
expect(convertToEmbedUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ")).toBe(
|
|
"https://www.youtube.com/embed/dQw4w9WgXcQ"
|
|
);
|
|
expect(convertToEmbedUrl("https://youtu.be/dQw4w9WgXcQ")).toBe(
|
|
"https://www.youtube.com/embed/dQw4w9WgXcQ"
|
|
);
|
|
});
|
|
|
|
test("converts Vimeo URL to embed URL", () => {
|
|
expect(convertToEmbedUrl("https://vimeo.com/123456789")).toBe("https://player.vimeo.com/video/123456789");
|
|
expect(convertToEmbedUrl("https://www.vimeo.com/123456789")).toBe(
|
|
"https://player.vimeo.com/video/123456789"
|
|
);
|
|
expect(convertToEmbedUrl("https://player.vimeo.com/video/123456789")).toBe(
|
|
"https://player.vimeo.com/video/123456789"
|
|
);
|
|
});
|
|
|
|
test("converts Loom URL to embed URL", () => {
|
|
expect(convertToEmbedUrl("https://www.loom.com/share/abcdef123456")).toBe(
|
|
"https://www.loom.com/embed/abcdef123456"
|
|
);
|
|
expect(convertToEmbedUrl("https://loom.com/share/abcdef123456")).toBe(
|
|
"https://www.loom.com/embed/abcdef123456"
|
|
);
|
|
expect(convertToEmbedUrl("https://www.loom.com/embed/abcdef123456")).toBe(
|
|
"https://www.loom.com/embed/abcdef123456"
|
|
);
|
|
});
|
|
|
|
test("returns undefined for unsupported URLs", () => {
|
|
expect(convertToEmbedUrl("https://www.invalid.com/watch?v=dQw4w9WgXcQ")).toBeUndefined();
|
|
expect(convertToEmbedUrl("invalid-url")).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
// Testing private functions by importing them through the module system
|
|
describe("checkForVimeoUrl", () => {
|
|
test("returns true for valid Vimeo URLs", () => {
|
|
expect(checkForVimeoUrl("https://vimeo.com/123456789")).toBe(true);
|
|
expect(checkForVimeoUrl("https://www.vimeo.com/123456789")).toBe(true);
|
|
});
|
|
|
|
test("returns false for invalid Vimeo URLs", () => {
|
|
expect(checkForVimeoUrl("https://www.invalid.com/123456789")).toBe(false);
|
|
expect(checkForVimeoUrl("invalid-url")).toBe(false);
|
|
expect(checkForVimeoUrl("http://vimeo.com/123456789")).toBe(false); // Non-HTTPS protocol
|
|
});
|
|
});
|
|
|
|
describe("checkForLoomUrl", () => {
|
|
test("returns true for valid Loom URLs", () => {
|
|
expect(checkForLoomUrl("https://loom.com/share/abcdef123456")).toBe(true);
|
|
expect(checkForLoomUrl("https://www.loom.com/share/abcdef123456")).toBe(true);
|
|
});
|
|
|
|
test("returns false for invalid Loom URLs", () => {
|
|
expect(checkForLoomUrl("https://www.invalid.com/share/abcdef123456")).toBe(false);
|
|
expect(checkForLoomUrl("invalid-url")).toBe(false);
|
|
expect(checkForLoomUrl("http://loom.com/share/abcdef123456")).toBe(false); // Non-HTTPS protocol
|
|
});
|
|
});
|
|
|
|
describe("extractVimeoId", () => {
|
|
test("extracts video ID from Vimeo URLs", () => {
|
|
expect(extractVimeoId("https://vimeo.com/123456789")).toBe("123456789");
|
|
expect(extractVimeoId("https://www.vimeo.com/123456789")).toBe("123456789");
|
|
expect(extractVimeoId("https://player.vimeo.com/video/123456789")).toBe("123456789");
|
|
});
|
|
|
|
test("returns null for invalid Vimeo URLs", () => {
|
|
expect(extractVimeoId("https://www.invalid.com/123456789")).toBeNull();
|
|
expect(extractVimeoId("invalid-url")).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe("extractLoomId", () => {
|
|
test("extracts video ID from Loom URLs", () => {
|
|
expect(extractLoomId("https://loom.com/share/abcdef123456")).toBe("abcdef123456");
|
|
expect(extractLoomId("https://www.loom.com/share/abcdef123456")).toBe("abcdef123456");
|
|
expect(extractLoomId("https://www.loom.com/embed/abcdef123456")).toBe("abcdef123456");
|
|
});
|
|
|
|
test("returns null for invalid Loom URLs", async () => {
|
|
expect(extractLoomId("https://www.invalid.com/share/abcdef123456")).toBeNull();
|
|
expect(extractLoomId("invalid-url")).toBeNull();
|
|
expect(extractLoomId("https://loom.com/invalid/abcdef123456")).toBeNull();
|
|
});
|
|
});
|