diff --git a/lerna.json b/lerna.json index d31cde4be4..2413e7d417 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 39ffe93a4c..2a6754bd5c 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -20,7 +20,7 @@ "test:watch": "jest --watchAll" }, "dependencies": { - "@budibase/types": "2.0.30-alpha.7", + "@budibase/types": "2.0.30-alpha.8", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-sdk": "2.1030.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 7d1ac8bbf6..5f31948513 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "^1.2.1", - "@budibase/string-templates": "2.0.30-alpha.7", + "@budibase/string-templates": "2.0.30-alpha.8", "@spectrum-css/actionbutton": "^1.0.1", "@spectrum-css/actiongroup": "^1.0.1", "@spectrum-css/avatar": "^3.0.2", diff --git a/packages/builder/package.json b/packages/builder/package.json index 912c64a1b6..5361707058 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "license": "GPL-3.0", "private": true, "scripts": { @@ -71,10 +71,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.0.30-alpha.7", - "@budibase/client": "2.0.30-alpha.7", - "@budibase/frontend-core": "2.0.30-alpha.7", - "@budibase/string-templates": "2.0.30-alpha.7", + "@budibase/bbui": "2.0.30-alpha.8", + "@budibase/client": "2.0.30-alpha.8", + "@budibase/frontend-core": "2.0.30-alpha.8", + "@budibase/string-templates": "2.0.30-alpha.8", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index af539df866..5bd2d1c8a9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.0.30-alpha.7", - "@budibase/string-templates": "2.0.30-alpha.7", - "@budibase/types": "2.0.30-alpha.7", + "@budibase/backend-core": "2.0.30-alpha.8", + "@budibase/string-templates": "2.0.30-alpha.8", + "@budibase/types": "2.0.30-alpha.8", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 1b1e1d0f57..16b6b6f2b7 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.0.30-alpha.7", - "@budibase/frontend-core": "2.0.30-alpha.7", - "@budibase/string-templates": "2.0.30-alpha.7", + "@budibase/bbui": "2.0.30-alpha.8", + "@budibase/frontend-core": "2.0.30-alpha.8", + "@budibase/string-templates": "2.0.30-alpha.8", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 50f28f646e..ebda9dab9a 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.0.30-alpha.7", + "@budibase/bbui": "2.0.30-alpha.8", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index f31347f878..0e004e83f2 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 78791885cf..aa82380914 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -77,11 +77,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.0.30-alpha.7", - "@budibase/client": "2.0.30-alpha.7", - "@budibase/pro": "2.0.30-alpha.7", - "@budibase/string-templates": "2.0.30-alpha.7", - "@budibase/types": "2.0.30-alpha.7", + "@budibase/backend-core": "2.0.30-alpha.8", + "@budibase/client": "2.0.30-alpha.8", + "@budibase/pro": "2.0.30-alpha.8", + "@budibase/string-templates": "2.0.30-alpha.8", + "@budibase/types": "2.0.30-alpha.8", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 1b8bc4ea1c..8528ba9354 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1094,12 +1094,12 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.0.30-alpha.7": - version "2.0.30-alpha.7" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.0.30-alpha.7.tgz#a46ddcda96c6ecead6574cb0e2751e4ed858371d" - integrity sha512-aX41o4QE7OlS+JeKIDt3bJGGsbddI4eRAram+2bYlHONbupkbTAVs9DFBkV9BkMCQ8zk9FSDY90Le0GEuiI+sw== +"@budibase/backend-core@2.0.30-alpha.8": + version "2.0.30-alpha.8" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.0.30-alpha.8.tgz#2eef65f40c3859c96268f0c709c57bb225cf7ca3" + integrity sha512-ZjoTLoNeLaU7+YNltOS9tG7/GNR22iyR8O8TCXyqK0u1fyL/MFLp8Cj3Epv7JBfBkLtVg9ah8ACPK/kCNemahQ== dependencies: - "@budibase/types" "2.0.30-alpha.7" + "@budibase/types" "2.0.30-alpha.8" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-sdk "2.1030.0" @@ -1180,13 +1180,13 @@ svelte-flatpickr "^3.2.3" svelte-portal "^1.0.0" -"@budibase/pro@2.0.30-alpha.7": - version "2.0.30-alpha.7" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.0.30-alpha.7.tgz#1432b47141b305666dc005c5fc5a02d9cd38cf6a" - integrity sha512-F8qkj+Uy2Pqi/FeJYDBEdNAT7zEx/dw19x8o+3vHmTnQhwLbuSOHGyy9C6PgSW5Gmm0GgxjOycDVOq7ewnwWDA== +"@budibase/pro@2.0.30-alpha.8": + version "2.0.30-alpha.8" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.0.30-alpha.8.tgz#1bcab899326e04607a74112482ff2ffca3776cf1" + integrity sha512-QhfTZn5oaJIPSUYFTnShgqADXeikVi4xbsOJGhGR2Ysl/7DlTRse9JVhql6OpRO9ozbab6tSJ2NxIJFgznsvhQ== dependencies: - "@budibase/backend-core" "2.0.30-alpha.7" - "@budibase/types" "2.0.30-alpha.7" + "@budibase/backend-core" "2.0.30-alpha.8" + "@budibase/types" "2.0.30-alpha.8" "@koa/router" "8.0.8" joi "17.6.0" node-fetch "^2.6.1" @@ -1209,10 +1209,10 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/types@2.0.30-alpha.7": - version "2.0.30-alpha.7" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.0.30-alpha.7.tgz#fe85563eb42ce01869e653a790a7f213ea2d6308" - integrity sha512-WL+2LPQyYq1BwPGgkM7wRnIv4/QXMX1ivXpzoy9lzi1yCJw0rxg8MBpfUuVU0cmDOAnmHkTh2nBQNUhLYPyvVA== +"@budibase/types@2.0.30-alpha.8": + version "2.0.30-alpha.8" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.0.30-alpha.8.tgz#36fb30fcb121904754369e4312892a34bdff63cd" + integrity sha512-I5+W+JU95jSRGhN7dvmdiQPyAHa+OUttc4WYYAkE6MYlaraOZd9aVF4IcY9aQR6cZWZ1GZIxoGPJPoNjU3tDLQ== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index d360f8f9e8..e92f64b186 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 40cfefea09..7c30c04384 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 3be1da8424..1c47bec021 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.0.30-alpha.7", + "version": "2.0.30-alpha.8", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.0.30-alpha.7", - "@budibase/pro": "2.0.30-alpha.7", - "@budibase/string-templates": "2.0.30-alpha.7", - "@budibase/types": "2.0.30-alpha.7", + "@budibase/backend-core": "2.0.30-alpha.8", + "@budibase/pro": "2.0.30-alpha.8", + "@budibase/string-templates": "2.0.30-alpha.8", + "@budibase/types": "2.0.30-alpha.8", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 1c9ad3fa88..ea169beb9a 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -291,12 +291,12 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.0.30-alpha.7": - version "2.0.30-alpha.7" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.0.30-alpha.7.tgz#a46ddcda96c6ecead6574cb0e2751e4ed858371d" - integrity sha512-aX41o4QE7OlS+JeKIDt3bJGGsbddI4eRAram+2bYlHONbupkbTAVs9DFBkV9BkMCQ8zk9FSDY90Le0GEuiI+sw== +"@budibase/backend-core@2.0.30-alpha.8": + version "2.0.30-alpha.8" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.0.30-alpha.8.tgz#2eef65f40c3859c96268f0c709c57bb225cf7ca3" + integrity sha512-ZjoTLoNeLaU7+YNltOS9tG7/GNR22iyR8O8TCXyqK0u1fyL/MFLp8Cj3Epv7JBfBkLtVg9ah8ACPK/kCNemahQ== dependencies: - "@budibase/types" "2.0.30-alpha.7" + "@budibase/types" "2.0.30-alpha.8" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-sdk "2.1030.0" @@ -327,21 +327,21 @@ uuid "8.3.2" zlib "1.0.5" -"@budibase/pro@2.0.30-alpha.7": - version "2.0.30-alpha.7" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.0.30-alpha.7.tgz#1432b47141b305666dc005c5fc5a02d9cd38cf6a" - integrity sha512-F8qkj+Uy2Pqi/FeJYDBEdNAT7zEx/dw19x8o+3vHmTnQhwLbuSOHGyy9C6PgSW5Gmm0GgxjOycDVOq7ewnwWDA== +"@budibase/pro@2.0.30-alpha.8": + version "2.0.30-alpha.8" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.0.30-alpha.8.tgz#1bcab899326e04607a74112482ff2ffca3776cf1" + integrity sha512-QhfTZn5oaJIPSUYFTnShgqADXeikVi4xbsOJGhGR2Ysl/7DlTRse9JVhql6OpRO9ozbab6tSJ2NxIJFgznsvhQ== dependencies: - "@budibase/backend-core" "2.0.30-alpha.7" - "@budibase/types" "2.0.30-alpha.7" + "@budibase/backend-core" "2.0.30-alpha.8" + "@budibase/types" "2.0.30-alpha.8" "@koa/router" "8.0.8" joi "17.6.0" node-fetch "^2.6.1" -"@budibase/types@2.0.30-alpha.7": - version "2.0.30-alpha.7" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.0.30-alpha.7.tgz#fe85563eb42ce01869e653a790a7f213ea2d6308" - integrity sha512-WL+2LPQyYq1BwPGgkM7wRnIv4/QXMX1ivXpzoy9lzi1yCJw0rxg8MBpfUuVU0cmDOAnmHkTh2nBQNUhLYPyvVA== +"@budibase/types@2.0.30-alpha.8": + version "2.0.30-alpha.8" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.0.30-alpha.8.tgz#36fb30fcb121904754369e4312892a34bdff63cd" + integrity sha512-I5+W+JU95jSRGhN7dvmdiQPyAHa+OUttc4WYYAkE6MYlaraOZd9aVF4IcY9aQR6cZWZ1GZIxoGPJPoNjU3tDLQ== "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" diff --git a/qa-core/src/config/internal-api/TestConfiguration/index.ts b/qa-core/src/config/internal-api/TestConfiguration/index.ts index b433fd98ea..d90c315849 100644 --- a/qa-core/src/config/internal-api/TestConfiguration/index.ts +++ b/qa-core/src/config/internal-api/TestConfiguration/index.ts @@ -1,15 +1,18 @@ import ApplicationApi from "./applications" import AuthApi from "./auth" import InternalAPIClient from "./InternalAPIClient" +import ScreenApi from "./screens" export default class TestConfiguration { applications: ApplicationApi auth: AuthApi + screen: ScreenApi context: T constructor(apiClient: InternalAPIClient) { this.applications = new ApplicationApi(apiClient) this.auth = new AuthApi(apiClient) + this.screen = new ScreenApi(apiClient) this.context = {} } diff --git a/qa-core/src/config/internal-api/TestConfiguration/screens.ts b/qa-core/src/config/internal-api/TestConfiguration/screens.ts new file mode 100644 index 0000000000..30c688022a --- /dev/null +++ b/qa-core/src/config/internal-api/TestConfiguration/screens.ts @@ -0,0 +1,23 @@ +import { Screen } from "@budibase/types" +import { Response } from "node-fetch" +import InternalAPIClient from "./InternalAPIClient" + + export default class ScreenApi { + api: InternalAPIClient + + constructor(apiClient: InternalAPIClient) { + this.api = apiClient + } + + async create(body: any): Promise<[Response, Screen]> { + const response = await this.api.post(`/screens`, { body }) + const json = await response.json() + return [response, json] + } + + async delete(screenId: string, rev: string): Promise<[Response, Screen]> { + const response = await this.api.del(`/screens/${screenId}/${rev}`) + const json = await response.json() + return [response, json] + } + } diff --git a/qa-core/src/config/internal-api/fixtures/screens.ts b/qa-core/src/config/internal-api/fixtures/screens.ts index 28e58e8eb8..1ebc1eb5c8 100644 --- a/qa-core/src/config/internal-api/fixtures/screens.ts +++ b/qa-core/src/config/internal-api/fixtures/screens.ts @@ -2,33 +2,33 @@ import generator from "../../generator" const randomId = generator.guid() -const generateScreen = (): any => ({ - showNavigation: true, - width: "Large", - props: { - _id: randomId, - _component: "@budibase/standard-components/container", - _styles: { - normal: {}, - hover: {}, - active: {}, - selected: {}, +const generateScreen = (roleId: string): any => ({ + showNavigation: true, + width: "Large", + name: randomId, + template: "createFromScratch", + props: { + _id: randomId, + _component: + "@budibase/standard-components/container", + _styles: { + normal: {}, + hover: {}, + active: {}, + selected: {} + }, + _children: [], + _instanceName: "New Screen", + direction: "column", + hAlign: "stretch", + vAlign: "top", + size: "grow", + gap: "M" + }, routing: { + route: "/test", + roleId: roleId, + homeScreen: false }, - _children: [], - _instanceName: "New Screen", - direction: "column", - hAlign: "stretch", - vAlign: "top", - size: "grow", - gap: "M", - }, - routing: { - route: "/test", - roleId: "BASIC", - homeScreen: false, - }, - name: randomId, - template: "createFromScratch", }) export default generateScreen diff --git a/qa-core/src/tests/internal-api/applications/create.spec.ts b/qa-core/src/tests/internal-api/applications/create.spec.ts index c09af632de..aa71724cac 100644 --- a/qa-core/src/tests/internal-api/applications/create.spec.ts +++ b/qa-core/src/tests/internal-api/applications/create.spec.ts @@ -164,7 +164,7 @@ describe("Internal API - /applications endpoints", () => { // Change/add component to the app const [screenResponse, screen] = await config.applications.addScreentoApp( - generateScreen() + generateScreen("BASIC") ) expect(screenResponse).toHaveStatusCode(200) expect(screen._id).toBeDefined() diff --git a/qa-core/src/tests/internal-api/screens/screens.spec.ts b/qa-core/src/tests/internal-api/screens/screens.spec.ts new file mode 100644 index 0000000000..68e1022cb4 --- /dev/null +++ b/qa-core/src/tests/internal-api/screens/screens.spec.ts @@ -0,0 +1,62 @@ +import TestConfiguration from "../../../config/internal-api/TestConfiguration" +import { App } from "@budibase/types" +import InternalAPIClient from "../../../config/internal-api/TestConfiguration/InternalAPIClient" +import generateApp from "../../../config/internal-api/fixtures/applications" +import { Screen } from "@budibase/types" +import generateScreen from "../../../config/internal-api/fixtures/screens" + + +describe("Internal API - /screens endpoints", () => { + const api = new InternalAPIClient() + const config = new TestConfiguration(api) + const appConfig = new TestConfiguration(api) + + beforeAll(async () => { + await config.beforeAll() + }) + + afterAll(async () => { + await config.afterAll() + }) + + it("POST - Create a screen with each role type", async () => { + // Create app + const [appResponse, app] = await appConfig.applications.create(generateApp()) + + // Create Screen + const roleArray = ["BASIC", "POWER", "ADMIN", "PUBLIC"] + appConfig.applications.api.appId = app.appId + for (let role in roleArray) { + const [response, screen] = await config.screen.create(generateScreen(roleArray[role])) + expect(response).toHaveStatusCode(200) + expect(screen.routing.roleId).toEqual(roleArray[role]) + } + }) + + it("GET - Fetch screens", async () => { + // Create app + const [appResponse, app] = await appConfig.applications.create(generateApp()) + + // Create Screen + appConfig.applications.api.appId = app.appId + const [response, screen] = await config.screen.create(generateScreen("BASIC")) + + // Check screen exists + const [routesResponse, routes] = await appConfig.applications.getRoutes() + expect(routesResponse).toHaveStatusCode(200) + expect(routes.routes["/test"]).toBeTruthy() + }) + + it("DELETE - Delete a screen", async () => { + // Create app + const [appResponse, app] = await appConfig.applications.create(generateApp()) + + // Create Screen + appConfig.applications.api.appId = app.appId + const [screenResponse, screen] = await config.screen.create(generateScreen("BASIC")) + + // Delete Screen + const [response] = await config.screen.delete(screen._id!, screen._rev!) + expect(response).toHaveStatusCode(200) + }) +})