From ee3d6ad21f8080d3553bd4cf202488cfb1e8ecb4 Mon Sep 17 00:00:00 2001 From: tilacog Date: Fri, 21 Jul 2023 19:18:04 -0300 Subject: [PATCH] cli: refactor tests setup, fix bug in indexing-rules test The test IndexerManagementClient was being instantiated before each individual test, resulting in significant loss of peformance and unpredictable behavior during tests. --- .../indexer-cli/src/__tests__/indexer/cost.test.ts | 7 +++++-- .../indexer-cli/src/__tests__/indexer/rules.test.ts | 12 ++++++++---- ...r-rule-deployment-deleted-offchain-success.stdout | 2 +- .../indexer-rule-deployment-deleted-success.stdout | 2 +- packages/indexer-cli/src/__tests__/util.ts | 10 +++++++++- .../indexer-cli/src/commands/indexer/rules/delete.ts | 4 ++-- 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/packages/indexer-cli/src/__tests__/indexer/cost.test.ts b/packages/indexer-cli/src/__tests__/indexer/cost.test.ts index 215a1fffb..08fdbee5f 100644 --- a/packages/indexer-cli/src/__tests__/indexer/cost.test.ts +++ b/packages/indexer-cli/src/__tests__/indexer/cost.test.ts @@ -1,11 +1,14 @@ -import { cliTest, setup, teardown } from '../util' +import { cliTest, setup, seed, teardown } from '../util' import path from 'path' const baseDir = path.join(__dirname, '..') describe('Indexer cost tests', () => { describe('With indexer management server', () => { - beforeEach(setup) + beforeEach(async () => { + await setup() + await seed() + }) afterEach(teardown) describe('Cost help', () => { cliTest('Indexer cost', ['indexer', 'cost'], 'references/indexer-cost', { diff --git a/packages/indexer-cli/src/__tests__/indexer/rules.test.ts b/packages/indexer-cli/src/__tests__/indexer/rules.test.ts index 4e4b37da1..94989dcf5 100644 --- a/packages/indexer-cli/src/__tests__/indexer/rules.test.ts +++ b/packages/indexer-cli/src/__tests__/indexer/rules.test.ts @@ -1,12 +1,16 @@ -import { cliTest, setup, teardown } from '../util' +import { cliTest, setup, seed, teardown, deleteFromAllTables } from '../util' import path from 'path' const baseDir = path.join(__dirname, '..') describe('Indexer rules tests', () => { describe('With indexer management server', () => { - beforeEach(setup) - afterEach(teardown) + beforeAll(setup) + beforeEach(async () => { + await deleteFromAllTables() + await seed() + }) + afterAll(teardown) describe('Rules help', () => { cliTest( 'Indexer rules', @@ -509,7 +513,7 @@ describe('Indexer rules tests', () => { cliTest( 'Indexer rules set - no args', ['indexer', 'rules', 'set'], - 'references/indexer-rules-command-no-args', + 'references/indexer-rules-no-network', { expectedExitCode: 1, cwd: baseDir, diff --git a/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-offchain-success.stdout b/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-offchain-success.stdout index be659136c..01b15a29d 100644 --- a/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-offchain-success.stdout +++ b/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-offchain-success.stdout @@ -1 +1 @@ -Deleted indexing rules for "QmZfeJYR86UARzp9HiXbURWunYgC9ywvPvoePNbuaATrEK" (deployment) +Deleted indexing rules for "QmZfeJYR86UARzp9HiXbURWunYgC9ywvPvoePNbuaATrEK" (deployment) on network: 'goerli' diff --git a/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-success.stdout b/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-success.stdout index 546cb83c6..062a6ba5c 100644 --- a/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-success.stdout +++ b/packages/indexer-cli/src/__tests__/references/indexer-rule-deployment-deleted-success.stdout @@ -1 +1 @@ -Deleted indexing rules for "QmZZtzZkfzCWMNrajxBf22q7BC9HzoT5iJUK3S8qA6zNZr" (deployment) +Deleted indexing rules for "QmZZtzZkfzCWMNrajxBf22q7BC9HzoT5iJUK3S8qA6zNZr" (deployment) on network: 'goerli' diff --git a/packages/indexer-cli/src/__tests__/util.ts b/packages/indexer-cli/src/__tests__/util.ts index 0ce746798..6f9ad8bf7 100644 --- a/packages/indexer-cli/src/__tests__/util.ts +++ b/packages/indexer-cli/src/__tests__/util.ts @@ -153,8 +153,10 @@ export const setup = async () => { process.setMaxListeners(100) process.on('SIGTERM', shutdownIndexerManagementServer) process.on('SIGINT', shutdownIndexerManagementServer) +} - // Set global, deployment, and subgraph based test rules and cost model +// Set global, deployment, and subgraph based test rules and cost model +export const seed = async () => { const commands: string[][] = [ ['indexer', 'connect', 'http://localhost:18000'], [ @@ -263,6 +265,12 @@ export const teardown = async () => { await dropSequelizeModels() } +export const deleteFromAllTables = async () => { + const queryInterface = sequelize.getQueryInterface() + const allTables = await queryInterface.showAllTables() + await Promise.all(allTables.map(tableName => queryInterface.bulkDelete(tableName, {}))) +} + export interface CommandResult { exitCode: number | null stdout: string | undefined diff --git a/packages/indexer-cli/src/commands/indexer/rules/delete.ts b/packages/indexer-cli/src/commands/indexer/rules/delete.ts index ebd53fc37..7d1320b1d 100644 --- a/packages/indexer-cli/src/commands/indexer/rules/delete.ts +++ b/packages/indexer-cli/src/commands/indexer/rules/delete.ts @@ -4,7 +4,7 @@ import chalk from 'chalk' import { loadValidatedConfig } from '../../../config' import { createIndexerManagementClient } from '../../../client' import { - extractProtocolNetworkOption, + requireProtocolNetworkOption, fixParameters, parseOutputFormat, } from '../../../command-helpers' @@ -44,7 +44,7 @@ module.exports = { const config = loadValidatedConfig() try { - const protocolNetwork = extractProtocolNetworkOption(parameters.options) + const protocolNetwork = requireProtocolNetworkOption(parameters.options) const [identifier, identifierType] = await processIdentifier(id, { all: true, global: true,