5180 fichiers 38.5 Mo 0 téléchargements 208 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / api / inventory / InventoryUtilities.test.ts
InventoryUtilities.test.ts 2.5 Ko Télécharger le fichier
/* @vitest-environment jsdom */
import { GetRoomEngine, GetRoomSessionManager } from '@octane/renderer';
import { afterEach, describe, expect, it, vi } from 'vitest';
import { GroupItem } from './GroupItem';
import { IBotItem } from './IBotItem';
import { attemptBotPlacement, attemptItemPlacement, attemptPetPlacement, cancelRoomObjectPlacement } from './InventoryUtilities';
import { IPetItem } from './IPetItem';

const processRoomObjectPlacement = vi.fn(() => true);

const setUp = (playTestMode: boolean, freeFurniMovements = false) => {
    const session = { roomId: 1, isRoomOwner: true, allowPets: true, controllerLevel: 0, playTestMode };

    vi.mocked(GetRoomSessionManager).mockReturnValue({ getSession: () => session } as never);
    vi.mocked(GetRoomEngine).mockReturnValue({
        activeRoomHasFreeFurniMovementsMode: freeFurniMovements,
        processRoomObjectPlacement,
        cancelRoomObjectPlacement: vi.fn()
    } as never);
};

const furni = () =>
    ({
        getUnlockedCount: () => 1,
        getLastItem: () => ({ id: 3, ref: 3, category: 1, isWallItem: false, type: 10, extra: 0, stuffData: {} })
    }) as unknown as GroupItem;

const pet = { petData: { id: 4, typeId: 0, level: 1, figureData: { figuredata: '0 0 ffffff' } } } as unknown as IPetItem;

const bot = { botData: { id: 5, figure: 'hd-180-1' } } as unknown as IBotItem;

describe('inventory placement in playtest (the hotel rule beyond AIR)', () => {
    afterEach(() => {
        cancelRoomObjectPlacement();
        processRoomObjectPlacement.mockClear();
        vi.mocked(GetRoomSessionManager).mockReset();
        vi.mocked(GetRoomEngine).mockReset();
    });

    it('places furni, pets and bots in normal play', () => {
        setUp(false);

        expect(attemptItemPlacement(furni())).toBe(true);
        expect(attemptPetPlacement(pet)).toBe(true);
        expect(attemptBotPlacement(bot)).toBe(true);
        expect(processRoomObjectPlacement).toHaveBeenCalledTimes(3);
    });

    it('places nothing from the inventory in playtest, the room owner included', () => {
        setUp(true);

        expect(attemptItemPlacement(furni())).toBe(false);
        expect(attemptPetPlacement(pet)).toBe(false);
        expect(attemptBotPlacement(bot)).toBe(false);
        expect(processRoomObjectPlacement).not.toHaveBeenCalled();
    });

    it('places again in playtest when the room has free furni movements', () => {
        setUp(true, true);

        expect(attemptItemPlacement(furni())).toBe(true);
        expect(processRoomObjectPlacement).toHaveBeenCalledTimes(1);
    });
});
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