Add tests
This commit is contained in:
parent
f3c18b87b1
commit
b1f9325987
|
@ -1851,6 +1851,160 @@ describe.each([
|
||||||
const results = JSON.parse(res)
|
const results = JSON.parse(res)
|
||||||
expect(results.length).toEqual(3)
|
expect(results.length).toEqual(3)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("should allow exporting all column types", () => {
|
||||||
|
let tableId: string
|
||||||
|
let expectedRowData: Row
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
const fullSchema = setup.structures.fullSchemaWithoutLinks({
|
||||||
|
allRequired: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
const table = await config.api.table.save(
|
||||||
|
saveTableRequest({
|
||||||
|
...setup.structures.basicTable(),
|
||||||
|
schema: fullSchema,
|
||||||
|
primary: ["string"],
|
||||||
|
})
|
||||||
|
)
|
||||||
|
tableId = table._id!
|
||||||
|
|
||||||
|
const rowValues: Record<keyof typeof fullSchema, any> = {
|
||||||
|
[FieldType.STRING]: generator.guid(),
|
||||||
|
[FieldType.LONGFORM]: generator.paragraph(),
|
||||||
|
[FieldType.OPTIONS]: "option 2",
|
||||||
|
[FieldType.ARRAY]: ["options 2", "options 4"],
|
||||||
|
[FieldType.NUMBER]: generator.natural(),
|
||||||
|
[FieldType.BOOLEAN]: generator.bool(),
|
||||||
|
[FieldType.DATETIME]: generator.date().toISOString(),
|
||||||
|
[FieldType.ATTACHMENTS]: [setup.structures.basicAttachment()],
|
||||||
|
[FieldType.ATTACHMENT_SINGLE]: setup.structures.basicAttachment(),
|
||||||
|
[FieldType.FORMULA]: undefined, // generated field
|
||||||
|
[FieldType.AUTO]: undefined, // generated field
|
||||||
|
[FieldType.JSON]: { name: generator.guid() },
|
||||||
|
[FieldType.INTERNAL]: generator.guid(),
|
||||||
|
[FieldType.BARCODEQR]: generator.guid(),
|
||||||
|
[FieldType.SIGNATURE_SINGLE]: setup.structures.basicAttachment(),
|
||||||
|
[FieldType.BIGINT]: generator.integer(),
|
||||||
|
[FieldType.BB_REFERENCE]: [{ _id: config.getUser()._id }],
|
||||||
|
[FieldType.BB_REFERENCE_SINGLE]: { _id: config.getUser()._id },
|
||||||
|
}
|
||||||
|
const row = await config.api.row.save(table._id!, rowValues)
|
||||||
|
expectedRowData = {
|
||||||
|
_id: row._id,
|
||||||
|
[FieldType.STRING]: rowValues[FieldType.STRING],
|
||||||
|
[FieldType.LONGFORM]: rowValues[FieldType.LONGFORM],
|
||||||
|
[FieldType.OPTIONS]: rowValues[FieldType.OPTIONS],
|
||||||
|
[FieldType.ARRAY]: rowValues[FieldType.ARRAY],
|
||||||
|
[FieldType.NUMBER]: rowValues[FieldType.NUMBER],
|
||||||
|
[FieldType.BOOLEAN]: rowValues[FieldType.BOOLEAN],
|
||||||
|
[FieldType.DATETIME]: rowValues[FieldType.DATETIME],
|
||||||
|
[FieldType.ATTACHMENTS]: rowValues[FieldType.ATTACHMENTS].map(
|
||||||
|
(a: any) =>
|
||||||
|
expect.objectContaining({
|
||||||
|
...a,
|
||||||
|
url: expect.any(String),
|
||||||
|
})
|
||||||
|
),
|
||||||
|
[FieldType.ATTACHMENT_SINGLE]: expect.objectContaining({
|
||||||
|
...rowValues[FieldType.ATTACHMENT_SINGLE],
|
||||||
|
url: expect.any(String),
|
||||||
|
}),
|
||||||
|
[FieldType.FORMULA]: fullSchema[FieldType.FORMULA].formula,
|
||||||
|
[FieldType.AUTO]: expect.any(Number),
|
||||||
|
[FieldType.JSON]: rowValues[FieldType.JSON],
|
||||||
|
[FieldType.INTERNAL]: rowValues[FieldType.INTERNAL],
|
||||||
|
[FieldType.BARCODEQR]: rowValues[FieldType.BARCODEQR],
|
||||||
|
[FieldType.SIGNATURE_SINGLE]: expect.objectContaining({
|
||||||
|
...rowValues[FieldType.SIGNATURE_SINGLE],
|
||||||
|
url: expect.any(String),
|
||||||
|
}),
|
||||||
|
[FieldType.BIGINT]: rowValues[FieldType.BIGINT],
|
||||||
|
[FieldType.BB_REFERENCE]: rowValues[FieldType.BB_REFERENCE].map(
|
||||||
|
expect.objectContaining
|
||||||
|
),
|
||||||
|
[FieldType.BB_REFERENCE_SINGLE]: expect.objectContaining(
|
||||||
|
rowValues[FieldType.BB_REFERENCE_SINGLE]
|
||||||
|
),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
it("as csv", async () => {
|
||||||
|
const exportedValue = await config.api.row.exportRows(
|
||||||
|
tableId,
|
||||||
|
{ query: {} },
|
||||||
|
RowExportFormat.CSV
|
||||||
|
)
|
||||||
|
|
||||||
|
const json = await config.api.table.csvToJson({
|
||||||
|
csvString: exportedValue,
|
||||||
|
})
|
||||||
|
expect(json).toEqual([expectedRowData])
|
||||||
|
})
|
||||||
|
|
||||||
|
it("as json", async () => {
|
||||||
|
const exportedValue = await config.api.row.exportRows(
|
||||||
|
tableId,
|
||||||
|
{ query: {} },
|
||||||
|
RowExportFormat.JSON
|
||||||
|
)
|
||||||
|
|
||||||
|
const json = JSON.parse(exportedValue)
|
||||||
|
expect(json).toEqual([expectedRowData])
|
||||||
|
})
|
||||||
|
|
||||||
|
it("as json with schema", async () => {
|
||||||
|
const exportedValue = await config.api.row.exportRows(
|
||||||
|
tableId,
|
||||||
|
{ query: {} },
|
||||||
|
RowExportFormat.JSON_WITH_SCHEMA
|
||||||
|
)
|
||||||
|
|
||||||
|
const json = JSON.parse(exportedValue)
|
||||||
|
expect(json).toEqual({
|
||||||
|
schema: expect.any(Object),
|
||||||
|
rows: [expectedRowData],
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it("exported data can be re-imported", async () => {
|
||||||
|
// export all
|
||||||
|
const exportedValue = await config.api.row.exportRows(
|
||||||
|
tableId,
|
||||||
|
{ query: {} },
|
||||||
|
RowExportFormat.CSV
|
||||||
|
)
|
||||||
|
|
||||||
|
// import all twice
|
||||||
|
const rows = await config.api.table.csvToJson({
|
||||||
|
csvString: exportedValue,
|
||||||
|
})
|
||||||
|
await config.api.row.bulkImport(tableId, {
|
||||||
|
rows,
|
||||||
|
})
|
||||||
|
// await config.api.row.bulkImport(tableId, {
|
||||||
|
// rows,
|
||||||
|
// })
|
||||||
|
|
||||||
|
const { rows: allRows } = await config.api.row.search(tableId)
|
||||||
|
|
||||||
|
const expectedRow = {
|
||||||
|
...expectedRowData,
|
||||||
|
_id: expect.any(String),
|
||||||
|
_rev: expect.any(String),
|
||||||
|
type: "row",
|
||||||
|
tableId: tableId,
|
||||||
|
createdAt: new Date().toISOString(),
|
||||||
|
updatedAt: new Date().toISOString(),
|
||||||
|
}
|
||||||
|
expect(allRows).toEqual([
|
||||||
|
expectedRow,
|
||||||
|
expectedRow,
|
||||||
|
// expectedRow
|
||||||
|
])
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
let o2mTable: Table
|
let o2mTable: Table
|
||||||
|
|
Loading…
Reference in New Issue