This commit is contained in:
Sam Rose 2024-05-29 14:21:58 +01:00
parent 0ea5235797
commit 1a94d2dca9
No known key found for this signature in database
5 changed files with 91 additions and 24 deletions

View File

@ -1,24 +0,0 @@
const setup = require("./utilities")
describe("/templates", () => {
let request = setup.getRequest()
let config = setup.getConfig()
afterAll(setup.afterAll)
beforeAll(async () => {
await config.init()
})
describe("fetch", () => {
it("should be able to fetch templates", async () => {
const res = await request
.get(`/api/templates`)
.set(config.defaultHeaders())
.expect("Content-Type", /json/)
.expect(200)
// this test is quite light right now, templates aren't heavily utilised yet
expect(Array.isArray(res.body)).toEqual(true)
})
})
})

View File

@ -0,0 +1,80 @@
import * as setup from "./utilities"
import nock from "nock"
interface App {
background: string
icon: string
category: string
description: string
name: string
url: string
type: string
key: string
image: string
}
interface Manifest {
templates: {
app: { [key: string]: App }
}
}
function setManifest(manifest: Manifest) {
nock("https://prod-budi-templates.s3-eu-west-1.amazonaws.com")
.get("/manifest.json")
.reply(200, manifest)
}
function mockApp(key: string, tarPath: string) {
nock("https://prod-budi-templates.s3-eu-west-1.amazonaws.com")
.get(`/app/${key}.tar.gz`)
.replyWithFile(200, tarPath)
}
function mockAgencyClientPortal() {
setManifest({
templates: {
app: {
"Agency Client Portal": {
background: "#20a3a8",
icon: "Project",
category: "Portals",
description:
"Manage clients, streamline communications, and securely share files.",
name: "Agency Client Portal",
url: "https://budibase.com/portals/templates/agency-client-portal-template/",
type: "app",
key: "app/agency-client-portal",
image:
"https://prod-budi-templates.s3.eu-west-1.amazonaws.com/images/agency-client-portal.png",
},
},
},
})
mockApp(
"agency-client-portal",
"packages/server/src/api/routes/tests/data/agency-client-portal.tar.gz"
)
}
describe("/templates", () => {
let config = setup.getConfig()
afterAll(setup.afterAll)
beforeAll(async () => {
await config.init()
})
beforeEach(() => {
nock.cleanAll()
mockAgencyClientPortal()
})
describe("fetch", () => {
it("should be able to fetch templates", async () => {
const res = await config.api.templates.fetch()
expect(res).toHaveLength(1)
expect(res[0].name).toBe("Agency Client Portal")
})
})
})

View File

@ -12,6 +12,7 @@ import { AttachmentAPI } from "./attachment"
import { UserAPI } from "./user"
import { QueryAPI } from "./query"
import { RoleAPI } from "./role"
import { TemplateAPI } from "./template"
export default class API {
table: TableAPI
@ -27,6 +28,7 @@ export default class API {
user: UserAPI
query: QueryAPI
roles: RoleAPI
templates: TemplateAPI
constructor(config: TestConfiguration) {
this.table = new TableAPI(config)
@ -42,5 +44,6 @@ export default class API {
this.user = new UserAPI(config)
this.query = new QueryAPI(config)
this.roles = new RoleAPI(config)
this.templates = new TemplateAPI(config)
}
}

View File

@ -0,0 +1,8 @@
import { Template } from "@budibase/types"
import { Expectations, TestAPI } from "./base"
export class TemplateAPI extends TestAPI {
fetch = async (expectations?: Expectations): Promise<Template[]> => {
return await this._get<Template[]>("/api/templates", { expectations })
}
}