5180 fichiers 38.5 Mo 0 téléchargements 548 vues mis à jour il y a 8 heures ui
nitro-v36-with-renderer-v36 / src / components / catalog / views / page / layout / catalogLayoutRegistry.test.ts
catalogLayoutRegistry.test.ts 2.8 Ko Télécharger le fichier
import { describe, expect, it } from 'vitest';
import { CATALOG_STUDIO_LAYOUT_CODES, getCatalogLayoutDefinition, isCatalogStudioLayoutCode, isReadOnlyCatalogAdminLayout } from './catalogLayoutRegistry';

const expectedStudioCodes = [
    'default_3x3',
    'club_buy',
    'club_gift',
    'frontpage',
    'pets',
    'pets2',
    'pets3',
    'spaces_new',
    'spaces',
    'soundmachine',
    'trophies',
    'roomads',
    'guilds',
    'guild_forum',
    'guild_furni',
    'vip_buy',
    'builders_club_frontpage',
    'builders_club_addons',
    'builders_club_loyalty',
    'marketplace',
    'marketplace_own_items',
    'recycler',
    'recycler_info',
    'recycler_prizes',
    'info_loyalty',
    'info_duckets',
    'info_rentables',
    'info_pets',
    'loyalty_vip_buy',
    'badge_display',
    'bots',
    'single_bundle',
    'sold_ltd_items',
    'plasto',
    'default_3x3_color_grouping',
    'recent_purchases',
    'room_bundle',
    'petcustomization',
    'frontpage_featured',
    'root',
    'monkey',
    'niko',
    'mad_money',
    'productpage1',
    'collectibles',
    'recolorable_furniture'
] as const;

describe('catalog layout registry', () => {
    it('provides the complete selectable layout contract without duplicates', () => {
        expect(CATALOG_STUDIO_LAYOUT_CODES).toEqual(expectedStudioCodes);
        expect(new Set(CATALOG_STUDIO_LAYOUT_CODES).size).toBe(CATALOG_STUDIO_LAYOUT_CODES.length);
    });

    it('resolves server aliases to explicit renderers', () => {
        expect(getCatalogLayoutDefinition('frontpage4')?.renderer).toBe('frontpage');
        expect(getCatalogLayoutDefinition('guild_custom_furni')?.renderer).toBe('guildCustomFurni');
        expect(getCatalogLayoutDefinition('club_gifts')?.renderer).toBe('clubGifts');
        expect(getCatalogLayoutDefinition('default_3x3')?.renderer).toBe('default');
    });

    it('rejects unknown layout identifiers instead of treating them as standard pages', () => {
        expect(getCatalogLayoutDefinition('future_layout')).toBeNull();
        expect(isCatalogStudioLayoutCode('future_layout')).toBe(false);
        expect(isCatalogStudioLayoutCode('recycler')).toBe(true);
    });

    it('marks runtime-generated layouts as read-only for the admin editor', () => {
        expect(isReadOnlyCatalogAdminLayout('recent_purchases')).toBe(true);
        expect(isReadOnlyCatalogAdminLayout('default_3x3')).toBe(false);
        expect(isReadOnlyCatalogAdminLayout(null)).toBe(false);
        expect(isReadOnlyCatalogAdminLayout(undefined)).toBe(false);
    });
    it('sells club days on the loyalty vip page instead of showing an information page', () => {
        expect(getCatalogLayoutDefinition('loyalty_vip_buy')?.renderer).toBe('vipBuy');
        expect(getCatalogLayoutDefinition('vip_buy')?.renderer).toBe('vipBuy');
    });
});
15Sujets
1Dépôts
20Membres
4En 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