From 9eeb04fa9527c24038c98efd1bfb874564fad33e Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 19 Mar 2024 16:50:48 +0000 Subject: [PATCH] Fix broken mocks. --- packages/server/__mocks__/airtable.ts | 11 +- packages/server/__mocks__/aws-sdk.ts | 169 ++++++++---------- packages/server/__mocks__/mssql.ts | 27 ++- packages/server/__mocks__/mysql2.ts | 23 ++- packages/server/__mocks__/oracledb.ts | 46 ++--- packages/server/__mocks__/pg.ts | 46 +++-- .../routes/tests/queries/query.seq.spec.ts | 1 + 7 files changed, 138 insertions(+), 185 deletions(-) diff --git a/packages/server/__mocks__/airtable.ts b/packages/server/__mocks__/airtable.ts index f4dd974d7e..fed30ca069 100644 --- a/packages/server/__mocks__/airtable.ts +++ b/packages/server/__mocks__/airtable.ts @@ -1,8 +1,5 @@ -module AirtableMock { - const Airtable = () => { - // @ts-ignore - this.base = jest.fn() - } - - module.exports = Airtable +class Airtable { + base = jest.fn() } + +module.exports = Airtable diff --git a/packages/server/__mocks__/aws-sdk.ts b/packages/server/__mocks__/aws-sdk.ts index f23425a7be..d6d33f6c46 100644 --- a/packages/server/__mocks__/aws-sdk.ts +++ b/packages/server/__mocks__/aws-sdk.ts @@ -1,102 +1,81 @@ import fs from "fs" import { join } from "path" -module AwsMock { - const aws: any = {} +const response = (body: any, extra?: any) => () => ({ + promise: () => body, + ...extra, +}) - const response = (body: any, extra?: any) => () => ({ - promise: () => body, - ...extra, - }) - - const DocumentClient = () => { - // @ts-ignore - this.put = jest.fn(response({})) - // @ts-ignore - this.query = jest.fn( - response({ - Items: [], - }) - ) - // @ts-ignore - this.scan = jest.fn( - response({ - Items: [ - { - Name: "test", - }, - ], - }) - ) - // @ts-ignore - this.get = jest.fn(response({})) - // @ts-ignore - this.update = jest.fn(response({})) - // @ts-ignore - this.delete = jest.fn(response({})) - } - - const S3 = () => { - // @ts-ignore - this.listObjects = jest.fn( - response({ - Contents: [], - }) - ) - - // @ts-ignore - this.createBucket = jest.fn( - response({ - Contents: {}, - }) - ) - - // @ts-ignore - this.deleteObjects = jest.fn( - response({ - Contents: {}, - }) - ) - - // @ts-ignore - this.getSignedUrl = (operation, params) => { - return `http://example.com/${params.Bucket}/${params.Key}` - } - - // @ts-ignore - this.headBucket = jest.fn( - response({ - Contents: {}, - }) - ) - - // @ts-ignore - this.upload = jest.fn( - response({ - Contents: {}, - }) - ) - - // @ts-ignore - this.getObject = jest.fn( - response( +class DocumentClient { + put = jest.fn(response({})) + query = jest.fn( + response({ + Items: [], + }) + ) + scan = jest.fn( + response({ + Items: [ { - Body: "", + Name: "test", }, - { - createReadStream: jest - .fn() - .mockReturnValue( - fs.createReadStream(join(__dirname, "aws-sdk.ts")) - ), - } - ) - ) - } - - aws.DynamoDB = { DocumentClient } - aws.S3 = S3 - aws.config = { update: jest.fn() } - - module.exports = aws + ], + }) + ) + get = jest.fn(response({})) + update = jest.fn(response({})) + delete = jest.fn(response({})) +} + +class S3 { + listObjects = jest.fn( + response({ + Contents: [], + }) + ) + createBucket = jest.fn( + response({ + Contents: {}, + }) + ) + deleteObjects = jest.fn( + response({ + Contents: {}, + }) + ) + getSignedUrl = jest.fn((operation, params) => { + return `http://example.com/${params.Bucket}/${params.Key}` + }) + headBucket = jest.fn( + response({ + Contents: {}, + }) + ) + upload = jest.fn( + response({ + Contents: {}, + }) + ) + getObject = jest.fn( + response( + { + Body: "", + }, + { + createReadStream: jest + .fn() + .mockReturnValue(fs.createReadStream(join(__dirname, "aws-sdk.ts"))), + } + ) + ) +} + +module.exports = { + DynamoDB: { + DocumentClient, + }, + S3, + config: { + update: jest.fn(), + }, } diff --git a/packages/server/__mocks__/mssql.ts b/packages/server/__mocks__/mssql.ts index cdfb7d520e..6a34e1e9d7 100644 --- a/packages/server/__mocks__/mssql.ts +++ b/packages/server/__mocks__/mssql.ts @@ -1,24 +1,17 @@ -module MsSqlMock { - const mssql: any = {} - - mssql.query = jest.fn(() => ({ +module.exports = { + ConnectionPool: jest.fn(() => ({ + connect: jest.fn(() => ({ + request: jest.fn(() => ({ + query: jest.fn(sql => ({ recordset: [sql] })), + })), + })), + })), + query: jest.fn(() => ({ recordset: [ { a: "string", b: 1, }, ], - })) - - // mssql.connect = jest.fn(() => ({ recordset: [] })) - - mssql.ConnectionPool = jest.fn(() => ({ - connect: jest.fn(() => ({ - request: jest.fn(() => ({ - query: jest.fn(sql => ({ recordset: [sql] })), - })), - })), - })) - - module.exports = mssql + })), } diff --git a/packages/server/__mocks__/mysql2.ts b/packages/server/__mocks__/mysql2.ts index 9d42a35dd8..67ff897811 100644 --- a/packages/server/__mocks__/mysql2.ts +++ b/packages/server/__mocks__/mysql2.ts @@ -1,14 +1,11 @@ -module MySQLMock { - const mysql: any = {} - - const client = { - connect: jest.fn(), - query: jest.fn((query, bindings, fn) => { - fn(null, []) - }), - } - - mysql.createConnection = jest.fn(() => client) - - module.exports = mysql +const client = { + connect: jest.fn(), + query: jest.fn((query, bindings, fn) => { + fn(null, []) + }), +} + +module.exports = { + createConnection: jest.fn(() => client), + client, } diff --git a/packages/server/__mocks__/oracledb.ts b/packages/server/__mocks__/oracledb.ts index 63d6b0887b..0172ace0e6 100644 --- a/packages/server/__mocks__/oracledb.ts +++ b/packages/server/__mocks__/oracledb.ts @@ -1,31 +1,21 @@ -module OracleDbMock { - // mock execute - const execute = jest.fn(() => ({ - rows: [ - { - a: "string", - b: 1, - }, - ], - })) +const executeMock = jest.fn(() => ({ + rows: [ + { + a: "string", + b: 1, + }, + ], +})) - const close = jest.fn() +const closeMock = jest.fn() - // mock connection - const Connection = () => {} - Connection.prototype.execute = execute - Connection.prototype.close = close - - // mock oracledb - const oracleDb: any = {} - oracleDb.getConnection = jest.fn(() => { - // @ts-ignore - return new Connection() - }) - - // expose mocks - oracleDb.executeMock = execute - oracleDb.closeMock = close - - module.exports = oracleDb +class Connection { + execute = executeMock + close = closeMock +} + +module.exports = { + getConnection: jest.fn(() => new Connection()), + executeMock, + closeMock, } diff --git a/packages/server/__mocks__/pg.ts b/packages/server/__mocks__/pg.ts index d7db297335..50a7c7349e 100644 --- a/packages/server/__mocks__/pg.ts +++ b/packages/server/__mocks__/pg.ts @@ -1,29 +1,25 @@ -module PgMock { - const pg: any = {} +const query = jest.fn(() => ({ + rows: [ + { + a: "string", + b: 1, + }, + ], +})) - const query = jest.fn(() => ({ - rows: [ - { - a: "string", - b: 1, - }, - ], - })) - - // constructor - const Client = () => {} - Client.prototype.query = query - Client.prototype.end = jest.fn(cb => { +class Client { + query = query + end = jest.fn(cb => { if (cb) cb() }) - Client.prototype.connect = jest.fn() - Client.prototype.release = jest.fn() - - const on = jest.fn() - - pg.Client = Client - pg.queryMock = query - pg.on = on - - module.exports = pg + connect = jest.fn() + release = jest.fn() +} + +const on = jest.fn() + +module.exports = { + Client, + queryMock: query, + on, } diff --git a/packages/server/src/api/routes/tests/queries/query.seq.spec.ts b/packages/server/src/api/routes/tests/queries/query.seq.spec.ts index 0ca424c48b..10b90eafb1 100644 --- a/packages/server/src/api/routes/tests/queries/query.seq.spec.ts +++ b/packages/server/src/api/routes/tests/queries/query.seq.spec.ts @@ -330,6 +330,7 @@ describe("/queries", () => { ], }, ] + pg.queryMock.mockImplementation(() => ({ rows, }))