From 7ae0053826dc2fa07507d570815885b98d634dd8 Mon Sep 17 00:00:00 2001 From: Lykke Axlin Date: Thu, 7 Oct 2021 09:45:28 +0200 Subject: [PATCH] update database test Signed-off-by: Lykke Axlin Co-authored-by: klaraab --- plugins/bazaar-backend/package.json | 3 +- .../src/service/DatabaseHandler.test.ts | 28 ++++++++---- .../src/service/DatabaseHandler.ts | 44 +------------------ plugins/bazaar/package.json | 1 - yarn.lock | 41 ++++++++--------- 5 files changed, 42 insertions(+), 75 deletions(-) diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 8d03e8a128..82c3317555 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -21,13 +21,12 @@ }, "dependencies": { "@backstage/backend-common": "^0.9.2", + "@backstage/backend-test-utils": "^0.1.7", "@backstage/config": "^0.1.5", "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", "knex": "^0.95.1", - "supertest": "^6.1.6", - "uuid": "^8.3.2", "winston": "^3.2.1", "yn": "^4.0.0" }, diff --git a/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts b/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts index 0ed40b438a..5293b3fc03 100644 --- a/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts +++ b/plugins/bazaar-backend/src/service/DatabaseHandler.test.ts @@ -15,6 +15,7 @@ */ import { DatabaseHandler } from './DatabaseHandler'; +import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; const members: Array = [ { @@ -24,15 +25,24 @@ const members: Array = [ ]; describe('DatabaseHandler', () => { - let database: DatabaseHandler; - beforeAll(async () => { - database = await DatabaseHandler.createTestDatabase(); - await database.addMember(members[0].user_id, members[0].entity_ref); + const databases = TestDatabases.create({ + ids: ['POSTGRES_13'], }); - it("can get members that's in the database", async () => { - const cov: any[] = await database.getMembers('project1'); - expect(cov[0].entity_ref).toEqual(members[0].entity_ref); - expect(cov[0].user_id).toEqual(members[0].user_id); - }); + async function createDatabaseHandler(databaseId: TestDatabaseId) { + const knex = await databases.init(databaseId); + return await DatabaseHandler.create({ database: knex }); + } + + it.each(databases.eachSupportedId())( + 'should do a full sync with the locations on connect, %p', + async databaseId => { + const db = await createDatabaseHandler(databaseId); + await db.addMember(members[0].user_id, members[0].entity_ref); + const cov: any[] = await db.getMembers('project1'); + expect(cov[0].entity_ref).toEqual(members[0].entity_ref); + expect(cov[0].user_id).toEqual(members[0].user_id); + }, + 60_000, + ); }); diff --git a/plugins/bazaar-backend/src/service/DatabaseHandler.ts b/plugins/bazaar-backend/src/service/DatabaseHandler.ts index 7b1eab723f..7a5ad77afb 100644 --- a/plugins/bazaar-backend/src/service/DatabaseHandler.ts +++ b/plugins/bazaar-backend/src/service/DatabaseHandler.ts @@ -15,8 +15,7 @@ */ import { resolvePackagePath } from '@backstage/backend-common'; -import knexFactory, { Knex } from 'knex'; -import { v4 as uuidv4 } from 'uuid'; +import { Knex } from 'knex'; const migrationsDir = resolvePackagePath( '@backstage/plugin-bazaar-backend', @@ -44,47 +43,6 @@ export class DatabaseHandler { this.database = options.database; } - public static async createTestDatabase(): Promise { - const knex = await this.createTestDatabaseConnection(); - return await this.create({ database: knex }); - } - - public static async createTestDatabaseConnection(): Promise { - const config: Knex.Config = { - client: 'pg', - connection: { - host: 'localhost', - port: 5432, - user: 'postgres', - password: 'postgres', - }, - /* - client: 'sqlite3', - connection: ':memory:', - useNullAsDefault: true, - */ - }; - - let knex = knexFactory(config); - if (typeof config.connection !== 'string') { - const tempDbName = `d${uuidv4().replace(/-/g, '')}`; - await knex.raw(`CREATE DATABASE ${tempDbName};`); - knex = knexFactory({ - ...config, - connection: { - ...config.connection, - database: tempDbName, - }, - }); - } - - knex.client.pool.on('createSuccess', (_eventId: any, resource: any) => { - resource.run('PRAGMA foreign_keys = ON', () => {}); - }); - - return knex; - } - async getMembers(entityRef: any) { return await this.database .select('*') diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 066ba04419..8789ed4acf 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -32,7 +32,6 @@ "@material-ui/lab": "4.0.0-alpha.45", "@testing-library/jest-dom": "^5.14.1", "luxon": "^2.0.2", - "moment": "^2.29.1", "react": "^16.13.1", "react-dom": "^16.13.1", "react-hook-form": "^7.13.0", diff --git a/yarn.lock b/yarn.lock index 29c234baed..00923c9ad4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7402,7 +7402,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.9": +"@types/react@*": version "16.14.15" resolved "https://registry.npmjs.org/@types/react/-/react-16.14.15.tgz#95d8fa3148050e94bcdc5751447921adbe19f9e6" integrity sha512-jOxlBV9RGZhphdeqJTCv35VZOkjY+XIEY2owwSk84BNDdDv2xS6Csj6fhi+B/q30SR9Tz8lDNt/F2Z5RF3TrRg== @@ -7418,6 +7418,15 @@ dependencies: csstype "^2.2.0" +"@types/react@^16.9": + version "16.14.16" + resolved "https://registry.npmjs.org/@types/react/-/react-16.14.16.tgz#0ad1adaefbba4ccc307ddf364d071b3c81e0ce30" + integrity sha512-7waDQ0h1TkAk99S04wV0LUiiSXpT02lzrdDF4WZFqn2W0XE5ICXLBMtqXWZ688aX2dJislQ3knmZX/jH53RluQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/recharts@^1.8.14", "@types/recharts@^1.8.15": version "1.8.19" resolved "https://registry.npmjs.org/@types/recharts/-/recharts-1.8.19.tgz#047f72cf4c25df545aa1085fe3a085e58a2483c1" @@ -10281,9 +10290,9 @@ canvas@^2.6.1: simple-get "^3.0.3" canvg@^3.0.6: - version "3.0.8" - resolved "https://registry.npmjs.org/canvg/-/canvg-3.0.8.tgz#9125a4b7033d2f237402241b192587385f4589e6" - integrity sha512-9De5heHfVRgCkln3CGEeSJMviN5U2RyxL4uutYoe8HxI60BjH2XnT2ZUHIp+ZaAZNTUd5Asqfut8WEEdANqfAg== + version "3.0.9" + resolved "https://registry.npmjs.org/canvg/-/canvg-3.0.9.tgz#9ba095f158b94b97ca2c9c1c40785b11dc08df6d" + integrity sha512-rDXcnRPuz4QHoCilMeoTxql+fvGqNAxp+qV/KHD8rOiJSAfVjFclbdUNHD2Uqfthr+VMg17bD2bVuk6F07oLGw== dependencies: "@babel/runtime" "^7.12.5" "@types/raf" "^3.4.0" @@ -10292,7 +10301,7 @@ canvg@^3.0.6: regenerator-runtime "^0.13.7" rgbcolor "^1.0.1" stackblur-canvas "^2.0.0" - svg-pathdata "^5.0.5" + svg-pathdata "^6.0.3" capital-case@^1.0.4: version "1.0.4" @@ -11341,9 +11350,9 @@ core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2: integrity sha512-GUbtPllXMYRzIgHNZ4dTYTcUemls2cni83Q4Q/TrFONHfhcg9oEGOtaGHfb0cpzec60P96UKPvMkjX1jET8rUw== core-js@^3.6.0, core-js@^3.8.3: - version "3.18.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz#289d4be2ce0085d40fc1244c0b1a54c00454622f" - integrity sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA== + version "3.18.2" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.18.2.tgz#63a551e8a29f305cd4123754846e65896619ba5b" + integrity sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -25865,14 +25874,6 @@ supertest@^6.1.3: methods "^1.1.2" superagent "^6.1.0" -supertest@^6.1.6: - version "6.1.6" - resolved "https://registry.npmjs.org/supertest/-/supertest-6.1.6.tgz#6151c518f4c5ced2ac2aadb9f96f1bf8198174c8" - integrity sha512-0hACYGNJ8OHRg8CRITeZOdbjur7NLuNs0mBjVhdpxi7hP6t3QIbOzLON5RTUmZcy2I9riuII3+Pr2C7yztrIIg== - dependencies: - methods "^1.1.2" - superagent "^6.1.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -25926,10 +25927,10 @@ svg-parser@^2.0.2: resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svg-pathdata@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz#65e8d765642ba15fe15434444087d082bc526b29" - integrity sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow== +svg-pathdata@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz#80b0e0283b652ccbafb69ad4f8f73e8d3fbf2cac" + integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw== svgo@^1.0.0, svgo@^1.2.2: version "1.3.2"