chore: test custom field renaming

This commit is contained in:
Carlos Valente
2024-04-22 14:04:46 +02:00
committed by Carlos Valente
parent 5cf5b2fae3
commit c4f51192de
2 changed files with 56 additions and 11 deletions
@@ -24,6 +24,7 @@ import {
createCustomField, createCustomField,
editCustomField, editCustomField,
removeCustomField, removeCustomField,
customFieldChangelog,
} from '../rundownCache.js'; } from '../rundownCache.js';
describe('generate()', () => { describe('generate()', () => {
@@ -870,9 +871,56 @@ describe('custom fields', () => {
}; };
const customField = await editCustomField('sound', { label: 'Sound', type: 'string', colour: 'green' }); const customField = await editCustomField('sound', { label: 'Sound', type: 'string', colour: 'green' });
expect(customFieldChangelog).toStrictEqual({});
expect(customField).toStrictEqual(expected); expect(customField).toStrictEqual(expected);
}); });
it('renames a field to a new label', async () => {
const created = await createCustomField({ label: 'Video', type: 'string', colour: 'red' });
const expected = {
lighting: {
label: 'Lighting',
type: 'string',
colour: 'blue',
},
sound: {
label: 'Sound',
type: 'string',
colour: 'green',
},
video: {
label: 'Video',
type: 'string',
colour: 'red',
},
};
expect(created).toStrictEqual(expected);
const expectedAfter = {
lighting: {
label: 'Lighting',
type: 'string',
colour: 'blue',
},
sound: {
label: 'Sound',
type: 'string',
colour: 'green',
},
av: {
label: 'AV',
type: 'string',
colour: 'red',
},
};
const customField = await editCustomField('video', { label: 'AV', type: 'string', colour: 'red' });
expect(customField).toStrictEqual(expectedAfter);
expect(customFieldChangelog).toStrictEqual({ video: 'av' });
});
}); });
describe('removeCustomField()', () => { describe('removeCustomField()', () => {
@@ -883,6 +931,11 @@ describe('custom fields', () => {
type: 'string', type: 'string',
colour: 'blue', colour: 'blue',
}, },
av: {
label: 'AV',
type: 'string',
colour: 'red',
},
}; };
const customField = await removeCustomField('sound'); const customField = await removeCustomField('sound');
@@ -39,7 +39,7 @@ let lastEnd: MaybeNumber = null;
let links: Record<EventID, EventID> = {}; let links: Record<EventID, EventID> = {};
/** /**
* Object that contains renamings to custom fields * Object that contains reference of renamed custom fields
* Used to rename the custom fields in the events * Used to rename the custom fields in the events
* @example * @example
* { * {
@@ -47,7 +47,7 @@ let links: Record<EventID, EventID> = {};
* lighting: lx * lighting: lx
* } * }
*/ */
const customFieldChangelog = {}; export const customFieldChangelog = {};
/** /**
* Keep track of which custom fields are used. * Keep track of which custom fields are used.
@@ -176,9 +176,7 @@ type RundownCache = {
*/ */
export function get(): Readonly<RundownCache> { export function get(): Readonly<RundownCache> {
if (isStale) { if (isStale) {
console.time('rundownCache__init');
generate(); generate();
console.timeEnd('rundownCache__init');
} }
return { return {
rundown, rundown,
@@ -194,9 +192,7 @@ export function get(): Readonly<RundownCache> {
*/ */
export function getMetadata() { export function getMetadata() {
if (isStale) { if (isStale) {
console.time('rundownCache__init');
generate(); generate();
console.timeEnd('rundownCache__init');
} }
return { return {
@@ -237,9 +233,7 @@ export function mutateCache<T extends object>(mutation: MutatingFn<T>) {
// schedule a non priority cache update // schedule a non priority cache update
setImmediate(() => { setImmediate(() => {
console.time('rundownCache__init');
get(); get();
console.timeEnd('rundownCache__init');
}); });
// defer writing to the database // defer writing to the database
@@ -410,14 +404,12 @@ function invalidateIfUsed(label: CustomFieldLabel) {
// ... and schedule a cache update // ... and schedule a cache update
// schedule a non priority cache update // schedule a non priority cache update
setImmediate(() => { setImmediate(() => {
console.time('rundownCache__init');
generate(); generate();
console.timeEnd('rundownCache__init');
}); });
} }
/** /**
* Scheduløes a non priority custom field persist * Schedules a non priority custom field persist
* @param persistedCustomFields * @param persistedCustomFields
*/ */
function scheduleCustomFieldPersist(persistedCustomFields: CustomFields) { function scheduleCustomFieldPersist(persistedCustomFields: CustomFields) {