5180 fichiers 38.5 Mo 0 téléchargements 287 vues mis à jour il y a 6 heures ui
nitro-v36-with-renderer-v36 / src / components / wired / views / WiredLayoutRegistry.test.ts
WiredLayoutRegistry.test.ts 2.7 Ko Télécharger le fichier
/* @vitest-environment jsdom */
import { describe, expect, it } from 'vitest';
import { WiredActionLayoutCode, WiredAddonLayoutCode, WiredConditionlayout, WiredSelectorLayoutCode, WiredTriggerLayout, WiredVariableLayoutCode } from '../../../api';
import { WiredActionLayoutView } from './actions/WiredActionLayoutView';
import { WiredConditionLayoutView } from './conditions/WiredConditionLayoutView';
import { WiredAddonLayoutView } from './extras/WiredAddonLayoutView';
import { WiredVariableLayoutView } from './extras/WiredVariableLayoutView';
import { WiredSelectorLayoutView } from './selectors/WiredSelectorLayoutView';
import { WiredTriggerLayoutView } from './triggers/WiredTriggerLayoutView';

/**
 * Every layout code the client declares must open a window. A code that maps to nothing lets a box
 * open an empty dialog with no save button and no explanation, which is worse than not declaring
 * the code at all: the server never sends it, so nothing is lost by dropping it.
 */
const declaredCodes = (registry: object): number[] => Object.values(registry).filter((value): value is number => typeof value === 'number');

const missingWindows = (registry: object, layoutView: (code: number) => unknown): number[] =>
    declaredCodes(registry).filter((code) => layoutView(code) === null || layoutView(code) === undefined);

describe('wired layout registries', () => {
    it('declares codes for every family', () => {
        expect(declaredCodes(WiredTriggerLayout).length).toBeGreaterThan(20);
        expect(declaredCodes(WiredConditionlayout).length).toBeGreaterThan(40);
        expect(declaredCodes(WiredActionLayoutCode).length).toBeGreaterThan(50);
        expect(declaredCodes(WiredSelectorLayoutCode).length).toBeGreaterThan(19);
        expect(declaredCodes(WiredAddonLayoutCode).length).toBeGreaterThan(30);
        expect(declaredCodes(WiredVariableLayoutCode).length).toBeGreaterThan(8);
    });

    it('opens a window for every trigger code', () => {
        expect(missingWindows(WiredTriggerLayout, WiredTriggerLayoutView)).toEqual([]);
    });

    it('opens a window for every condition code', () => {
        expect(missingWindows(WiredConditionlayout, WiredConditionLayoutView)).toEqual([]);
    });

    it('opens a window for every action code', () => {
        expect(missingWindows(WiredActionLayoutCode, WiredActionLayoutView)).toEqual([]);
    });

    it('opens a window for every selector, addon and variable code', () => {
        expect(missingWindows(WiredSelectorLayoutCode, WiredSelectorLayoutView)).toEqual([]);
        expect(missingWindows(WiredAddonLayoutCode, WiredAddonLayoutView)).toEqual([]);
        expect(missingWindows(WiredVariableLayoutCode, WiredVariableLayoutView)).toEqual([]);
    });
});
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser