Merged PR 822: クエリ比較用ログ出力の仕組みを改良

## 概要
[Task3889: クエリ比較用ログ出力の仕組みを改良](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3889)

- SQLクエリを比較可能とするための仕組みを導入
  - UUIDや日付等の実行の度に変更される要素を出力段階で置き換えてしまうロガーを追加
  - テストで上記ロガーを使うよう修正
- テストで使用する環境変数が必要がないのにlocalを指定するようになっていたため、production想定でテストが実施されるようテスト用環境変数ファイルを変更

## レビューポイント
- この仕組みを使ってデグレを防ぐための「クエリの変更内容を確認する」事が問題なく出来そうか

## UIの変更
- なし

## クエリの変更
- なし

## 動作確認状況
- npm run test が正常に実施されることを確認
- 行った修正がデグレを発生させていないことを確認できるか
  - testファイルにしか参照されない変更なので、デグレは原理的に発生しないはず
  - testも正常に成功したことを確認したので、デグレは発生していないはず
This commit is contained in:
湯本 開 2024-03-12 03:57:29 +00:00
parent 311eb98236
commit 43561f237e
12 changed files with 232 additions and 17 deletions

View File

@ -1,4 +1,4 @@
STAGE=local
STAGE=production
NO_COLOR=TRUE
CORS=TRUE
PORT=8081

View File

@ -3,6 +3,7 @@
/dump.rdb
/build
/openapi/build
/.test
# credentials
credentials

View File

@ -2,27 +2,91 @@ import { Logger, QueryRunner } from 'typeorm';
import * as fs from 'fs';
import * as path from 'path';
export class FileLogger implements Logger {
private logPath = path.join(__dirname, 'logs');
interface IOutput {
initialize(): void;
write(message: string): void;
}
constructor() {
class ConsoleOutput implements IOutput {
initialize(): void {
// do nothing
}
write(message: string): void {
console.log(message);
}
}
class FileOutput implements IOutput {
private logPath = path.join('/app/dictation_server/.test', 'logs');
private fileName = new Date().getTime();
initialize(): void {
if (!fs.existsSync(this.logPath)) {
fs.mkdirSync(this.logPath, { recursive: true });
}
}
private writeToFile(message: string): void {
const logFile = path.join(
this.logPath,
`${new Date().toISOString().split('T')[0]}.log`,
);
write(message: string): void {
const logFile = path.join(this.logPath, `${this.fileName}.log`);
fs.appendFileSync(logFile, `${message}\n`);
}
}
class NoneOutput implements IOutput {
initialize(): void {
// do nothing
}
write(message: string): void {
// do nothing
}
}
export class TestLogger implements Logger {
out: IOutput;
constructor(output: 'none' | 'file' | 'console') {
switch (output) {
case 'none':
this.out = new NoneOutput();
break;
case 'file':
this.out = new FileOutput();
break;
case 'console':
this.out = new ConsoleOutput();
break;
default:
this.out = new NoneOutput();
break;
}
this.out.initialize();
}
private write(message: string): void {
this.out.write(message);
}
logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner) {
this.writeToFile(
`Query: ${query} -- Parameters: ${JSON.stringify(parameters)}`,
const raw = `Query: ${query} -- Parameters: ${JSON.stringify(parameters)}`;
// ex: 2024-03-08T06:38:43.125Z を TIME という文字列に置換
const dateRemoved = raw.replace(
/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/g,
'TIME',
);
// ex: /* コメント内容 */ を /* コメント */ という文字列に置換
const commentRemoved = dateRemoved.replace(
/\/\*.*\*\//g,
'/* RequestID */',
);
// UUIDを固定文字列に置換する ex: 88a9c78e-115a-439c-9e23-731d649f0c27 を XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX という文字列に置換
const uuidRemoved = commentRemoved.replace(
/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/g,
'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
);
this.write(uuidRemoved);
}
logQueryError(
@ -31,7 +95,7 @@ export class FileLogger implements Logger {
parameters?: any[],
queryRunner?: QueryRunner,
) {
this.writeToFile(
this.write(
`ERROR: ${error} -- Query: ${query} -- Parameters: ${JSON.stringify(
parameters,
)}`,
@ -44,7 +108,7 @@ export class FileLogger implements Logger {
parameters?: any[],
queryRunner?: QueryRunner,
) {
this.writeToFile(
this.write(
`SLOW QUERY: ${time}ms -- Query: ${query} -- Parameters: ${JSON.stringify(
parameters,
)}`,
@ -52,14 +116,14 @@ export class FileLogger implements Logger {
}
logSchemaBuild(message: string, queryRunner?: QueryRunner) {
this.writeToFile(`Schema Build: ${message}`);
this.write(`Schema Build: ${message}`);
}
logMigration(message: string, queryRunner?: QueryRunner) {
this.writeToFile(`Migration: ${message}`);
this.write(`Migration: ${message}`);
}
log(level: 'log' | 'info' | 'warn', message: any, queryRunner?: QueryRunner) {
this.writeToFile(`${level.toUpperCase()}: ${message}`);
this.write(`${level.toUpperCase()}: ${message}`);
}
}

View File

@ -91,6 +91,7 @@ import { UsersService } from '../users/users.service';
import { truncateAllTable } from '../../common/test/init';
import { createTask, getCheckoutPermissions } from '../tasks/test/utility';
import { createCheckoutPermissions } from '../tasks/test/utility';
import { TestLogger } from '../../common/test/logger';
describe('createAccount', () => {
let source: DataSource | null = null;
@ -106,6 +107,8 @@ describe('createAccount', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -818,6 +821,8 @@ describe('createPartnerAccount', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1816,6 +1821,8 @@ describe('getLicenseSummary', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2098,6 +2105,8 @@ describe('getPartnerAccount', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2252,6 +2261,8 @@ describe('getOrderHistories', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2396,6 +2407,8 @@ describe('issueLicense', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2724,6 +2737,8 @@ describe('getDealers', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2819,6 +2834,8 @@ describe('createTypistGroup', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3131,6 +3148,8 @@ describe('getTypistGroup', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3343,6 +3362,8 @@ describe('updateTypistGroup', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3771,6 +3792,8 @@ describe('deleteTypistGroup', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -4084,6 +4107,8 @@ describe('getWorktypes', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -4216,6 +4241,8 @@ describe('createWorktype', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -4381,6 +4408,8 @@ describe('updateWorktype', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -4672,6 +4701,8 @@ describe('deleteWorktype', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -4932,6 +4963,8 @@ describe('getOptionItems', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -5083,6 +5116,8 @@ describe('updateOptionItems', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -5421,6 +5456,8 @@ describe('updateActiveWorktype', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -5661,6 +5698,8 @@ describe('ライセンス発行キャンセル', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -6005,6 +6044,8 @@ describe('パートナー一覧取得', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -6185,6 +6226,8 @@ describe('アカウント情報更新', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -6473,6 +6516,8 @@ describe('getAccountInfo', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -6548,6 +6593,8 @@ describe('getAuthors', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -6712,6 +6759,8 @@ describe('getTypists', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -6906,6 +6955,8 @@ describe('deleteAccountAndData', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -7405,6 +7456,8 @@ describe('getAccountInfoMinimalAccess', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -7551,6 +7604,8 @@ describe('getCompanyName', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -7621,6 +7676,8 @@ describe('updateFileDeleteSetting', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -7760,6 +7817,8 @@ describe('updateRestrictionStatus', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -21,6 +21,7 @@ import { TIERS, USER_ROLES } from '../../constants';
import { decode, isVerifyError } from '../../common/jwt';
import { RefreshToken, AccessToken } from '../../common/token';
import { truncateAllTable } from '../../common/test/init';
import { TestLogger } from '../../common/test/logger';
describe('AuthService', () => {
it('IDトークンの検証とペイロードの取得に成功する', async () => {
@ -175,6 +176,8 @@ describe('checkIsAcceptedLatestVersion', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -350,6 +353,8 @@ describe('generateDelegationRefreshToken', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -496,6 +501,8 @@ describe('generateDelegationAccessToken', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -607,6 +614,8 @@ describe('updateDelegationAccessToken', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -44,6 +44,7 @@ import {
USER_ROLES,
} from '../../constants';
import { truncateAllTable } from '../../common/test/init';
import { TestLogger } from '../../common/test/logger';
describe('publishUploadSas', () => {
let source: DataSource | null = null;
@ -59,6 +60,8 @@ describe('publishUploadSas', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -254,6 +257,8 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1323,6 +1328,8 @@ describe('音声ファイルダウンロードURL取得', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1631,6 +1638,8 @@ describe('テンプレートファイルダウンロードURL取得', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1894,6 +1903,8 @@ describe('publishTemplateFileUploadSas', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2009,6 +2020,8 @@ describe('templateUploadFinished', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -34,6 +34,7 @@ import {
overrideSendgridService,
} from '../../common/test/overrides';
import { truncateAllTable } from '../../common/test/init';
import { TestLogger } from '../../common/test/logger';
describe('ライセンス注文', () => {
let source: DataSource | null = null;
@ -49,6 +50,8 @@ describe('ライセンス注文', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -222,6 +225,8 @@ describe('カードライセンス発行', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -312,6 +317,8 @@ describe('カードライセンスを取り込む', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -657,6 +664,8 @@ describe('ライセンス割り当て', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1302,6 +1311,8 @@ describe('ライセンス割り当て解除', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1471,6 +1482,8 @@ describe('ライセンス注文キャンセル', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -52,6 +52,7 @@ import { truncateAllTable } from '../../common/test/init';
import { makeDefaultLicensesRepositoryMockValue } from '../accounts/test/accounts.service.mock';
import { DateWithZeroTime } from '../licenses/types/types';
import { createLicense } from '../licenses/test/utility';
import { TestLogger } from '../../common/test/logger';
describe('TasksService', () => {
it('タスク一覧を取得できるadmin', async () => {
@ -638,6 +639,8 @@ describe('TasksService', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1033,6 +1036,8 @@ describe('changeCheckoutPermission', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1675,6 +1680,8 @@ describe('checkout', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2446,6 +2453,8 @@ describe('checkin', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2661,6 +2670,8 @@ describe('suspend', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2872,6 +2883,8 @@ describe('cancel', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3500,6 +3513,8 @@ describe('backup', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3806,6 +3821,8 @@ describe('getNextTask', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -4295,6 +4312,8 @@ describe('deleteTask', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -21,6 +21,7 @@ import {
getWorkflow,
} from '../workflows/test/utility';
import { BlobstorageService } from '../../gateways/blobstorage/blobstorage.service';
import { TestLogger } from '../../common/test/logger';
describe('getTemplates', () => {
let source: DataSource | null = null;
@ -36,6 +37,8 @@ describe('getTemplates', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -157,6 +160,8 @@ describe('deleteTemplate', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -7,6 +7,7 @@ import { v4 as uuidv4 } from 'uuid';
import { HttpException, HttpStatus } from '@nestjs/common';
import { makeErrorResponse } from '../../common/error/makeErrorResponse';
import { truncateAllTable } from '../../common/test/init';
import { TestLogger } from '../../common/test/logger';
describe('利用規約取得', () => {
let source: DataSource | null = null;
@ -22,6 +23,8 @@ describe('利用規約取得', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -57,8 +57,8 @@ import {
import { truncateAllTable } from '../../common/test/init';
import { createTask } from '../files/test/utility';
import { createCheckoutPermissions } from '../tasks/test/utility';
import { SendGridService } from '../../gateways/sendgrid/sendgrid.service';
import { MultipleImportErrors } from './types/types';
import { TestLogger } from '../../common/test/logger';
describe('UsersService.confirmUser', () => {
let source: DataSource | null = null;
@ -74,6 +74,8 @@ describe('UsersService.confirmUser', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -479,6 +481,8 @@ describe('UsersService.createUser', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1460,6 +1464,8 @@ describe('UsersService.getUsers', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1949,6 +1955,8 @@ describe('UsersService.updateUser', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2545,6 +2553,8 @@ describe('UsersService.updateAcceptedVersion', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2645,6 +2655,8 @@ describe('UsersService.getUserName', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2699,6 +2711,8 @@ describe('UsersService.getRelations', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2905,6 +2919,8 @@ describe('UsersService.deleteUser', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3672,6 +3688,8 @@ describe('UsersService.multipleImports', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -3872,6 +3890,8 @@ describe('UsersService.multipleImportsComplate', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();

View File

@ -20,6 +20,7 @@ import { WorkflowsRepositoryService } from '../../repositories/workflows/workflo
import { HttpException, HttpStatus } from '@nestjs/common';
import { makeErrorResponse } from '../../common/error/makeErrorResponse';
import { truncateAllTable } from '../../common/test/init';
import { TestLogger } from '../../common/test/logger';
describe('getWorkflows', () => {
let source: DataSource | null = null;
@ -35,6 +36,8 @@ describe('getWorkflows', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('file'),
logging: true,
});
return await s.initialize();
})();
@ -292,6 +295,8 @@ describe('createWorkflows', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -1231,6 +1236,8 @@ describe('updateWorkflow', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();
@ -2433,6 +2440,8 @@ describe('deleteWorkflows', () => {
database: 'odms',
entities: [__dirname + '/../../**/*.entity{.ts,.js}'],
synchronize: false, // trueにすると自動的にmigrationが行われるため注意
logger: new TestLogger('none'),
logging: true,
});
return await s.initialize();
})();