From 4a5a3e2c33d9a8a6a0437ff03a45d8fee65bb370 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 12 Jul 2023 16:33:06 +0200 Subject: [PATCH] Implement and test fetch --- .../server/src/api/controllers/view/views.ts | 2 +- .../server/src/api/routes/tests/view.spec.ts | 39 +++++++++++++++++-- packages/server/src/sdk/app/views/index.ts | 19 ++++++++- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/packages/server/src/api/controllers/view/views.ts b/packages/server/src/api/controllers/view/views.ts index dc9ac000c5..9c5c8d582a 100644 --- a/packages/server/src/api/controllers/view/views.ts +++ b/packages/server/src/api/controllers/view/views.ts @@ -2,7 +2,7 @@ import sdk from "../../../sdk" import { Ctx, ViewV2 } from "@budibase/types" export async function fetch(ctx: Ctx) { - ctx.body = await sdk.views.get(ctx.params.viewId) + ctx.body = { views: await sdk.views.fetch() } } export async function save(ctx: Ctx) { diff --git a/packages/server/src/api/routes/tests/view.spec.ts b/packages/server/src/api/routes/tests/view.spec.ts index 97048a2fa6..e9c8c64505 100644 --- a/packages/server/src/api/routes/tests/view.spec.ts +++ b/packages/server/src/api/routes/tests/view.spec.ts @@ -49,12 +49,43 @@ describe("/views/v2", () => { .expect(200) } + function createView(): ViewV2 { + return { + name: generator.guid(), + tableId: table._id!, + } + } + + describe("fetch", () => { + const views = [] + + beforeAll(async () => { + table = await config.createTable(priceTable()) + + for (let id = 0; id < 10; id++) { + const view = createView() + const res = await saveView(view) + await context.doInAppContext(config.appId, async () => { + views.push(await sdk.views.get(res.body._id)) + }) + } + }) + + it("returns all views", async () => { + const res = await request + .get(`/api/views/v2`) + .set(config.defaultHeaders()) + .expect("Content-Type", /json/) + .expect(200) + + expect(res.body.views.length).toBe(10) + expect(res.body.views).toEqual(expect.arrayContaining([])) + }) + }) + describe("create", () => { it("persist the view when the view is successfully created", async () => { - const view = { - name: generator.guid(), - tableId: table._id!, - } + const view = createView() const res = await saveView(view) expect(res.status).toBe(200) expect(res.body._id).toBeDefined() diff --git a/packages/server/src/sdk/app/views/index.ts b/packages/server/src/sdk/app/views/index.ts index 71abe271fc..fa3813796d 100644 --- a/packages/server/src/sdk/app/views/index.ts +++ b/packages/server/src/sdk/app/views/index.ts @@ -1,7 +1,24 @@ -import { context } from "@budibase/backend-core" +import { + DocumentType, + SEPARATOR, + UNICODE_MAX, + context, +} from "@budibase/backend-core" import { ViewV2 } from "@budibase/types" import { generateViewID } from "../../../db/utils" +export async function fetch() { + const db = context.getAppDB() + + const startKey = `${DocumentType.VIEW}${SEPARATOR}` + const response = await db.allDocs({ + startkey: startKey, + endkey: `${startKey}${UNICODE_MAX}`, + }) + + return response.rows +} + export async function get(viewId: string) { const db = context.getAppDB() const result = await db.get(viewId)