fix(query): preserve PG notices for statements without results

This commit is contained in:
amwps290 authored and GitHub committed 2026-09-15 14:30:59 +08:00
1 parent 9c22856285
commit 20e026eea9
3 files changed
+75 -24

No files matched your search

+8 -2
View File
@@ -71,11 +71,17 @@ test("view switcher exposes a messages button with a count badge", () => {
test("ContentArea wires server messages into the switcher and the messages view", () => {
const contentArea = source(contentAreaPath);
assert.match(contentArea, /resultMessageCount = computed\(\(\) => props\.activeTab\.result\?\.messages\?\.length \?\? 0\)/);
// Messages are aggregated across every statement result of the run so a
// message-only statement (e.g. a PostgreSQL DO block) keeps its notices even
// when a later statement owns the active result.
assert.match(contentArea, /const resultMessages = computed<QueryMessage\[\]>\(\(\) => \{/);
assert.match(contentArea, /props\.activeTab\.results\?\.length \? props\.activeTab\.results : props\.activeTab\.result \? \[props\.activeTab\.result\] : \[\]/);
assert.match(contentArea, /results\.flatMap\(\(result\) => result\.messages \?\? \[\]\)/);
assert.match(contentArea, /resultMessageCount = computed\(\(\) => resultMessages\.value\.length\)/);
assert.match(contentArea, /canShowMessagesOutput = computed\(\(\) => resultMessageCount\.value > 0\)/);
assert.equal((contentArea.match(/:can-show-messages="canShowMessagesOutput"/g) ?? []).length, 2);
assert.equal((contentArea.match(/:message-count="resultMessageCount"/g) ?? []).length, 2);
assert.match(contentArea, /<QueryMessagesView v-else-if="activeOutputView === 'messages'"[\s\S]*:messages="activeTab\.result\?\.messages \?\? \[\]"/);
assert.match(contentArea, /<QueryMessagesView v-else-if="activeOutputView === 'messages'"[\s\S]*:messages="resultMessages"/);
// Results with no result set auto-switch via the shared default-view helper.
assert.match(contentArea, /import \{ defaultViewForResult \} from "@\/lib\/query\/queryResultDefaultView"/);
assert.match(contentArea, /emit\("update:activeOutputView", props\.activeTab\.id, result \? defaultViewForResult\(result\) : "summary"\)/);