1
0
Fork 0
mirror of synced 2024-08-12 08:31:27 +12:00

Updating tests/search to handle no schema means no data, rather than all data.

This commit is contained in:
mike12345567 2023-08-14 12:44:05 +01:00
parent 0fb6f8312a
commit 4bbae677b2
5 changed files with 25 additions and 20 deletions

View file

@ -24,15 +24,7 @@ export async function searchView(
ctx.throw(400, `This method only supports viewsV2`)
}
const table = await sdk.tables.getTable(view?.tableId)
const viewFields =
(view.schema &&
Object.entries(view.schema).length &&
Object.keys(sdk.views.enrichSchema(view, table.schema).schema)) ||
undefined
ctx.status = 200
const viewFields = Object.keys(view.schema || {})
const { body } = ctx.request
const query = dataFilters.buildLuceneQuery(view.query || [])

View file

@ -985,6 +985,7 @@ describe("/rows", () => {
})
describe("view search", () => {
const viewSchema = { age: { visible: true }, name: { visible: true } }
function userTable(): Table {
return {
name: "user",
@ -1041,6 +1042,7 @@ describe("/rows", () => {
const createViewResponse = await config.api.viewV2.create({
query: [{ operator: "equal", field: "age", value: 40 }],
schema: viewSchema,
})
const response = await config.api.viewV2.search(createViewResponse.id)
@ -1141,6 +1143,7 @@ describe("/rows", () => {
const createViewResponse = await config.api.viewV2.create({
sort: sortParams,
schema: viewSchema,
})
const response = await config.api.viewV2.search(createViewResponse.id)
@ -1175,6 +1178,7 @@ describe("/rows", () => {
order: SortOrder.ASCENDING,
type: SortType.STRING,
},
schema: viewSchema,
})
const response = await config.api.viewV2.search(
@ -1207,7 +1211,7 @@ describe("/rows", () => {
}
const view = await config.api.viewV2.create({
schema: { name: {} },
schema: { name: { visible: true } },
})
const response = await config.api.viewV2.search(view.id)
@ -1224,7 +1228,7 @@ describe("/rows", () => {
})
it("views without data can be returned", async () => {
const table = await config.createTable(userTable())
await config.createTable(userTable())
const createViewResponse = await config.api.viewV2.create()
const response = await config.api.viewV2.search(createViewResponse.id)

View file

@ -37,11 +37,7 @@ export async function trimViewFields<T extends Row>(
viewId: string
): Promise<void> {
const view = await sdk.views.get(viewId)
const allowedKeys = [
...Object.keys(view?.schema || {}),
...db.CONSTANT_EXTERNAL_ROW_COLS,
...db.CONSTANT_INTERNAL_ROW_COLS,
]
const allowedKeys = sdk.views.allowedFields(view)
// have to mutate the context, can't update reference
const toBeRemoved = Object.keys(body).filter(
key => !allowedKeys.includes(key)

View file

@ -1,15 +1,19 @@
import { RenameColumn, TableSchema, View, ViewV2 } from "@budibase/types"
import { context, HTTPError } from "@budibase/backend-core"
import { context, db as dbCore, HTTPError } from "@budibase/backend-core"
import { cloneDeep } from "lodash"
import sdk from "../../../sdk"
import * as utils from "../../../db/utils"
export async function get(viewId: string): Promise<ViewV2 | undefined> {
export async function get(viewId: string): Promise<ViewV2> {
const { tableId } = utils.extractViewInfoFromID(viewId)
const table = await sdk.tables.getTable(tableId)
const views = Object.values(table.views!)
return views.find(v => isV2(v) && v.id === viewId) as ViewV2 | undefined
const found = views.find(v => isV2(v) && v.id === viewId)
if (!found) {
throw new Error("No view found")
}
return found as ViewV2
}
export async function create(
@ -68,6 +72,14 @@ export async function remove(viewId: string): Promise<ViewV2> {
return view
}
export function allowedFields(view: View | ViewV2) {
return [
...Object.keys(view?.schema || {}),
...dbCore.CONSTANT_EXTERNAL_ROW_COLS,
...dbCore.CONSTANT_INTERNAL_ROW_COLS,
]
}
export function enrichSchema(view: View | ViewV2, tableSchema: TableSchema) {
if (!sdk.views.isV2(view)) {
return view

View file

@ -23,7 +23,8 @@ export class ViewV2API extends TestAPI {
if (!tableId && !this.config.table) {
throw "Test requires table to be configured."
}
tableId = this.config.table!._id!
const table = this.config.table
tableId = table!._id!
const view = {
tableId,
name: generator.guid(),