kt-template-online-api/test/modules/qqbot/core/qqbot-core-status-contract.spec.ts

57 lines
1.8 KiB
TypeScript

import { QQBOT_CORE_DOMAIN_CONTRACT } from '../../../../src/modules/qqbot/core/contract/qqbot-core.contract';
import { QqbotAccount } from '../../../../src/modules/qqbot/core/infrastructure/persistence/account/qqbot-account.entity';
import { readRefactorV3SqlSchema } from '../../../helpers/sql-schema.helper';
import { getMetadataArgsStorage } from 'typeorm';
describe('QQBot core status contract', () => {
const schema = readRefactorV3SqlSchema();
it('keeps OneBot connection, container, WebUI and QQ login status as separate account fields', () => {
expect(QQBOT_CORE_DOMAIN_CONTRACT.status).toEqual({
accountTable: 'qqbot_account',
oneBotField: 'onebot_status',
containerField: 'container_status',
webuiField: 'webui_status',
qqLoginField: 'qq_login_status',
lastErrorField: 'last_error',
connectionSessionTable: 'qqbot_connection_session',
sessionStatusField: 'status',
closeReasonField: 'close_reason',
});
schema.expectTableColumns('qqbot_account', [
'id',
'self_id',
'onebot_status',
'container_status',
'webui_status',
'qq_login_status',
'last_error',
]);
schema.expectTableColumns('qqbot_connection_session', [
'id',
'account_id',
'session_key',
'status',
'connected_at',
'disconnected_at',
'close_reason',
]);
});
it('maps split account status columns on the QqbotAccount entity', () => {
const columns = getMetadataArgsStorage()
.columns.filter((column) => column.target === QqbotAccount)
.map((column) => `${column.options.name || column.propertyName}`);
expect(columns).toEqual(
expect.arrayContaining([
'onebot_status',
'container_status',
'webui_status',
'qq_login_status',
]),
);
});
});