remove inline providers from unit tests

This commit is contained in:
Hazelnoot 2025-10-01 11:56:16 -04:00
parent 92892338f3
commit a3e969625d
6 changed files with 33 additions and 76 deletions

View file

@ -29,6 +29,7 @@ import { GlobalEventService } from '@/core/GlobalEventService.js';
import { RecipientMethod } from '@/models/AbuseReportNotificationRecipient.js';
import { SystemWebhookService } from '@/core/SystemWebhookService.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { CoreModule } from '@/core/CoreModule.js';
process.env.NODE_ENV = 'test';
@ -114,39 +115,20 @@ describe('AbuseReportNotificationService', () => {
.createTestingModule({
imports: [
GlobalModule,
],
providers: [
AbuseReportNotificationService,
IdService,
{
provide: RoleService, useFactory: () => ({ getModeratorIds: jest.fn() }),
},
{
provide: SystemWebhookService, useFactory: () => ({ enqueueSystemWebhook: jest.fn() }),
},
{
provide: UserEntityService, useFactory: () => ({
pack: (v: any) => Promise.resolve(v),
packMany: (v: any) => Promise.resolve(v),
}),
},
{
provide: EmailService, useFactory: () => ({ sendEmail: jest.fn() }),
},
{
provide: MetaService, useFactory: () => ({ fetch: jest.fn() }),
},
{
provide: ModerationLogService, useFactory: () => ({ log: () => Promise.resolve() }),
},
{
provide: GlobalEventService, useFactory: () => ({ publishAdminStream: jest.fn() }),
},
{
provide: DI.meta, useFactory: () => meta,
},
CoreModule,
],
})
.overrideProvider(RoleService).useValue({ getModeratorIds: jest.fn() })
.overrideProvider(SystemWebhookService).useValue({ enqueueSystemWebhook: jest.fn() })
.overrideProvider(UserEntityService).useValue({
pack: (v: any) => Promise.resolve(v),
packMany: (v: any) => Promise.resolve(v),
})
.overrideProvider(EmailService).useValue({ sendEmail: jest.fn() })
.overrideProvider(MetaService).useValue({ fetch: jest.fn() })
.overrideProvider(ModerationLogService).useValue({ log: () => Promise.resolve() })
.overrideProvider(GlobalEventService).useValue({ publishAdminStream: jest.fn() })
.overrideProvider(DI.meta).useValue(meta)
.compile();
await app.init();

View file

@ -8,8 +8,6 @@ import { Test, TestingModule } from '@nestjs/testing';
import { Response } from 'node-fetch';
import {
CaptchaError,
CaptchaErrorCode,
captchaErrorCodes,
CaptchaSaveResult,
CaptchaService,
} from '@/core/CaptchaService.js';
@ -18,6 +16,8 @@ import { HttpRequestService } from '@/core/HttpRequestService.js';
import { MetaService } from '@/core/MetaService.js';
import { MiMeta } from '@/models/Meta.js';
import { LoggerService } from '@/core/LoggerService.js';
import { CoreModule } from '@/core/CoreModule.js';
import { captchaErrorCodes, type CaptchaErrorCode } from '@/misc/captcha-error.js';
describe('CaptchaService', () => {
let app: TestingModule;
@ -29,21 +29,12 @@ describe('CaptchaService', () => {
app = await Test.createTestingModule({
imports: [
GlobalModule,
CoreModule,
],
providers: [
CaptchaService,
LoggerService,
{
provide: HttpRequestService, useFactory: () => ({ send: jest.fn() }),
},
{
provide: MetaService, useFactory: () => ({
fetch: jest.fn(),
update: jest.fn(),
}),
},
],
}).compile();
})
.overrideProvider(HttpRequestService).useValue({ send: jest.fn() })
.overrideProvider(MetaService).useValue({ fetch: jest.fn(), update: jest.fn() })
.compile();
await app.init();
app.enableShutdownHooks();

View file

@ -5,6 +5,7 @@
import { afterEach, beforeAll, describe, test } from '@jest/globals';
import { Test, TestingModule } from '@nestjs/testing';
import { DataSource } from 'typeorm';
import { CustomEmojiService } from '@/core/CustomEmojiService.js';
import { EmojiEntityService } from '@/core/entities/EmojiEntityService.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
@ -17,7 +18,6 @@ import { EmojisRepository } from '@/models/_.js';
import { MiEmoji } from '@/models/Emoji.js';
import { CoreModule } from '@/core/CoreModule.js';
import { DriveService } from '@/core//DriveService.js';
import { DataSource } from 'typeorm';
describe('CustomEmojiService', () => {
let app: TestingModule;
@ -33,15 +33,6 @@ describe('CustomEmojiService', () => {
GlobalModule,
CoreModule,
],
providers: [
CustomEmojiService,
UtilityService,
IdService,
EmojiEntityService,
ModerationLogService,
GlobalEventService,
DriveService,
],
})
.compile();
@ -51,7 +42,7 @@ describe('CustomEmojiService', () => {
service = app.get<CustomEmojiService>(CustomEmojiService);
emojisRepository = app.get<EmojisRepository>(DI.emojisRepository);
idService = app.get<IdService>(IdService);
await app.get<DataSource>(DI.db).query("set session time zone 'UTC'");
await app.get<DataSource>(DI.db).query('set session time zone \'UTC\'');
});
afterAll(async () => {

View file

@ -16,6 +16,7 @@ import { FileInfo, FileInfoService } from '@/core/FileInfoService.js';
//import { DI } from '@/di-symbols.js';
import { LoggerService } from '@/core/LoggerService.js';
import type { TestingModule } from '@nestjs/testing';
import { CoreModule } from '@/core/CoreModule.js';
import type { MockFunctionMetadata } from 'jest-mock';
const _filename = fileURLToPath(import.meta.url);
@ -41,10 +42,7 @@ describe('FileInfoService', () => {
app = await Test.createTestingModule({
imports: [
GlobalModule,
],
providers: [
LoggerService,
FileInfoService,
CoreModule,
],
})
.useMocker((token) => {

View file

@ -18,6 +18,7 @@ import { RelayService } from '@/core/RelayService.js';
import { SystemAccountService } from '@/core/SystemAccountService.js';
import { GlobalModule } from '@/GlobalModule.js';
import { UtilityService } from '@/core/UtilityService.js';
import { CoreModule } from '@/core/CoreModule.js';
const moduleMocker = new ModuleMocker(global);
@ -30,26 +31,17 @@ describe('RelayService', () => {
app = await Test.createTestingModule({
imports: [
GlobalModule,
],
providers: [
IdService,
ApRendererService,
RelayService,
UserEntityService,
SystemAccountService,
UtilityService,
CoreModule,
],
})
.useMocker((token) => {
if (token === QueueService) {
return { deliver: jest.fn() };
}
if (typeof token === 'function') {
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
})
.overrideProvider(QueueService).useValue({ deliver: jest.fn() })
.compile();
await app.init();
@ -63,6 +55,10 @@ describe('RelayService', () => {
await app.close();
});
afterEach(() => {
queueService.deliver.mockReset();
});
test('addRelay', async () => {
const result = await relayService.addRelay('https://example.com');

View file

@ -14,7 +14,7 @@ import {
UploadPartCommand,
} from '@aws-sdk/client-s3';
import { mockClient } from 'aws-sdk-client-mock';
import { FakeInternalEventService } from '../misc/FakeInternalEventService.js';
import { MockInternalEventService } from '../misc/MockInternalEventService.js';
import type { TestingModule } from '@nestjs/testing';
import { GlobalModule } from '@/GlobalModule.js';
import { CoreModule } from '@/core/CoreModule.js';
@ -33,9 +33,8 @@ describe('S3Service', () => {
beforeAll(async () => {
app = await Test.createTestingModule({
imports: [GlobalModule, CoreModule],
providers: [S3Service],
})
.overrideProvider(InternalEventService).useClass(FakeInternalEventService)
.overrideProvider(InternalEventService).useClass(MockInternalEventService)
.compile();
await app.init();