Merge branch 'master' into fix/inconsistent-column-schemas
This commit is contained in:
commit
b744de6e62
|
@ -789,6 +789,39 @@ describe.each([
|
|||
})
|
||||
})
|
||||
|
||||
describe("multi-user column", () => {
|
||||
beforeAll(async () => {
|
||||
table = await config.api.table.save(
|
||||
saveTableRequest({
|
||||
schema: {
|
||||
users: {
|
||||
name: "users",
|
||||
type: FieldType.BB_REFERENCE,
|
||||
subtype: BBReferenceFieldSubType.USER,
|
||||
default: ["{{ [Current User]._id }}"],
|
||||
},
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
it("creates a new row with a default value successfully", async () => {
|
||||
const row = await config.api.row.save(table._id!, {})
|
||||
expect(row.users).toHaveLength(1)
|
||||
expect(row.users[0]._id).toEqual(config.getUser()._id)
|
||||
})
|
||||
|
||||
it("does not use default value if value specified", async () => {
|
||||
const id = `us_${utils.newid()}`
|
||||
await config.createUser({ _id: id })
|
||||
const row = await config.api.row.save(table._id!, {
|
||||
users: [id],
|
||||
})
|
||||
expect(row.users).toHaveLength(1)
|
||||
expect(row.users[0]._id).toEqual(id)
|
||||
})
|
||||
})
|
||||
|
||||
describe("bindings", () => {
|
||||
describe("string column", () => {
|
||||
beforeAll(async () => {
|
||||
|
|
|
@ -33,7 +33,7 @@ import {
|
|||
PROTECTED_EXTERNAL_COLUMNS,
|
||||
PROTECTED_INTERNAL_COLUMNS,
|
||||
} from "@budibase/shared-core"
|
||||
import { processString } from "@budibase/string-templates"
|
||||
import { processStringSync } from "@budibase/string-templates"
|
||||
import {
|
||||
getTableFromSource,
|
||||
isUserMetadataTable,
|
||||
|
@ -134,10 +134,15 @@ async function processDefaultValues(table: Table, row: Row) {
|
|||
|
||||
for (const [key, schema] of Object.entries(table.schema)) {
|
||||
if ("default" in schema && schema.default != null && row[key] == null) {
|
||||
const processed =
|
||||
typeof schema.default === "string"
|
||||
? await processString(schema.default, ctx)
|
||||
: schema.default
|
||||
let processed: string | string[]
|
||||
if (Array.isArray(schema.default)) {
|
||||
processed = schema.default.map(val => processStringSync(val, ctx))
|
||||
} else if (typeof schema.default === "string") {
|
||||
processed = processStringSync(schema.default, ctx)
|
||||
} else {
|
||||
processed = schema.default
|
||||
}
|
||||
|
||||
try {
|
||||
row[key] = coerce(processed, schema.type)
|
||||
} catch (err: any) {
|
||||
|
|
|
@ -66,7 +66,7 @@ const allowDefaultColumnByType: Record<FieldType, boolean> = {
|
|||
[FieldType.ATTACHMENT_SINGLE]: false,
|
||||
[FieldType.SIGNATURE_SINGLE]: false,
|
||||
[FieldType.LINK]: false,
|
||||
[FieldType.BB_REFERENCE]: false,
|
||||
[FieldType.BB_REFERENCE]: true,
|
||||
[FieldType.BB_REFERENCE_SINGLE]: true,
|
||||
}
|
||||
|
||||
|
|
|
@ -121,6 +121,7 @@ export interface BBReferenceFieldMetadata
|
|||
type: FieldType.BB_REFERENCE
|
||||
subtype: BBReferenceFieldSubType
|
||||
relationshipType?: RelationshipType
|
||||
default?: string[]
|
||||
}
|
||||
export interface BBReferenceSingleFieldMetadata
|
||||
extends Omit<BaseFieldSchema, "subtype"> {
|
||||
|
|
Loading…
Reference in New Issue