test: update csvToModule to mutate rows instead of returning new objects
This commit is contained in:
parent
55a33b98e5
commit
e5332f506d
|
|
@ -104,7 +104,7 @@ describe("csvToModule - circular reference support", () => {
|
||||||
expect(result.js).toContain("_self_refLookup");
|
expect(result.js).toContain("_self_refLookup");
|
||||||
expect(result.js).toContain("_self_refLookup = new Map(_raw.map");
|
expect(result.js).toContain("_self_refLookup = new Map(_raw.map");
|
||||||
expect(result.js).toContain(
|
expect(result.js).toContain(
|
||||||
"parent: _self_refLookup.get(String(row.parent))",
|
"row.parent = _self_refLookup.get(String(row.parent));",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ describe("csvToModule - circular reference support", () => {
|
||||||
expect(result.js).toContain("import _circular_b from './circular_b.csv'");
|
expect(result.js).toContain("import _circular_b from './circular_b.csv'");
|
||||||
expect(result.js).toContain("export default function getData()");
|
expect(result.js).toContain("export default function getData()");
|
||||||
expect(result.js).toContain("_circular_bLookup");
|
expect(result.js).toContain("_circular_bLookup");
|
||||||
expect(result.js).toContain("related:");
|
expect(result.js).toContain("row.related =");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should emit accessor for self-referencing table with nested reference in tuple", () => {
|
it("should emit accessor for self-referencing table with nested reference in tuple", () => {
|
||||||
|
|
@ -137,7 +137,7 @@ describe("csvToModule - circular reference support", () => {
|
||||||
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
||||||
expect(result.js).toContain("_self_refLookup");
|
expect(result.js).toContain("_self_refLookup");
|
||||||
expect(result.js).toContain("export default function getData()");
|
expect(result.js).toContain("export default function getData()");
|
||||||
expect(result.js).toContain("parent_info:");
|
expect(result.js).toContain("row.parent_info =");
|
||||||
expect(result.js).toContain(
|
expect(result.js).toContain(
|
||||||
"_self_refLookup.get(String(row.parent_info[0]))",
|
"_self_refLookup.get(String(row.parent_info[0]))",
|
||||||
);
|
);
|
||||||
|
|
@ -159,7 +159,7 @@ describe("csvToModule - circular reference support", () => {
|
||||||
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
||||||
expect(result.js).toContain("_self_refLookup");
|
expect(result.js).toContain("_self_refLookup");
|
||||||
expect(result.js).toContain("export default function getData()");
|
expect(result.js).toContain("export default function getData()");
|
||||||
expect(result.js).toContain("ref_or_val:");
|
expect(result.js).toContain("row.ref_or_val =");
|
||||||
expect(result.js).toContain(
|
expect(result.js).toContain(
|
||||||
"_self_refLookup.get(String(row.ref_or_val)) ?? row.ref_or_val",
|
"_self_refLookup.get(String(row.ref_or_val)) ?? row.ref_or_val",
|
||||||
);
|
);
|
||||||
|
|
@ -180,7 +180,7 @@ describe("csvToModule - circular reference support", () => {
|
||||||
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
||||||
expect(result.js).toContain("_self_refLookup");
|
expect(result.js).toContain("_self_refLookup");
|
||||||
expect(result.js).toContain("export default function getData()");
|
expect(result.js).toContain("export default function getData()");
|
||||||
expect(result.js).toContain("children:");
|
expect(result.js).toContain("row.children =");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should generate correct type definition for self-referencing table using local singular type", () => {
|
it("should generate correct type definition for self-referencing table using local singular type", () => {
|
||||||
|
|
@ -255,7 +255,7 @@ describe("csvToModule - reverse reference output", () => {
|
||||||
|
|
||||||
expect(result.js).toContain("import _orders from './orders.csv'");
|
expect(result.js).toContain("import _orders from './orders.csv'");
|
||||||
expect(result.js).toContain("_ordersBy_customer");
|
expect(result.js).toContain("_ordersBy_customer");
|
||||||
expect(result.js).toContain("orders:");
|
expect(result.js).toContain("row.orders =");
|
||||||
expect(result.js).toContain("_ordersBy_customer.get(String(row.id))");
|
expect(result.js).toContain("_ordersBy_customer.get(String(row.id))");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -304,7 +304,7 @@ describe("csvToModule - reverse reference output", () => {
|
||||||
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
expect(result.js).not.toContain("import _self_ref from './self_ref.csv'");
|
||||||
expect(result.js).toContain("_self_refBy_parent");
|
expect(result.js).toContain("_self_refBy_parent");
|
||||||
expect(result.js).toContain("for (const r of _raw)");
|
expect(result.js).toContain("for (const r of _raw)");
|
||||||
expect(result.js).toContain("children:");
|
expect(result.js).toContain("row.children =");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should generate correct type definition for reverse references", () => {
|
it("should generate correct type definition for reverse references", () => {
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ export function csvToModule(
|
||||||
const reverseLookupVar = (tableName: string, foreignKey: string) =>
|
const reverseLookupVar = (tableName: string, foreignKey: string) =>
|
||||||
reverseLookupVarMap.get(`${tableName}:${foreignKey}`)!;
|
reverseLookupVarMap.get(`${tableName}:${foreignKey}`)!;
|
||||||
|
|
||||||
const rowResolvers: string[] = [];
|
const rowResolvers: { name: string; code: string }[] = [];
|
||||||
for (const config of result.propertyConfigs) {
|
for (const config of result.propertyConfigs) {
|
||||||
if (config.isReverseReference) {
|
if (config.isReverseReference) {
|
||||||
// Reverse reference resolution
|
// Reverse reference resolution
|
||||||
|
|
@ -196,13 +196,15 @@ export function csvToModule(
|
||||||
if (decl) {
|
if (decl) {
|
||||||
const revLookup = reverseLookupVar(decl.tableName, decl.foreignKey);
|
const revLookup = reverseLookupVar(decl.tableName, decl.foreignKey);
|
||||||
if (decl.isOptional) {
|
if (decl.isOptional) {
|
||||||
rowResolvers.push(
|
rowResolvers.push({
|
||||||
` ${config.name}: (${revLookup}.get(String(row.${defaultPrimaryKey})) || null),`,
|
name: config.name,
|
||||||
);
|
code: `(${revLookup}.get(String(row.${defaultPrimaryKey})) || null)`,
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
rowResolvers.push(
|
rowResolvers.push({
|
||||||
` ${config.name}: (${revLookup}.get(String(row.${defaultPrimaryKey})) || []),`,
|
name: config.name,
|
||||||
);
|
code: `(${revLookup}.get(String(row.${defaultPrimaryKey})) || [])`,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (hasNestedReferences(config.schema)) {
|
} else if (hasNestedReferences(config.schema)) {
|
||||||
|
|
@ -213,7 +215,7 @@ export function csvToModule(
|
||||||
defaultPrimaryKey,
|
defaultPrimaryKey,
|
||||||
reverseLookupVar,
|
reverseLookupVar,
|
||||||
);
|
);
|
||||||
rowResolvers.push(` ${config.name}: ${resolveCode},`);
|
rowResolvers.push({ name: config.name, code: resolveCode });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -233,9 +235,10 @@ export function csvToModule(
|
||||||
...reverseLookupInits.map((l) => ` ${l}`),
|
...reverseLookupInits.map((l) => ` ${l}`),
|
||||||
...(rowResolvers.length > 0
|
...(rowResolvers.length > 0
|
||||||
? [
|
? [
|
||||||
" _resolved = _raw.map(row => (",
|
" _resolved = _raw.map(row => {",
|
||||||
...rowResolvers.map((r) => ` row${r.slice(1)}`),
|
...rowResolvers.map((r) => ` row.${r.name} = ${r.code};`),
|
||||||
" row));",
|
" return row;",
|
||||||
|
" });",
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
" return _resolved;",
|
" return _resolved;",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue