No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

23 líneas
1.8 KiB

  1. import test from 'node:test';
  2. import assert from 'node:assert/strict';
  3. import fs from 'node:fs';
  4. import {createRequire} from 'node:module';
  5. const requireWeb=createRequire(new URL('../../unreal_tran_web/package.json',import.meta.url));
  6. const ts=requireWeb('typescript');
  7. const source=fs.readFileSync(new URL('../../unreal_tran_web/src/utils/workspaceTabCloseGuards.ts',import.meta.url),'utf8');
  8. const compiled=ts.transpileModule(source,{compilerOptions:{target:ts.ScriptTarget.ES2022,module:ts.ModuleKind.ESNext}}).outputText;
  9. const {registerWorkspaceTabCloseGuard:register,prepareWorkspaceTabsClose:prepare}=await import(`data:text/javascript;base64,${Buffer.from(compiled).toString('base64')}`);
  10. test('closing one selected scene checks its cached guard, leaves unrelated workspaces alone',async()=>{
  11. const seen=[];const a=register({key:()=>'/scene/a',prepare:()=>{seen.push('a');return true}}),b=register({key:()=>'/scene/b',prepare:()=>{seen.push('b');return true}});
  12. try {const commit=await prepare(['/scene/b']);assert.equal(typeof commit,'function');commit();assert.deepEqual(seen,['b']);}finally{a();b();}
  13. });
  14. test('cancel or failed save in a later tab never commits earlier draft discard',async()=>{
  15. let discarded=false;const a=register({key:()=>'/a',prepare:()=>()=>{discarded=true}}),b=register({key:()=>'/b',prepare:()=>false});
  16. try{assert.equal(await prepare(['/a','/b']),false);assert.equal(discarded,false);}finally{a();b();}
  17. });
  18. test('all successful confirmations commit together and unmounted guards are removed',async()=>{
  19. let commits=0;const a=register({key:()=>'/a',prepare:()=>()=>{commits++}}),b=register({key:()=>'/b',prepare:()=>()=>{commits++}});
  20. b();try{const commit=await prepare(['/a','/b']);assert.equal(commits,0);commit();assert.equal(commits,1);}finally{a();}
  21. assert.equal(typeof await prepare(['/a','/b']),'function');
  22. });