mirror of
https://github.com/fancive/obsidian-parallel-reader.git
synced 2026-07-22 06:53:43 +00:00
Replaces the monolithic modules.test.js (983 lines) with focused per-module test files sharing a common test-setup.js. Each file is under 225 lines. All existing test assertions preserved. New files: test-setup.js, anchor.test.js, schema.test.js, cache.test.js, cards-nav.test.js, markdown.test.js, vault-batch.test.js, i18n.test.js, scroll.test.js, settings.test.js, providers.test.js, streaming.test.js, cli.test.js Change-Id: I37a3342a1588807277e679e6535cde361e650565
44 lines
2.5 KiB
JavaScript
44 lines
2.5 KiB
JavaScript
const { assert, t } = require('./test-setup');
|
|
|
|
// ── cards.ts ──
|
|
|
|
const cards = [{ title: 'A' }, { title: 'B' }, { title: 'C' }];
|
|
assert.deepStrictEqual(t.removeCardAt(cards, 0), [{ title: 'B' }, { title: 'C' }], 'remove first');
|
|
assert.deepStrictEqual(t.removeCardAt(cards, 2), [{ title: 'A' }, { title: 'B' }], 'remove last');
|
|
assert.strictEqual(t.removeCardAt(cards, 0).length, 2, 'returns new array');
|
|
assert.strictEqual(cards.length, 3, 'original not mutated');
|
|
assert.deepStrictEqual(t.removeCardAt([], 0), [], 'empty array');
|
|
assert.deepStrictEqual(t.removeCardAt(cards, -1).length, 3, 'negative index no-op');
|
|
assert.deepStrictEqual(t.removeCardAt(cards, 5).length, 3, 'out of range no-op');
|
|
|
|
assert.strictEqual(t.activeIndexAfterCardDelete(0, 3, 0), 0, 'delete first active -> stays 0');
|
|
assert.strictEqual(t.activeIndexAfterCardDelete(2, 3, 2), 1, 'delete last active -> previous');
|
|
assert.strictEqual(t.activeIndexAfterCardDelete(0, 1, 0), -1, 'single card delete -> -1');
|
|
assert.strictEqual(t.activeIndexAfterCardDelete(1, 5, 3), 2, 'delete before active -> shift left');
|
|
assert.strictEqual(t.activeIndexAfterCardDelete(3, 5, 1), 1, 'delete after active -> no change');
|
|
|
|
const updated = t.updateCardAt(cards, 1, { title: 'B2', gist: 'new gist' });
|
|
assert.strictEqual(updated[1].title, 'B2');
|
|
assert.strictEqual(updated[1].gist, 'new gist');
|
|
assert.strictEqual(updated[0].title, 'A', 'other cards unchanged');
|
|
assert.strictEqual(cards[1].title, 'B', 'original not mutated');
|
|
|
|
// ── navigation.ts ──
|
|
|
|
assert.strictEqual(t.nextCardIndex(-1, 5, 1), 0, 'from none forward -> first');
|
|
assert.strictEqual(t.nextCardIndex(-1, 5, -1), 4, 'from none backward -> last');
|
|
assert.strictEqual(t.nextCardIndex(0, 5, 1), 1, 'step forward');
|
|
assert.strictEqual(t.nextCardIndex(4, 5, 1), 4, 'clamp at end');
|
|
assert.strictEqual(t.nextCardIndex(0, 5, -1), 0, 'clamp at start');
|
|
assert.strictEqual(t.nextCardIndex(2, 5, -1), 1, 'step backward');
|
|
assert.strictEqual(t.nextCardIndex(0, 0, 1), -1, 'empty list');
|
|
assert.strictEqual(t.nextCardIndex(0, -1, 1), -1, 'negative count');
|
|
|
|
assert.strictEqual(t.activeSectionLine([{ startLine: 10 }], 0), 10);
|
|
assert.strictEqual(t.activeSectionLine([{ startLine: -1 }], 0), -1, 'negative startLine');
|
|
assert.strictEqual(t.activeSectionLine([], 0), -1, 'empty sections');
|
|
assert.strictEqual(t.activeSectionLine([{ startLine: 5 }], -1), -1, 'negative index');
|
|
assert.strictEqual(t.activeSectionLine([{ startLine: 5 }], 1), -1, 'out of range index');
|
|
assert.strictEqual(t.activeSectionLine(null, 0), -1, 'null sections');
|
|
|
|
console.log('cards-nav tests passed');
|