update database test

Signed-off-by: Lykke Axlin <lykkeaxlin@hotmail.com>

Co-authored-by: klaraab <klarabroman@live.se>
This commit is contained in:
Lykke Axlin
2021-10-07 09:45:28 +02:00
parent bdb1fc1e11
commit 7ae0053826
5 changed files with 42 additions and 75 deletions
+1 -2
View File
@@ -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"
},
@@ -15,6 +15,7 @@
*/
import { DatabaseHandler } from './DatabaseHandler';
import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils';
const members: Array<any> = [
{
@@ -24,15 +25,24 @@ const members: Array<any> = [
];
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,
);
});
@@ -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<DatabaseHandler> {
const knex = await this.createTestDatabaseConnection();
return await this.create({ database: knex });
}
public static async createTestDatabaseConnection(): Promise<Knex> {
const config: Knex.Config<any> = {
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('*')
-1
View File
@@ -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",
+21 -20
View File
@@ -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"