1 parent
bd83ee189b
commit
3dd034bf06
6 files changed
+130
-28
No files matched your search
@@ -21,7 +21,7 @@ import {
|
||||
parseExtraToColumnExtra,
|
||||
rehydrateColumnDraftsFromMetadata,
|
||||
resolveInsertColumnIndex,
|
||||
restoreDamengLengthUnitsAfterSave,
|
||||
restoreCharacterLengthUnitsAfterSave,
|
||||
splitDataType,
|
||||
} from "@/lib/table/tableStructureEditorState";
|
||||
|
||||
@@ -189,7 +189,7 @@ describe("tableStructureEditorState", () => {
|
||||
expect(combineDataTypeForDatabase("mysql", "integer", "11")).toBe("integer(11)");
|
||||
});
|
||||
|
||||
it("offers BYTE and CHAR units only for supported Dameng character types", () => {
|
||||
it("offers BYTE and CHAR units for supported Oracle-family character types", () => {
|
||||
expect(getDataTypeLengthUnitOptions("dameng", "varchar2(255 CHAR)")).toEqual(["BYTE", "CHAR"]);
|
||||
expect(getDataTypeLengthUnitOptions("dameng", "varchar(255)")).toEqual(["BYTE", "CHAR"]);
|
||||
expect(getDataTypeLengthUnitOptions("dameng", "char(10 BYTE)")).toEqual(["BYTE", "CHAR"]);
|
||||
@@ -197,7 +197,9 @@ describe("tableStructureEditorState", () => {
|
||||
expect(getDataTypeLengthUnitOptions("dameng", "nchar(10)")).toEqual([]);
|
||||
expect(getDataTypeLengthUnitOptions("dameng", "nvarchar2(10)")).toEqual([]);
|
||||
expect(getDataTypeLengthUnitOptions("dameng", "number(10,0)")).toEqual([]);
|
||||
expect(getDataTypeLengthUnitOptions("oracle", "varchar2(255 CHAR)")).toEqual([]);
|
||||
expect(getDataTypeLengthUnitOptions("oracle", "varchar2(255 CHAR)")).toEqual(["BYTE", "CHAR"]);
|
||||
expect(getDataTypeLengthUnitOptions("oracle", "char(10 BYTE)")).toEqual(["BYTE", "CHAR"]);
|
||||
expect(getDataTypeLengthUnitOptions("oracle", "nvarchar2(10)")).toEqual([]);
|
||||
expect(getDataTypeLengthUnitOptions("mysql", "varchar(255)")).toEqual([]);
|
||||
});
|
||||
|
||||
@@ -213,6 +215,12 @@ describe("tableStructureEditorState", () => {
|
||||
expect(combineDataTypeForDatabaseWithLengthUnit("dameng", "varchar2", "255", "")).toBe("varchar2(255)");
|
||||
});
|
||||
|
||||
it("separates and reconstructs Oracle character length units", () => {
|
||||
expect(dataTypeLengthInputValue("oracle", "VARCHAR2(255 CHAR)")).toBe("255");
|
||||
expect(dataTypeLengthUnitValue("oracle", "VARCHAR2(255 CHAR)")).toBe("CHAR");
|
||||
expect(combineDataTypeForDatabaseWithLengthUnit("oracle", "VARCHAR2", "64", "BYTE")).toBe("VARCHAR2(64 BYTE)");
|
||||
});
|
||||
|
||||
it("does not reinterpret unsupported length parameters or dialects", () => {
|
||||
expect(dataTypeLengthInputValue("dameng", "varchar2(255 WORD)")).toBe("255 WORD");
|
||||
expect(dataTypeLengthUnitValue("dameng", "varchar2(255 WORD)")).toBe("");
|
||||
@@ -235,7 +243,7 @@ describe("tableStructureEditorState", () => {
|
||||
"dameng",
|
||||
);
|
||||
|
||||
const [restored] = restoreDamengLengthUnitsAfterSave([legacyAgentDraft!], new Map([["display_name", "VARCHAR2(255 CHAR)"]]));
|
||||
const [restored] = restoreCharacterLengthUnitsAfterSave("dameng", [legacyAgentDraft!], new Map([["display_name", "VARCHAR2(255 CHAR)"]]));
|
||||
|
||||
expect(restored?.dataType).toBe("VARCHAR2(255 CHAR)");
|
||||
expect(restored?.original?.data_type).toBe("VARCHAR2(255 CHAR)");
|
||||
@@ -256,12 +264,24 @@ describe("tableStructureEditorState", () => {
|
||||
"dameng",
|
||||
);
|
||||
|
||||
const [restored] = restoreDamengLengthUnitsAfterSave([liveDraft!], new Map([["display_name", "VARCHAR2(255 CHAR)"]]));
|
||||
const [restored] = restoreCharacterLengthUnitsAfterSave("dameng", [liveDraft!], new Map([["display_name", "VARCHAR2(255 CHAR)"]]));
|
||||
|
||||
expect(restored?.dataType).toBe("VARCHAR2(255 BYTE)");
|
||||
expect(restored?.original?.data_type).toBe("VARCHAR2(255 BYTE)");
|
||||
});
|
||||
|
||||
it("keeps a saved Oracle length unit when refreshed metadata omits it", () => {
|
||||
const [legacyAgentDraft] = createColumnDrafts(
|
||||
[{ name: "DISPLAY_NAME", data_type: "VARCHAR2(255)", is_nullable: true, column_default: null, is_primary_key: false, extra: null }],
|
||||
"oracle",
|
||||
);
|
||||
|
||||
const [restored] = restoreCharacterLengthUnitsAfterSave("oracle", [legacyAgentDraft!], new Map([["display_name", "VARCHAR2(255 CHAR)"]]));
|
||||
|
||||
expect(restored?.dataType).toBe("VARCHAR2(255 CHAR)");
|
||||
expect(restored?.original?.data_type).toBe("VARCHAR2(255 CHAR)");
|
||||
});
|
||||
|
||||
it("does not add MySQL display lengths when choosing SQLite-family types", () => {
|
||||
for (const databaseType of ["sqlite", "rqlite", "turso"] as const) {
|
||||
expect(getDefaultLengthForType(databaseType, "integer")).toBe("");
|
||||
|
||||
Reference in new issue
Block a user