From 5b1db36b02b39818f4b6ca61beb23a94ac9174bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20C=C3=A1rdenas?= Date: Thu, 16 Nov 2023 20:04:41 -0600 Subject: [PATCH] build: run tests in band (#272) * build: attempt to fix migration * fix: test again * fix: log migrations * fix: try removing migrations * test: migrations on the outside * fix: return migs * test: delete some migrations * test: return some migs * test: remove more * test: more * fix: try without logs and without mv data * test: revert migrations * fix: run tests in band --- package-lock.json | 56 +++++++++++++++++++++++++++++++++----- package.json | 4 +-- tests/brc20.test.ts | 5 ++-- tests/cache.test.ts | 5 ++-- tests/inscriptions.test.ts | 5 ++-- tests/sats.test.ts | 5 ++-- tests/server.test.ts | 7 +++-- tests/stats.test.ts | 5 ++-- tests/status.test.ts | 5 ++-- 9 files changed, 73 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09f58367..479f269c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@fastify/multipart": "^7.1.0", "@fastify/swagger": "^8.3.1", "@fastify/type-provider-typebox": "^3.2.0", - "@hirosystems/api-toolkit": "^1.3.0", + "@hirosystems/api-toolkit": "^1.3.1", "@hirosystems/chainhook-client": "^1.4.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.4", @@ -53,6 +53,48 @@ "typescript": "^4.7.4" } }, + "../api-toolkit": { + "name": "@hirosystems/api-toolkit", + "version": "1.3.0", + "extraneous": true, + "license": "Apache 2.0", + "dependencies": { + "@fastify/cors": "^8.0.0", + "@fastify/swagger": "^8.3.1", + "@fastify/type-provider-typebox": "^3.2.0", + "fastify": "^4.3.0", + "fastify-metrics": "^10.2.0", + "node-pg-migrate": "^6.2.2", + "pino": "^8.11.0", + "postgres": "^3.3.4" + }, + "bin": { + "api-toolkit-git-info": "bin/api-toolkit-git-info.js" + }, + "devDependencies": { + "@commitlint/cli": "^17.5.0", + "@commitlint/config-conventional": "^17.4.4", + "@stacks/eslint-config": "^1.2.0", + "@types/jest": "^29.5.0", + "@typescript-eslint/eslint-plugin": "^5.56.0", + "@typescript-eslint/parser": "^5.56.0", + "babel-jest": "^29.5.0", + "copyfiles": "^2.4.1", + "eslint": "^8.36.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-tsdoc": "^0.2.17", + "husky": "^8.0.3", + "jest": "^29.5.0", + "prettier": "^2.8.6", + "rimraf": "^4.4.1", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "typescript": "^5.0.2" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -1207,9 +1249,9 @@ } }, "node_modules/@hirosystems/api-toolkit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@hirosystems/api-toolkit/-/api-toolkit-1.3.0.tgz", - "integrity": "sha512-orZSVqaZV3LJb886W90DNLPkZQ3XvMhJqKUBaIYIzBdQIoPEf5B8dp/JK3bII/WAry940ofphklL2+YVxJQIIA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@hirosystems/api-toolkit/-/api-toolkit-1.3.1.tgz", + "integrity": "sha512-uUOqWcJlaxnlW30RyZ1UdidzFy29esd4bG0UxwnsJH+M+qtvV4V/NaHLRUFbnJkoF5b6vckZh1mldyBNY7aL1Q==", "dependencies": { "@fastify/cors": "^8.0.0", "@fastify/swagger": "^8.3.1", @@ -19657,9 +19699,9 @@ "requires": {} }, "@hirosystems/api-toolkit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@hirosystems/api-toolkit/-/api-toolkit-1.3.0.tgz", - "integrity": "sha512-orZSVqaZV3LJb886W90DNLPkZQ3XvMhJqKUBaIYIzBdQIoPEf5B8dp/JK3bII/WAry940ofphklL2+YVxJQIIA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@hirosystems/api-toolkit/-/api-toolkit-1.3.1.tgz", + "integrity": "sha512-uUOqWcJlaxnlW30RyZ1UdidzFy29esd4bG0UxwnsJH+M+qtvV4V/NaHLRUFbnJkoF5b6vckZh1mldyBNY7aL1Q==", "requires": { "@fastify/cors": "^8.0.0", "@fastify/swagger": "^8.3.1", diff --git a/package.json b/package.json index 2e0fb6ac..723f2e3d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build": "rimraf ./dist && tsc --project tsconfig.build.json", "start": "node dist/src/index.js", "start-ts": "ts-node ./src/index.ts", - "test": "jest", + "test": "jest --runInBand", "migrate": "ts-node node_modules/.bin/node-pg-migrate -j ts", "lint:eslint": "eslint . --ext .js,.jsx,.ts,.tsx -f unix", "lint:prettier": "prettier --check src/**/*.ts tests/**/*.ts migrations/**/*.ts", @@ -50,7 +50,7 @@ "@fastify/multipart": "^7.1.0", "@fastify/swagger": "^8.3.1", "@fastify/type-provider-typebox": "^3.2.0", - "@hirosystems/api-toolkit": "^1.3.0", + "@hirosystems/api-toolkit": "^1.3.1", "@hirosystems/chainhook-client": "^1.4.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.4", diff --git a/tests/brc20.test.ts b/tests/brc20.test.ts index 21d43467..8f51852d 100644 --- a/tests/brc20.test.ts +++ b/tests/brc20.test.ts @@ -1,4 +1,4 @@ -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; import { buildApiServer } from '../src/api/init'; import { Brc20ActivityResponse, Brc20TokenResponse } from '../src/api/schemas'; import { brc20FromInscription } from '../src/pg/brc20/helpers'; @@ -72,14 +72,15 @@ describe('BRC-20', () => { }; beforeEach(async () => { + await runMigrations(MIGRATIONS_DIR, 'up'); db = await PgStore.connect({ skipMigrations: true }); fastify = await buildApiServer({ db }); - await cycleMigrations(MIGRATIONS_DIR); }); afterEach(async () => { await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); describe('token standard validation', () => { diff --git a/tests/cache.test.ts b/tests/cache.test.ts index eda268f3..29c890eb 100644 --- a/tests/cache.test.ts +++ b/tests/cache.test.ts @@ -1,4 +1,4 @@ -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; import { buildApiServer } from '../src/api/init'; import { MIGRATIONS_DIR, PgStore } from '../src/pg/pg-store'; import { TestChainhookPayloadBuilder, TestFastifyServer, randomHash } from './helpers'; @@ -8,14 +8,15 @@ describe('ETag cache', () => { let fastify: TestFastifyServer; beforeEach(async () => { + await runMigrations(MIGRATIONS_DIR, 'up'); db = await PgStore.connect({ skipMigrations: true }); fastify = await buildApiServer({ db }); - await cycleMigrations(MIGRATIONS_DIR); }); afterEach(async () => { await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); test('inscription cache control', async () => { diff --git a/tests/inscriptions.test.ts b/tests/inscriptions.test.ts index 5625c893..4fbf4255 100644 --- a/tests/inscriptions.test.ts +++ b/tests/inscriptions.test.ts @@ -1,4 +1,4 @@ -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; import { buildApiServer } from '../src/api/init'; import { MIGRATIONS_DIR, PgStore } from '../src/pg/pg-store'; import { TestChainhookPayloadBuilder, TestFastifyServer, rollBack } from './helpers'; @@ -12,14 +12,15 @@ describe('/inscriptions', () => { let fastify: TestFastifyServer; beforeEach(async () => { + await runMigrations(MIGRATIONS_DIR, 'up'); db = await PgStore.connect({ skipMigrations: true }); fastify = await buildApiServer({ db }); - await cycleMigrations(MIGRATIONS_DIR); }); afterEach(async () => { await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); describe('show', () => { diff --git a/tests/sats.test.ts b/tests/sats.test.ts index af39a376..723d23c7 100644 --- a/tests/sats.test.ts +++ b/tests/sats.test.ts @@ -1,4 +1,4 @@ -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; import { buildApiServer } from '../src/api/init'; import { MIGRATIONS_DIR, PgStore } from '../src/pg/pg-store'; import { TestChainhookPayloadBuilder, TestFastifyServer } from './helpers'; @@ -8,14 +8,15 @@ describe('/sats', () => { let fastify: TestFastifyServer; beforeEach(async () => { + await runMigrations(MIGRATIONS_DIR, 'up'); db = await PgStore.connect({ skipMigrations: true }); fastify = await buildApiServer({ db }); - await cycleMigrations(MIGRATIONS_DIR); }); afterEach(async () => { await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); test('returns valid sat', async () => { diff --git a/tests/server.test.ts b/tests/server.test.ts index eaf2f91d..b375d741 100644 --- a/tests/server.test.ts +++ b/tests/server.test.ts @@ -9,7 +9,7 @@ import { ChainhookEventObserver, } from '@hirosystems/chainhook-client'; import { buildApiServer } from '../src/api/init'; -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; describe('EventServer', () => { let db: PgStore; @@ -17,9 +17,9 @@ describe('EventServer', () => { let fastify: TestFastifyServer; beforeEach(async () => { - db = await PgStore.connect({ skipMigrations: true }); - await cycleMigrations(MIGRATIONS_DIR); + await runMigrations(MIGRATIONS_DIR, 'up'); ENV.CHAINHOOK_AUTO_PREDICATE_REGISTRATION = false; + db = await PgStore.connect({ skipMigrations: true }); server = await startChainhookServer({ db }); fastify = await buildApiServer({ db }); }); @@ -28,6 +28,7 @@ describe('EventServer', () => { await server.close(); await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); describe('parser', () => { diff --git a/tests/stats.test.ts b/tests/stats.test.ts index 34b83c91..bc7119b1 100644 --- a/tests/stats.test.ts +++ b/tests/stats.test.ts @@ -1,4 +1,4 @@ -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; import { buildApiServer } from '../src/api/init'; import { MIGRATIONS_DIR, PgStore } from '../src/pg/pg-store'; import { TestChainhookPayloadBuilder, TestFastifyServer, randomHash } from './helpers'; @@ -8,14 +8,15 @@ describe('/stats', () => { let fastify: TestFastifyServer; beforeEach(async () => { + await runMigrations(MIGRATIONS_DIR, 'up'); db = await PgStore.connect({ skipMigrations: true }); fastify = await buildApiServer({ db }); - await cycleMigrations(MIGRATIONS_DIR); }); afterEach(async () => { await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); describe('/stats/inscriptions', () => { diff --git a/tests/status.test.ts b/tests/status.test.ts index bf043697..50596a48 100644 --- a/tests/status.test.ts +++ b/tests/status.test.ts @@ -1,4 +1,4 @@ -import { cycleMigrations } from '@hirosystems/api-toolkit'; +import { runMigrations } from '@hirosystems/api-toolkit'; import { buildApiServer } from '../src/api/init'; import { MIGRATIONS_DIR, PgStore } from '../src/pg/pg-store'; import { TestChainhookPayloadBuilder, TestFastifyServer } from './helpers'; @@ -8,14 +8,15 @@ describe('Status', () => { let fastify: TestFastifyServer; beforeEach(async () => { + await runMigrations(MIGRATIONS_DIR, 'up'); db = await PgStore.connect({ skipMigrations: true }); fastify = await buildApiServer({ db }); - await cycleMigrations(MIGRATIONS_DIR); }); afterEach(async () => { await fastify.close(); await db.close(); + await runMigrations(MIGRATIONS_DIR, 'down'); }); test('returns status when db is empty', async () => {