test: add unit tests for document-only fields in various schemas

This commit is contained in:
juancarmore 2026-02-26 14:10:56 +01:00
parent 8e5c07710b
commit 22a42e4c63
7 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,16 @@
import { describe, expect, it } from '@jest/globals';
import {
MEET_API_KEY_DOCUMENT_ONLY_FIELDS,
MeetApiKeyDocumentOnlyField
} from '../../../../src/models/mongoose-schemas/api-key.schema.js';
import { AssertReadonlyArrayCoversUnion } from '../type-assertions.utils.js';
describe('MeetApiKeyDocument-only fields list', () => {
it('should include all document-only properties', () => {
const assertApiKeyDocumentOnlyFieldsCoverage: AssertReadonlyArrayCoversUnion<
MeetApiKeyDocumentOnlyField,
typeof MEET_API_KEY_DOCUMENT_ONLY_FIELDS
> = true;
expect(assertApiKeyDocumentOnlyFieldsCoverage).toBe(true);
});
});

View File

@ -0,0 +1,16 @@
import { describe, expect, it } from '@jest/globals';
import {
MEET_GLOBAL_CONFIG_DOCUMENT_ONLY_FIELDS,
MeetGlobalConfigDocumentOnlyField
} from '../../../../src/models/mongoose-schemas/global-config.schema.js';
import { AssertReadonlyArrayCoversUnion } from '../type-assertions.utils.js';
describe('MeetGlobalConfigDocument-only fields list', () => {
it('should include all document-only properties', () => {
const assertGlobalConfigDocumentOnlyFieldsCoverage: AssertReadonlyArrayCoversUnion<
MeetGlobalConfigDocumentOnlyField,
typeof MEET_GLOBAL_CONFIG_DOCUMENT_ONLY_FIELDS
> = true;
expect(assertGlobalConfigDocumentOnlyFieldsCoverage).toBe(true);
});
});

View File

@ -0,0 +1,16 @@
import { describe, expect, it } from '@jest/globals';
import {
MEET_RECORDING_DOCUMENT_ONLY_FIELDS,
MeetRecordingDocumentOnlyField
} from '../../../../src/models/mongoose-schemas/recording.schema.js';
import { AssertReadonlyArrayCoversUnion } from '../type-assertions.utils.js';
describe('MeetRecordingDocument-only fields list', () => {
it('should include all document-only properties', () => {
const assertRecordingDocumentOnlyFieldsCoverage: AssertReadonlyArrayCoversUnion<
MeetRecordingDocumentOnlyField,
typeof MEET_RECORDING_DOCUMENT_ONLY_FIELDS
> = true;
expect(assertRecordingDocumentOnlyFieldsCoverage).toBe(true);
});
});

View File

@ -0,0 +1,16 @@
import { describe, expect, it } from '@jest/globals';
import {
MEET_ROOM_DOCUMENT_ONLY_FIELDS,
MeetRoomDocumentOnlyField
} from '../../../../src/models/mongoose-schemas/room.schema.js';
import { AssertReadonlyArrayCoversUnion } from '../type-assertions.utils.js';
describe('MeetRoomDocument-only fields list', () => {
it('should include all document-only properties', () => {
const assertRoomDocumentOnlyFieldsCoverage: AssertReadonlyArrayCoversUnion<
MeetRoomDocumentOnlyField,
typeof MEET_ROOM_DOCUMENT_ONLY_FIELDS
> = true;
expect(assertRoomDocumentOnlyFieldsCoverage).toBe(true);
});
});

View File

@ -0,0 +1,16 @@
import { describe, expect, it } from '@jest/globals';
import {
MEET_ROOM_MEMBER_DOCUMENT_ONLY_FIELDS,
MeetRoomMemberDocumentOnlyField
} from '../../../../src/models/mongoose-schemas/room-member.schema.js';
import { AssertReadonlyArrayCoversUnion } from '../type-assertions.utils.js';
describe('MeetRoomMemberDocument-only fields list', () => {
it('should include all document-only properties', () => {
const assertRoomMemberDocumentOnlyFieldsCoverage: AssertReadonlyArrayCoversUnion<
MeetRoomMemberDocumentOnlyField,
typeof MEET_ROOM_MEMBER_DOCUMENT_ONLY_FIELDS
> = true;
expect(assertRoomMemberDocumentOnlyFieldsCoverage).toBe(true);
});
});

View File

@ -0,0 +1,16 @@
import { describe, expect, it } from '@jest/globals';
import {
MEET_USER_DOCUMENT_ONLY_FIELDS,
MeetUserDocumentOnlyField
} from '../../../../src/models/mongoose-schemas/user.schema.js';
import { AssertReadonlyArrayCoversUnion } from '../type-assertions.utils.js';
describe('MeetUserDocument-only fields list', () => {
it('should include all document-only properties', () => {
const assertUserDocumentOnlyFieldsCoverage: AssertReadonlyArrayCoversUnion<
MeetUserDocumentOnlyField,
typeof MEET_USER_DOCUMENT_ONLY_FIELDS
> = true;
expect(assertUserDocumentOnlyFieldsCoverage).toBe(true);
});
});

View File

@ -0,0 +1,13 @@
/**
* Returns the set of union members that are missing in the provided readonly array.
*/
export type MissingUnionMembers<TUnion, TArray extends readonly TUnion[]> = Exclude<TUnion, TArray[number]>;
/**
* Compile-time assertion that a readonly array fully covers a union.
* If members are missing, TypeScript includes them in the error type.
*/
export type AssertReadonlyArrayCoversUnion<TUnion, TArray extends readonly TUnion[]> =
MissingUnionMembers<TUnion, TArray> extends never
? true
: ['Missing union members', MissingUnionMembers<TUnion, TArray>];