Ctrl K
ComunidadGuías…

test/dashboard-catalog-diff.test.js

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

Archivo original ↗Preguntar a KiBot
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { buildCatalogDiff } from '../src/dashboard/catalog-diff.js';
import { buildModelReconciliation } from '../src/dashboard/model-reconcile.js';
import { getSnapshotSelectors } from '../src/devin-connect-models.js';

const resolve = (name) => {
  if (name === 'alias-a' || name === 'sel-a') return { selector: 'sel-a', mapped: true };
  if (name === 'alias-b') return { selector: 'sel-b', mapped: false };
  return { selector: name, mapped: false };
};

describe('dashboard catalog diff', () => {
  it('computes added and missing sets against the snapshot', () => {
    const diff = buildCatalogDiff({
      live: ['sel-a', { selector: 'sel-b' }, 'sel-c'],
      snapshot: ['sel-a', 'sel-b', 'sel-old'],
      resolve,
    });
    assert.equal(diff.liveCount, 3);
    assert.equal(diff.snapshotCount, 3);
    assert.equal(diff.synced, true);
    assert.deepEqual(diff.added, ['sel-c']);
    assert.deepEqual(diff.missing, ['sel-old']);
  });

  it('deduplicates selectors and aliases, and reports mapping', () => {
    const diff = buildCatalogDiff({
      live: [
        { selector: 'sel-a', alias: 'alias-a' },
        { selector: 'sel-a', alias: 'alias-a' },
        { selector: 'sel-b', alias: 'alias-b' },
      ],
      snapshot: [],
      resolve,
    });
    assert.equal(diff.liveCount, 2);
    assert.equal(diff.aliasCount, 2);
    assert.deepEqual(diff.aliases.map((a) => [a.alias, a.mapped]), [
      ['alias-a', true],
      ['alias-b', false],
    ]);
    assert.deepEqual(diff.unmapped, ['sel-b']);
  });

  it('ignores malformed rows and handles an empty live catalog', () => {
    const diff = buildCatalogDiff({
      live: [null, 42, '', { selector: '  ' }],
      snapshot: ['sel-a'],
      resolve,
    });
    assert.equal(diff.liveCount, 0);
    assert.equal(diff.synced, false);
    assert.deepEqual(diff.added, []);
    assert.deepEqual(diff.missing, []);
    assert.equal(diff.snapshotCount, 1);
    assert.equal(diff.aliasCount, 0);
    assert.equal(diff.unmappedCount, 0);
  });

  it('reconciles against the committed 233-selector snapshot', () => {
    const out = buildModelReconciliation({
      local: [],
      live: [],
      snapshot: getSnapshotSelectors(),
      toggleable: [],
      fedModels: null,
      orgConfigs: null,
      upstreamCatalog: null,
      sources: {},
    });
    assert.equal(out.snapshotCount, 233);
    assert.equal(out.synced, false);
    assert.deepEqual(out.missing, []);
  });
});