cea576e5e8
- Fix calendarUtils.ts null safety for calendars[id] access - Update video conference link to be added on line 2 instead of line 3 - Update regex in handleDeleteVideoConference to match new format - Update all test cases for videoConferenceUtils to match new format - Add null checks in updateCalsDetails function
86 lines
2.9 KiB
TypeScript
86 lines
2.9 KiB
TypeScript
import {
|
|
generateMeetingId,
|
|
generateMeetingLink,
|
|
addVideoConferenceToDescription,
|
|
extractVideoConferenceFromDescription,
|
|
} from "../videoConferenceUtils";
|
|
|
|
// Mock window object for Node.js environment
|
|
const mockWindow = {
|
|
VIDEO_CONFERENCE_BASE_URL: "https://meet.linagora.com",
|
|
};
|
|
|
|
// @ts-ignore
|
|
global.window = mockWindow;
|
|
|
|
describe("videoConferenceUtils", () => {
|
|
describe("generateMeetingId", () => {
|
|
it("should generate meeting ID in correct format", () => {
|
|
const meetingId = generateMeetingId();
|
|
expect(meetingId).toMatch(/^[a-z]{3}-[a-z]{4}-[a-z]{3}$/);
|
|
});
|
|
|
|
it("should generate different IDs each time", () => {
|
|
const id1 = generateMeetingId();
|
|
const id2 = generateMeetingId();
|
|
expect(id1).not.toBe(id2);
|
|
});
|
|
});
|
|
|
|
describe("generateMeetingLink", () => {
|
|
it("should generate link with default base URL", () => {
|
|
const link = generateMeetingLink();
|
|
expect(link).toMatch(
|
|
/^https:\/\/meet\.linagora\.com\/[a-z]{3}-[a-z]{4}-[a-z]{3}$/
|
|
);
|
|
});
|
|
|
|
it("should generate link with custom base URL", () => {
|
|
const customBase = "https://custom-meet.example.com";
|
|
const link = generateMeetingLink(customBase);
|
|
expect(link).toMatch(
|
|
/^https:\/\/custom-meet\.example\.com\/[a-z]{3}-[a-z]{4}-[a-z]{3}$/
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("addVideoConferenceToDescription", () => {
|
|
it("should add video conference footer to empty description", () => {
|
|
const description = "";
|
|
const meetingLink = "https://meet.linagora.com/abc-defg-hij";
|
|
const result = addVideoConferenceToDescription(description, meetingLink);
|
|
expect(result).toBe("\nVisio: https://meet.linagora.com/abc-defg-hij");
|
|
});
|
|
|
|
it("should add video conference footer to existing description", () => {
|
|
const description = "This is a meeting description.";
|
|
const meetingLink = "https://meet.linagora.com/abc-defg-hij";
|
|
const result = addVideoConferenceToDescription(description, meetingLink);
|
|
expect(result).toBe(
|
|
"This is a meeting description.\nVisio: https://meet.linagora.com/abc-defg-hij"
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("extractVideoConferenceFromDescription", () => {
|
|
it("should extract video conference link from description", () => {
|
|
const description =
|
|
"Meeting description.\nVisio: https://meet.linagora.com/abc-defg-hij";
|
|
const result = extractVideoConferenceFromDescription(description);
|
|
expect(result).toBe("https://meet.linagora.com/abc-defg-hij");
|
|
});
|
|
|
|
it("should return null when no video conference link found", () => {
|
|
const description = "Just a regular meeting description.";
|
|
const result = extractVideoConferenceFromDescription(description);
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it("should return null for empty description", () => {
|
|
const description = "";
|
|
const result = extractVideoConferenceFromDescription(description);
|
|
expect(result).toBeNull();
|
|
});
|
|
});
|
|
});
|