diff --git a/apps/desktop/src/components/backup/DatabaseBackupConfigFields.vue b/apps/desktop/src/components/backup/DatabaseBackupConfigFields.vue index 24677f19d0..53f3a17796 100644 --- a/apps/desktop/src/components/backup/DatabaseBackupConfigFields.vue +++ b/apps/desktop/src/components/backup/DatabaseBackupConfigFields.vue @@ -8,6 +8,7 @@ import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { HelpTooltip } from "@/components/ui/tooltip"; import { Check, ChevronDown, FolderOpen, Loader2, Search } from "@lucide/vue"; +import ConnectionGroupBadge from "@/components/connection/ConnectionGroupBadge.vue"; import { databaseBackupFileNamePatternIsValid, type DatabaseBackupExecutionConfig } from "@/lib/backup/scheduledDatabaseBackup"; import type { ConnectionConfig } from "@/types/database"; @@ -123,6 +124,7 @@ watch( @click="selectConnection(connection.id)" > + {{ connection.name }}
{{ t("databaseBackup.noMatchingConnections") }}
diff --git a/apps/desktop/src/components/backup/__tests__/ScheduledDatabaseBackupSettings.spec.ts b/apps/desktop/src/components/backup/__tests__/ScheduledDatabaseBackupSettings.spec.ts index cb1a421f5f..1b9bbdf69d 100644 --- a/apps/desktop/src/components/backup/__tests__/ScheduledDatabaseBackupSettings.spec.ts +++ b/apps/desktop/src/components/backup/__tests__/ScheduledDatabaseBackupSettings.spec.ts @@ -63,6 +63,16 @@ vi.mock("@/composables/useToast", () => ({ useToast: () => ({ toast: mocks.toast }), })); +vi.mock("@/components/connection/ConnectionGroupBadge.vue", async () => { + const { defineComponent, h } = await import("vue"); + return { + default: defineComponent({ + props: { connectionId: { type: String, required: true } }, + setup: (props) => () => h("span", { "data-connection-group-badge": "", "data-connection-id": props.connectionId }), + }), + }; +}); + vi.mock("@tauri-apps/plugin-dialog", () => ({ open: mocks.openDirectory, })); @@ -460,6 +470,19 @@ describe("ScheduledDatabaseBackupSettings schedule dialog", () => { expect(currentDialog().querySelector("[data-backup-output-path-preview]")?.textContent).toContain("/backups/archive/"); }); + it("shows connection group badges in the backup connection picker", async () => { + mocks.connections.push({ id: "mysql-primary", name: "Shared name", db_type: "mysql" }, { id: "mysql-archive", name: "Shared name", db_type: "mysql" }); + await mountSettings(); + + addScheduleButton().click(); + await flush(); + currentDialog().querySelector("[data-backup-connection-picker]")?.click(); + await flush(); + + const connectionIds = Array.from(document.body.querySelectorAll("[data-connection-group-badge]")).map((badge) => badge.dataset.connectionId); + expect(connectionIds).toEqual(["mysql-primary", "mysql-archive"]); + }); + it("opens an independent one-shot dialog without schedule fields", async () => { mocks.connections.push({ id: "mysql-1", name: "Local MySQL", db_type: "mysql" }); await mountSettings();