diff --git a/tests/test_downloads_tab_workflow_route.mjs b/tests/test_downloads_tab_workflow_route.mjs index 59a6b6c..acee650 100644 --- a/tests/test_downloads_tab_workflow_route.mjs +++ b/tests/test_downloads_tab_workflow_route.mjs @@ -5863,6 +5863,62 @@ test('CivitAI hash search renders sizeKB when byte size is unavailable', () => { ); }); +test('link/name controls place the add or search action before the input switch', () => { + const renderSearchControls = eval(`(${extractMethod(searchPanelMethodsSource, 'renderSearchControls')})`); + const dialog = { + getSearchState() { + return { + selectedSource: 'all', + selectedBaseModel: 'auto', + inputMode: 'link', + manualSearchQuery: '', + }; + }, + getDefaultSearchBaseModel() { + return 'auto'; + }, + getSearchBaseModelTooltip() { + return ''; + }, + hasRenderableSearchState() { + return false; + }, + getLinkNameInputMode(state) { + return state.inputMode; + }, + getSearchSourceLabel() { + return 'All'; + }, + getSearchBaseModelLabel() { + return 'Any model'; + }, + getMissingSearchKey() { + return 'missing-key'; + }, + escapeHtml(value) { + return String(value); + }, + renderSearchButtonContent() { + return 'search'; + }, + renderLinkNameActionContent() { + return 'action'; + }, + renderLinkNameSwitchIcon() { + return 'switch'; + }, + }; + + const html = renderSearchControls.call(dialog, { node_id: 1, widget_index: 2 }); + const actionIndex = html.indexOf('mr-link-name-action-picker'); + const inputIndex = html.indexOf('mr-link-name-input-picker'); + const modeIndex = html.indexOf('mr-link-name-mode'); + + assert.ok(actionIndex >= 0); + assert.ok(inputIndex > actionIndex); + assert.ok(modeIndex > inputIndex); +}); + test('search result refreshes preserve keyed progress and result DOM', () => { const displaySearchResults = extractMethod(resolveDownloadMethodsSource, 'displaySearchResults'); const patchSearchResultsContainer = extractMethod( diff --git a/web/resolver/search/search_panel.js b/web/resolver/search/search_panel.js index 885dc86..8c15222 100644 --- a/web/resolver/search/search_panel.js +++ b/web/resolver/search/search_panel.js @@ -1985,6 +1985,16 @@ export const searchPanelMethods = { html += ``; html += ``; html += ``; return html; },