This commit is contained in:
Adria Navarro 2023-09-13 12:53:47 +02:00
parent 6bae382d81
commit dc5cd7cf76
1 changed files with 60 additions and 35 deletions

View File

@ -47,7 +47,7 @@ describe("postgres integrations", () => {
) )
async function createAuxTable(prefix: string) { async function createAuxTable(prefix: string) {
return await config.api.table.create({ return await config.createTable({
name: `${prefix}_${generator.word({ length: 6 })}`, name: `${prefix}_${generator.word({ length: 6 })}`,
type: "external", type: "external",
primary: ["id"], primary: ["id"],
@ -83,7 +83,7 @@ describe("postgres integrations", () => {
relationshipType: RelationshipType.MANY_TO_MANY, relationshipType: RelationshipType.MANY_TO_MANY,
} }
primaryPostgresTable = await config.api.table.create({ primaryPostgresTable = await config.createTable({
name: `p_${generator.word({ length: 6 })}`, name: `p_${generator.word({ length: 6 })}`,
type: "external", type: "external",
primary: ["id"], primary: ["id"],
@ -184,13 +184,10 @@ describe("postgres integrations", () => {
if (opts?.createForeignRows?.createOneToMany) { if (opts?.createForeignRows?.createOneToMany) {
const foreignKey = `fk_${oneToManyRelationshipInfo.table.name}_${oneToManyRelationshipInfo.fieldName}` const foreignKey = `fk_${oneToManyRelationshipInfo.table.name}_${oneToManyRelationshipInfo.fieldName}`
const foreignRow = await config.api.row.save( const foreignRow = await config.createRow({
oneToManyRelationshipInfo.table._id!,
{
tableId: oneToManyRelationshipInfo.table._id, tableId: oneToManyRelationshipInfo.table._id,
title: generator.name(), title: generator.name(),
} })
)
rowData = { rowData = {
...rowData, ...rowData,
@ -203,13 +200,10 @@ describe("postgres integrations", () => {
} }
for (let i = 0; i < (opts?.createForeignRows?.createManyToOne || 0); i++) { for (let i = 0; i < (opts?.createForeignRows?.createManyToOne || 0); i++) {
const foreignRow = await config.api.row.save( const foreignRow = await config.createRow({
manyToOneRelationshipInfo.table._id!,
{
tableId: manyToOneRelationshipInfo.table._id, tableId: manyToOneRelationshipInfo.table._id,
title: generator.name(), title: generator.name(),
} })
)
rowData = { rowData = {
...rowData, ...rowData,
@ -224,13 +218,10 @@ describe("postgres integrations", () => {
} }
for (let i = 0; i < (opts?.createForeignRows?.createManyToMany || 0); i++) { for (let i = 0; i < (opts?.createForeignRows?.createManyToMany || 0); i++) {
const foreignRow = await config.api.row.save( const foreignRow = await config.createRow({
manyToManyRelationshipInfo.table._id!,
{
tableId: manyToManyRelationshipInfo.table._id, tableId: manyToManyRelationshipInfo.table._id,
title: generator.name(), title: generator.name(),
} })
)
rowData = { rowData = {
...rowData, ...rowData,
@ -244,7 +235,7 @@ describe("postgres integrations", () => {
}) })
} }
const row = await config.api.row.save(primaryPostgresTable._id!, { const row = await config.createRow({
tableId: primaryPostgresTable._id, tableId: primaryPostgresTable._id,
...rowData, ...rowData,
}) })
@ -253,7 +244,7 @@ describe("postgres integrations", () => {
} }
async function createDefaultPgTable() { async function createDefaultPgTable() {
return await config.api.table.create({ return await config.createTable({
name: generator.word({ length: 10 }), name: generator.word({ length: 10 }),
type: "external", type: "external",
primary: ["id"], primary: ["id"],
@ -395,7 +386,7 @@ describe("postgres integrations", () => {
expect(res.status).toBe(200) expect(res.status).toBe(200)
expect(res.body).toEqual(updatedRow) expect(res.body).toEqual(updatedRow)
const persistedRow = await config.api.row.get( const persistedRow = await config.getRow(
primaryPostgresTable._id!, primaryPostgresTable._id!,
row.id row.id
) )
@ -520,7 +511,7 @@ describe("postgres integrations", () => {
foreignRows = createdRow.foreignRows foreignRows = createdRow.foreignRows
}) })
it("only one to many foreign keys are retrieved", async () => { it("only one to primary keys are retrieved", async () => {
const res = await getRow(primaryPostgresTable._id, row.id) const res = await getRow(primaryPostgresTable._id, row.id)
expect(res.status).toBe(200) expect(res.status).toBe(200)
@ -528,6 +519,12 @@ describe("postgres integrations", () => {
const one2ManyForeignRows = foreignRows.filter( const one2ManyForeignRows = foreignRows.filter(
x => x.relationshipType === RelationshipType.ONE_TO_MANY x => x.relationshipType === RelationshipType.ONE_TO_MANY
) )
const many2OneForeignRows = foreignRows.filter(
x => x.relationshipType === RelationshipType.MANY_TO_ONE
)
const many2ManyForeignRows = foreignRows.filter(
x => x.relationshipType === RelationshipType.MANY_TO_MANY
)
expect(one2ManyForeignRows).toHaveLength(1) expect(one2ManyForeignRows).toHaveLength(1)
expect(res.body).toEqual({ expect(res.body).toEqual({
@ -538,9 +535,25 @@ describe("postgres integrations", () => {
_rev: expect.any(String), _rev: expect.any(String),
[`fk_${oneToManyRelationshipInfo.table.name}_${oneToManyRelationshipInfo.fieldName}`]: [`fk_${oneToManyRelationshipInfo.table.name}_${oneToManyRelationshipInfo.fieldName}`]:
one2ManyForeignRows[0].row.id, one2ManyForeignRows[0].row.id,
[oneToManyRelationshipInfo.fieldName]: expect.arrayContaining(
one2ManyForeignRows.map(r => ({
_id: r.row._id,
primaryDisplay: r.row.title,
}))
),
[manyToOneRelationshipInfo.fieldName]: expect.arrayContaining(
many2OneForeignRows.map(r => ({
_id: r.row._id,
primaryDisplay: r.row.title,
}))
),
[manyToManyRelationshipInfo.fieldName]: expect.arrayContaining(
many2ManyForeignRows.map(r => ({
_id: r.row._id,
primaryDisplay: r.row.title,
}))
),
}) })
expect(res.body[oneToManyRelationshipInfo.fieldName]).toBeUndefined()
}) })
}) })
@ -569,9 +582,13 @@ describe("postgres integrations", () => {
_rev: expect.any(String), _rev: expect.any(String),
[`fk_${oneToManyRelationshipInfo.table.name}_${oneToManyRelationshipInfo.fieldName}`]: [`fk_${oneToManyRelationshipInfo.table.name}_${oneToManyRelationshipInfo.fieldName}`]:
foreignRows[0].row.id, foreignRows[0].row.id,
[oneToManyRelationshipInfo.fieldName]: expect.arrayContaining(
foreignRows.map(r => ({
_id: r.row._id,
primaryDisplay: r.row.title,
}))
),
}) })
expect(res.body[oneToManyRelationshipInfo.fieldName]).toBeUndefined()
}) })
}) })
@ -598,9 +615,13 @@ describe("postgres integrations", () => {
tableId: row.tableId, tableId: row.tableId,
_id: expect.any(String), _id: expect.any(String),
_rev: expect.any(String), _rev: expect.any(String),
[manyToOneRelationshipInfo.fieldName]: expect.arrayContaining(
foreignRows.map(r => ({
_id: r.row._id,
primaryDisplay: r.row.title,
}))
),
}) })
expect(res.body[oneToManyRelationshipInfo.fieldName]).toBeUndefined()
}) })
}) })
@ -627,9 +648,13 @@ describe("postgres integrations", () => {
tableId: row.tableId, tableId: row.tableId,
_id: expect.any(String), _id: expect.any(String),
_rev: expect.any(String), _rev: expect.any(String),
[manyToManyRelationshipInfo.fieldName]: expect.arrayContaining(
foreignRows.map(r => ({
_id: r.row._id,
primaryDisplay: r.row.title,
}))
),
}) })
expect(res.body[oneToManyRelationshipInfo.fieldName]).toBeUndefined()
}) })
}) })
}) })