5180 fichiers 38.5 Mo 0 téléchargements 482 vues mis à jour il y a 7 heures ui
nitro-v36-with-renderer-v36 / src / components / navigator / views / search / NavigatorSearchResultItemInfoAir.test.tsx
NavigatorSearchResultItemInfoAir.test.tsx 3.2 Ko Télécharger le fichier
import { cleanup, render, screen } from '@testing-library/react';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { useNavigatorRoomInfoPopupStore } from '../../../../hooks';
import { NavigatorRoomInfoPopupView } from './NavigatorRoomInfoPopupView';

vi.mock('@octane/renderer', async () => {
    const actual = await vi.importActual<typeof import('@octane/renderer')>('@octane/renderer');

    return {
        ...actual,
        GetSessionDataManager: () => ({ userId: 7 }),
        RoomSettingsComposer: class {},
        UpdateHomeRoomMessageComposer: class {}
    };
});

vi.mock('../../../../hooks', async () => {
    const actual = await vi.importActual<typeof import('../../../../hooks')>('../../../../hooks');

    return {
        ...actual,
        useHelp: () => ({ report: vi.fn() }),
        useNavigatorData: () => ({ navigatorData: { homeRoomId: 0 } }),
        useNavigatorFavourite: () => ({ isFavourite: false, toggle: vi.fn() })
    };
});

vi.mock('../../../../api', async () => {
    const actual = await vi.importActual<typeof import('../../../../api')>('../../../../api');

    return {
        ...actual,
        LocalizeText: (key: string) => key
    };
});

const room = {
    roomId: 42,
    roomName: 'lol',
    description: '',
    ownerId: 7,
    ownerName: 'fornela',
    showOwner: true,
    officialRoomPicRef: '/room.png',
    habboGroupId: 0,
    groupBadgeCode: '',
    groupName: '',
    doorMode: 0,
    tradeMode: 0,
    maxUserCount: 50,
    userCount: 0,
    tags: [],
    ranking: 0,
    roomAdExpiresInMin: 0
} as any;

const renderPopup = (roomData = room) => {
    useNavigatorRoomInfoPopupStore.setState({
        room: roomData,
        visible: true,
        x: 10,
        y: 20,
        hovered: false
    });
    return render(<NavigatorRoomInfoPopupView />);
};

afterEach(() => {
    cleanup();
    useNavigatorRoomInfoPopupStore.getState().hide();
});

describe('AIR navigator room popover', () => {
    it('keeps the official 374px bubble width so metadata and actions do not collapse', () => {
        renderPopup();

        expect(screen.getByRole('dialog')).toHaveClass('octane-navigator-air__room-bubble');
        expect(screen.getByRole('dialog')).toHaveStyle({ width: '374px' });
    });

    it('hides the owner link when AIR marks the room owner as private', () => {
        renderPopup({ ...room, showOwner: false });

        expect(screen.queryByText('fornela')).not.toBeInTheDocument();
    });

    it('shows AIR room-ad details only while the room event is active', () => {
        renderPopup({ ...room, roomAdExpiresInMin: 15, roomAdName: 'Pizza party', roomAdDescription: 'Come join us' });

        expect(screen.getByText(/Pizza party/)).toBeInTheDocument();
        expect(screen.getByText(/Come join us/)).toBeInTheDocument();
    });

    it('uses all three AIR room trading levels', () => {
        const { rerender } = renderPopup({ ...room, tradeMode: 1 });

        expect(screen.getByText('trading.mode.controller')).toBeInTheDocument();

        useNavigatorRoomInfoPopupStore.setState({ room: { ...room, tradeMode: 2 } });
        rerender(<NavigatorRoomInfoPopupView />);

        expect(screen.getByText('trading.mode.free')).toBeInTheDocument();
    });
});
15Sujets
1Dépôts
20Membres
3En 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