test: add unit tests for document-only fields in various schemas
This commit is contained in:
parent
8e5c07710b
commit
22a42e4c63
@ -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);
|
||||
});
|
||||
});
|
||||
@ -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);
|
||||
});
|
||||
});
|
||||
@ -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);
|
||||
});
|
||||
});
|
||||
@ -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);
|
||||
});
|
||||
});
|
||||
@ -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);
|
||||
});
|
||||
});
|
||||
@ -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);
|
||||
});
|
||||
});
|
||||
13
meet-ce/backend/tests/unit/typings/type-assertions.utils.ts
Normal file
13
meet-ce/backend/tests/unit/typings/type-assertions.utils.ts
Normal 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>];
|
||||
Loading…
x
Reference in New Issue
Block a user