fix(structure): silence column reorder notice when adding columns

This commit is contained in:
zipg 2026-08-08 11:33:28 +08:00 committed by GitHub
parent 50c42d8935
commit 2c036e2860
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 4 deletions

View File

@ -18,6 +18,7 @@ const mocks = vi.hoisted(() => ({
invalidateObjectDdl: vi.fn(),
loadObjectMetadataFacet: vi.fn(),
invalidateTableMetadataCache: vi.fn(),
toast: vi.fn(),
}));
vi.mock("vue-i18n", () => ({ useI18n: () => ({ t: (key: string) => key }) }));
@ -186,7 +187,7 @@ vi.mock("@/stores/settingsStore", () => ({
}),
}));
vi.mock("@/composables/useTheme", () => ({ useTheme: () => ({ isDark: { value: false } }) }));
vi.mock("@/composables/useToast", () => ({ useToast: () => ({ toast: vi.fn() }) }));
vi.mock("@/composables/useToast", () => ({ useToast: () => ({ toast: mocks.toast }) }));
vi.mock("@/lib/sql/sqlHighlighter", () => ({ createShikiSqlHighlighter: vi.fn(async () => (sql: string) => sql) }));
vi.mock("@/lib/metadata/objectDdlCache", () => ({
loadObjectDdl: mocks.loadObjectDdl,
@ -239,7 +240,7 @@ function draft(isPrimaryKey = false) {
};
}
async function mountEditor(databaseType: "dameng" | "oracle", isPrimaryKey = false) {
async function mountEditor(databaseType: "sqlserver" | "postgres" | "sqlite" | "oracle" | "dameng" | "duckdb" | "informix", isPrimaryKey = false) {
mocks.connection.db_type = databaseType;
mocks.connection.name = databaseType;
mocks.connection.driver_label = databaseType;
@ -363,6 +364,19 @@ describe("TableStructureEditor primary key editing", () => {
});
});
describe("TableStructureEditor local column order notice", () => {
it.each(["sqlserver", "postgres", "sqlite", "oracle", "dameng", "duckdb", "informix"] as const)("does not show the reorder notice when adding a %s column", async (databaseType) => {
const root = await mountEditor(databaseType);
const addColumnButton = Array.from(root.querySelectorAll("button")).find((button) => button.textContent?.includes("structureEditor.addColumn"));
if (!addColumnButton) throw new Error("Missing add column button");
addColumnButton.click();
await nextTick();
expect(mocks.toast).not.toHaveBeenCalled();
});
});
describe("TableStructureEditor metadata loading", () => {
it("opens the initial DDL tab without starting structure metadata loads", async () => {
await mountLoadingEditor("ddl");

View File

@ -1437,7 +1437,7 @@ async function addColumn() {
const insertAt = resolveInsertColumnIndex(columns.value, selectedColumnId.value);
columns.value.splice(insertAt, 0, column);
selectedColumnId.value = column.id;
if (usesLocalTableColumnOrder.value) persistLocalColumnOrder();
if (usesLocalTableColumnOrder.value) persistLocalColumnOrder(false);
await focusColumnNameInput(column.id);
}
@ -1455,7 +1455,7 @@ function applyColumnTemplate(templateId: string) {
const insertAt = resolveInsertColumnIndex(columns.value, selectedColumnId.value);
columns.value.splice(insertAt, 0, ...templateColumns);
selectedColumnId.value = templateColumns[templateColumns.length - 1]?.id ?? selectedColumnId.value;
if (usesLocalTableColumnOrder.value) persistLocalColumnOrder();
if (usesLocalTableColumnOrder.value) persistLocalColumnOrder(false);
}
function removeNewColumn(column: EditableStructureColumn) {