5180 fichiers 38.5 Mo 0 téléchargements 255 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / common / layout / LayoutAvatarImageView.listeners.test.tsx
LayoutAvatarImageView.listeners.test.tsx 1.8 Ko Télécharger le fichier
import { cleanup, render } from '@testing-library/react';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { LayoutAvatarImageView } from './LayoutAvatarImageView';

const mocks = vi.hoisted(() => ({ listeners: [] as any[], create: vi.fn() }));

vi.mock('@octane/renderer', () => ({
    AvatarScaleType: { LARGE: 'h', SMALL: 'sh' },
    AvatarSetType: { FULL: 'full', HEAD: 'head' },
    GetAvatarRenderManager: () => ({ createAvatarImage: mocks.create })
}));

beforeEach(() => {
    mocks.listeners.length = 0;
    mocks.create.mockReset().mockImplementation((_figure, _scale, _gender, listener) => {
        mocks.listeners.push(listener);
        return null;
    });
});

afterEach(cleanup);

describe('LayoutAvatarImageView download listeners', () => {
    it('retires the old listener on a figure change and on unmount, ignoring late downloads', () => {
        const view = render(<LayoutAvatarImageView figure="hd-1-1" />);
        const first = mocks.listeners[0];

        view.rerender(<LayoutAvatarImageView figure="hd-2-2" />);
        expect(first.disposed).toBe(true);
        expect(mocks.create).toHaveBeenCalledTimes(2);

        first.resetFigure('hd-1-1');
        expect(mocks.create).toHaveBeenCalledTimes(2);

        const latest = mocks.listeners[1];

        view.unmount();
        expect(latest.disposed).toBe(true);

        latest.resetFigure('hd-2-2');
        expect(mocks.create).toHaveBeenCalledTimes(2);
    });

    it('reuses the same listener when the download manager retries the figure', () => {
        render(<LayoutAvatarImageView figure="hd-3-3" />);
        const listener = mocks.listeners[0];

        listener.resetFigure('hd-3-3');

        expect(mocks.create).toHaveBeenCalledTimes(2);
        expect(mocks.listeners[1]).toBe(listener);
        expect(listener.disposed).toBe(false);
    });
});
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