Files

57 lines
2.3 KiB
TypeScript
Raw Permalink Normal View History

import { describe, test } from 'node:test';
import assert from 'node:assert/strict';
import { resolveCommentTarget } from './inlineCommentTarget';
const snapshot = (overrides = {}) => ({
currentSessionId: null,
sessionDirectory: null,
draftOpen: false,
draftDirectory: null,
currentDirectory: '/repo',
...overrides,
});
describe('resolveCommentTarget', () => {
test('a booting panel with a directory but no session keeps waiting', () => {
// This was the bug: the draft went under `draft` here, a key the
// session's composer never reads, and the chip never appeared.
assert.equal(resolveCommentTarget(snapshot(), 'ses_1'), null);
assert.equal(resolveCommentTarget(snapshot()), null);
});
test('a session panel files only once it shows the session the comment is for', () => {
assert.equal(resolveCommentTarget(snapshot({ currentSessionId: 'ses_other', sessionDirectory: '/repo' }), 'ses_1'), null);
assert.deepEqual(
resolveCommentTarget(snapshot({ currentSessionId: 'ses_1', sessionDirectory: '/repo/wt' }), 'ses_1'),
{ directory: '/repo/wt', sessionKey: 'ses_1' },
);
});
test('the session directory wins over the webview directory', () => {
assert.deepEqual(
resolveCommentTarget(snapshot({ currentSessionId: 'ses_1', sessionDirectory: '/repo/wt' })),
{ directory: '/repo/wt', sessionKey: 'ses_1' },
);
assert.deepEqual(
resolveCommentTarget(snapshot({ currentSessionId: 'ses_1' })),
{ directory: '/repo', sessionKey: 'ses_1' },
);
});
test('the sidebar files on an open new-session draft', () => {
assert.deepEqual(
resolveCommentTarget(snapshot({ draftOpen: true, draftDirectory: '/repo/other' })),
{ directory: '/repo/other', sessionKey: 'draft' },
);
assert.deepEqual(
resolveCommentTarget(snapshot({ draftOpen: true })),
{ directory: '/repo', sessionKey: 'draft' },
);
});
test('nothing is filed without any directory', () => {
assert.equal(resolveCommentTarget(snapshot({ currentSessionId: 'ses_1', currentDirectory: null })), null);
assert.equal(resolveCommentTarget(snapshot({ draftOpen: true, currentDirectory: null })), null);
});
});