mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-09 16:59:43 +02:00
fix(file-viewer): COD-341 preserve search row layout
This commit is contained in:
@@ -3310,7 +3310,6 @@ Object.assign(CodemanApp.prototype, {
|
|||||||
<span class="file-tree-expand"></span>
|
<span class="file-tree-expand"></span>
|
||||||
<span class="file-tree-icon">${icon}</span>
|
<span class="file-tree-icon">${icon}</span>
|
||||||
<span class="${nameClass}">${escapeHtml(match.name)}</span>
|
<span class="${nameClass}">${escapeHtml(match.name)}</span>
|
||||||
<span class="file-tree-path" title="${escapeHtml(match.path)}">${escapeHtml(match.path)}</span>
|
|
||||||
${sizeStr}
|
${sizeStr}
|
||||||
${downloadBtn}
|
${downloadBtn}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -312,7 +312,8 @@ describe('File Viewer server search', () => {
|
|||||||
expect(elements.fileBrowserTree.innerHTML).toContain('class="file-tree-size">1.5 KB</span>');
|
expect(elements.fileBrowserTree.innerHTML).toContain('class="file-tree-size">1.5 KB</span>');
|
||||||
expect(elements.fileBrowserTree.innerHTML).toContain('📘');
|
expect(elements.fileBrowserTree.innerHTML).toContain('📘');
|
||||||
expect(elements.fileBrowserTree.innerHTML).toContain('📁');
|
expect(elements.fileBrowserTree.innerHTML).toContain('📁');
|
||||||
expect(elements.fileBrowserTree.innerHTML).toContain('src/widget.ts');
|
expect(elements.fileBrowserTree.innerHTML).toContain('data-path="src/widget.ts"');
|
||||||
|
expect(elements.fileBrowserTree.innerHTML).not.toContain('class="file-tree-path"');
|
||||||
expect(elements.fileBrowserTree.innerHTML).toContain(
|
expect(elements.fileBrowserTree.innerHTML).toContain(
|
||||||
'href="/api/sessions/session%2FA/file-raw?path=src%2Fwidget.ts&download=true"'
|
'href="/api/sessions/session%2FA/file-raw?path=src%2Fwidget.ts&download=true"'
|
||||||
);
|
);
|
||||||
@@ -409,6 +410,40 @@ describe('File Viewer server search', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('keeps query B rendered when its response beats an already-launched query A', async () => {
|
||||||
|
const { app, elements, pending } = loadPanel();
|
||||||
|
app.filterFileBrowser('query A');
|
||||||
|
await vi.advanceTimersByTimeAsync(250);
|
||||||
|
app.filterFileBrowser('query B');
|
||||||
|
await vi.advanceTimersByTimeAsync(250);
|
||||||
|
expect(pending).toHaveLength(2);
|
||||||
|
|
||||||
|
pending[1].reply.resolve(
|
||||||
|
response(
|
||||||
|
successfulData({
|
||||||
|
matches: [{ name: 'result-B.ts', path: 'result-B.ts', type: 'file' }],
|
||||||
|
matchCount: 1,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
await vi.advanceTimersByTimeAsync(0);
|
||||||
|
expect(elements.fileBrowserTree.innerHTML).toContain('result-B.ts');
|
||||||
|
|
||||||
|
pending[0].reply.resolve(
|
||||||
|
response(
|
||||||
|
successfulData({
|
||||||
|
matches: [{ name: 'result-A.ts', path: 'result-A.ts', type: 'file' }],
|
||||||
|
matchCount: 1,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
await vi.advanceTimersByTimeAsync(0);
|
||||||
|
|
||||||
|
expect(elements.fileBrowserTree.innerHTML).toContain('result-B.ts');
|
||||||
|
expect(elements.fileBrowserTree.innerHTML).not.toContain('result-A.ts');
|
||||||
|
expect(app._fileBrowserState.matches[0].name).toBe('result-B.ts');
|
||||||
|
});
|
||||||
|
|
||||||
it('clears a blank query and restores the compatible cached tree immediately without fetching', () => {
|
it('clears a blank query and restores the compatible cached tree immediately without fetching', () => {
|
||||||
const { app, elements, pending } = loadPanel();
|
const { app, elements, pending } = loadPanel();
|
||||||
app.fileBrowserData = {
|
app.fileBrowserData = {
|
||||||
|
|||||||
Reference in New Issue
Block a user