sidepanel-icloud-manager.test.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. const test = require('node:test');
  2. const assert = require('node:assert/strict');
  3. const fs = require('node:fs');
  4. test('sidepanel loads icloud manager before sidepanel bootstrap', () => {
  5. const html = fs.readFileSync('sidepanel/sidepanel.html', 'utf8');
  6. const icloudManagerIndex = html.indexOf('<script src="icloud-manager.js"></script>');
  7. const sidepanelIndex = html.indexOf('<script src="sidepanel.js"></script>');
  8. assert.notEqual(icloudManagerIndex, -1);
  9. assert.notEqual(sidepanelIndex, -1);
  10. assert.ok(icloudManagerIndex < sidepanelIndex);
  11. });
  12. test('icloud manager exposes a factory and renders empty state', () => {
  13. const source = fs.readFileSync('sidepanel/icloud-manager.js', 'utf8');
  14. const windowObject = {};
  15. const api = new Function('window', `${source}; return window.SidepanelIcloudManager;`)(windowObject);
  16. assert.equal(typeof api?.createIcloudManager, 'function');
  17. const manager = api.createIcloudManager({
  18. dom: {
  19. btnIcloudBulkDelete: { disabled: false },
  20. btnIcloudBulkPreserve: { disabled: false },
  21. btnIcloudBulkUnpreserve: { disabled: false },
  22. btnIcloudBulkUnused: { disabled: false },
  23. btnIcloudBulkUsed: { disabled: false },
  24. btnIcloudDeleteUsed: { disabled: false },
  25. btnIcloudLoginDone: { disabled: false },
  26. btnIcloudRefresh: { disabled: false },
  27. checkboxIcloudSelectAll: { checked: false, indeterminate: false, disabled: false },
  28. icloudList: { innerHTML: '' },
  29. icloudLoginHelp: { style: { display: 'none' } },
  30. icloudLoginHelpText: { textContent: '' },
  31. icloudLoginHelpTitle: { textContent: '' },
  32. icloudSection: { style: { display: '' } },
  33. icloudSelectionSummary: { textContent: '' },
  34. icloudSummary: { textContent: '' },
  35. inputIcloudSearch: { value: '', disabled: false },
  36. selectIcloudFilter: { value: 'all', disabled: false },
  37. },
  38. helpers: {
  39. escapeHtml: (value) => String(value || ''),
  40. openConfirmModal: async () => true,
  41. showToast() {},
  42. },
  43. runtime: {
  44. sendMessage: async () => ({ aliases: [] }),
  45. },
  46. });
  47. assert.equal(typeof manager.renderIcloudAliases, 'function');
  48. assert.equal(typeof manager.refreshIcloudAliases, 'function');
  49. assert.equal(typeof manager.queueIcloudAliasRefresh, 'function');
  50. assert.equal(typeof manager.reset, 'function');
  51. manager.renderIcloudAliases([]);
  52. assert.equal(manager.hasDeletableUsedAliases(), false);
  53. });