Ctrl K
ComunidadGuías…

test/folder-collapse-lifecycle.test.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
var test = require('node:test'), assert = require('node:assert/strict'), fs = require('node:fs'), vm = require('node:vm');
test('superseded folder animation cannot reverse a newer chevron click', function () {
  var state = { sessionFolderCollapseAnimations: { 'desktop:f': { token: 'new' } } }, attributes = {}, classes = new Set();
  var root = { isConnected: true, classList: { toggle: function (key, on) { if (on) classes.add(key); else classes.delete(key); } } };
  var body = { hidden: false, style: {}, inert: false, contains: function () { return false; }, getAnimations: function () { return []; },
    classList: { remove: function () {} }, setAttribute: function (key, value) { attributes[key] = value; }, removeAttribute: function (key) { delete attributes[key]; } };
  var toggle = { setAttribute: function (key, value) { attributes[key] = value; } };
  var api = vm.createContext({ store: { get: function (key) { return state[key]; }, set: function (change) { Object.assign(state, change); } }, document: { activeElement: null } });
  vm.runInContext(fs.readFileSync('lib/public/modules/session-folder-collapse.js', 'utf8').replace(/^import .*;\n/gm, '').replace(/^export /gm, ''), api);
  api.finish('desktop:f', 'old', root, body, toggle, false);
  assert.equal(body.hidden, false); assert.equal(state.sessionFolderCollapseAnimations['desktop:f'].token, 'new');
  api.finish('desktop:f', 'new', root, body, toggle, true);
  assert.equal(body.hidden, false); assert.equal(attributes['aria-expanded'], 'true'); assert.equal(state.sessionFolderCollapseAnimations['desktop:f'], undefined);
});