From eb0d4452958c0503c839a04b98ca6498a7af1548 Mon Sep 17 00:00:00 2001 From: adrinr Date: Thu, 30 Mar 2023 10:37:38 +0100 Subject: [PATCH] Add test for autoid when importing --- .../api/controllers/table/tests/utils.spec.ts | 63 +++++++++++++++++++ .../server/src/api/controllers/table/utils.ts | 10 ++- 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 packages/server/src/api/controllers/table/tests/utils.spec.ts diff --git a/packages/server/src/api/controllers/table/tests/utils.spec.ts b/packages/server/src/api/controllers/table/tests/utils.spec.ts new file mode 100644 index 0000000000..ef143100a4 --- /dev/null +++ b/packages/server/src/api/controllers/table/tests/utils.spec.ts @@ -0,0 +1,63 @@ +import { FieldType } from "@budibase/types" +import { AutoFieldSubTypes } from "../../../../constants" +import TestConfiguration from "../../../../tests/utilities/TestConfiguration" +import { importToRows } from "../utils" + +describe("utils", () => { + const config = new TestConfiguration() + + beforeEach(async () => { + await config.init() + }) + + afterAll(config.end) + + describe("importToRows", () => { + it("consecutive row have consecutive auto ids", async () => { + await config.doInContext(config.appId, async () => { + const table = await config.createTable({ + name: "table", + type: "table", + schema: { + autoId: { + name: "autoId", + type: FieldType.NUMBER, + subtype: AutoFieldSubTypes.AUTO_ID, + autocolumn: true, + constraints: { + type: FieldType.NUMBER, + presence: true, + }, + }, + name: { + name: "name", + type: FieldType.STRING, + constraints: { + type: FieldType.STRING, + presence: true, + }, + }, + }, + }) + + const data = [{ name: "Alice" }, { name: "Bob" }, { name: "Claire" }] + + const result = importToRows(data, table, config.user) + expect(result).toEqual([ + expect.objectContaining({ + autoId: 1, + name: "Alice", + }), + expect.objectContaining({ + autoId: 2, + name: "Bob", + }), + expect.objectContaining({ + autoId: 3, + name: "Claire", + }), + ]) + }) + }) + }) +}) diff --git a/packages/server/src/api/controllers/table/utils.ts b/packages/server/src/api/controllers/table/utils.ts index 7052b8e107..337b8fc5ed 100644 --- a/packages/server/src/api/controllers/table/utils.ts +++ b/packages/server/src/api/controllers/table/utils.ts @@ -20,7 +20,13 @@ import viewTemplate from "../view/viewBuilder" import { cloneDeep } from "lodash/fp" import { quotas } from "@budibase/pro" import { events, context } from "@budibase/backend-core" -import { Database, Datasource, SourceName, Table } from "@budibase/types" +import { + ContextUser, + Database, + Datasource, + SourceName, + Table, +} from "@budibase/types" export async function clearColumns(table: any, columnNames: any) { const db: Database = context.getAppDB() @@ -99,7 +105,7 @@ export function makeSureTableUpToDate(table: any, tableToSave: any) { return tableToSave } -export function importToRows(data: any, table: Table, user: any = {}) { +export function importToRows(data: any[], table: Table, user: ContextUser) { let finalData: any = [] for (let i = 0; i < data.length; i++) { let row = data[i]