UNPKG

@shopware-ag/dive

Version:

Shopware Spatial Framework

109 lines (85 loc) 3.12 kB
import { Object3D } from 'three'; import { DIVEGLTFIO } from '../GLTFIO'; import { type GLTF } from 'three/examples/jsm/loaders/GLTFLoader'; let testGLTFIO: DIVEGLTFIO; describe('dive/io/gltf/DIVEGLTFIO', () => { beforeEach(() => { testGLTFIO = new DIVEGLTFIO(); }); afterEach(() => { jest.clearAllMocks(); }); it('should instantiate', () => { expect(testGLTFIO).toBeDefined(); }); it('should import from URL', async () => { const mockGLTF = {} as GLTF; // test without progress callback jest.spyOn(testGLTFIO['_importer'], 'loadAsync').mockImplementationOnce( ( uri: string, progEvent?: (p: ProgressEvent<EventTarget>) => void, ) => new Promise<GLTF>((resolve) => { if (progEvent) progEvent({ loaded: 0, total: 1, } as ProgressEvent<EventTarget>); resolve(mockGLTF); }), ); const resultWithoutProgress = await testGLTFIO.Import( 'test url', undefined, ); expect(resultWithoutProgress).toStrictEqual(mockGLTF); // test with progress callback jest.spyOn(testGLTFIO['_importer'], 'loadAsync').mockImplementationOnce( ( uri: string, progEvent?: (p: ProgressEvent<EventTarget>) => void, ) => new Promise<GLTF>((resolve) => { if (progEvent) progEvent({ loaded: 0, total: 1, } as ProgressEvent<EventTarget>); resolve(mockGLTF); }), ); const onProgress = jest.fn(); const resultWithProgress = await testGLTFIO.Import( 'test url', onProgress, ); expect(resultWithProgress).toStrictEqual(mockGLTF); expect(onProgress).toHaveBeenCalledTimes(1); }); it('should export to URL', async () => { const mockObject = new Object3D(); // export as JSON object jest.spyOn(testGLTFIO['_exporter'], 'parseAsync').mockResolvedValueOnce( {}, ); const json = await testGLTFIO.Export(mockObject, false, false); expect(json).toBeDefined(); // export as array buffer jest.spyOn(testGLTFIO['_exporter'], 'parseAsync').mockResolvedValueOnce( new ArrayBuffer(0), ); const binary = await testGLTFIO.Export(mockObject, true, false); expect(binary).toBeDefined(); // export as array buffer (only visible) jest.spyOn(testGLTFIO['_exporter'], 'parseAsync').mockResolvedValueOnce( new ArrayBuffer(0), ); const binaryOnlyVisible = await testGLTFIO.Export( mockObject, true, true, ); expect(binaryOnlyVisible).toBeDefined(); }); });