mirror of
https://codeberg.org/yeentown/barkey.git
synced 2025-07-06 20:16:57 +00:00
disable caches in unit tests
This commit is contained in:
parent
2e486f02ff
commit
633b64e5c3
4 changed files with 44 additions and 17 deletions
|
@ -8,9 +8,12 @@ process.env.NODE_ENV = 'test';
|
||||||
import { jest } from '@jest/globals';
|
import { jest } from '@jest/globals';
|
||||||
import { ModuleMocker } from 'jest-mock';
|
import { ModuleMocker } from 'jest-mock';
|
||||||
import { Test } from '@nestjs/testing';
|
import { Test } from '@nestjs/testing';
|
||||||
|
import { NoOpCacheService } from '../misc/noOpCaches.js';
|
||||||
|
import { FakeInternalEventService } from '../misc/FakeInternalEventService.js';
|
||||||
import { GlobalModule } from '@/GlobalModule.js';
|
import { GlobalModule } from '@/GlobalModule.js';
|
||||||
import { AnnouncementService } from '@/core/AnnouncementService.js';
|
import { AnnouncementService } from '@/core/AnnouncementService.js';
|
||||||
import { AnnouncementEntityService } from '@/core/entities/AnnouncementEntityService.js';
|
import { AnnouncementEntityService } from '@/core/entities/AnnouncementEntityService.js';
|
||||||
|
import { InternalEventService } from '@/core/InternalEventService.js';
|
||||||
import type {
|
import type {
|
||||||
AnnouncementReadsRepository,
|
AnnouncementReadsRepository,
|
||||||
AnnouncementsRepository,
|
AnnouncementsRepository,
|
||||||
|
@ -71,24 +74,27 @@ describe('AnnouncementService', () => {
|
||||||
AnnouncementEntityService,
|
AnnouncementEntityService,
|
||||||
CacheService,
|
CacheService,
|
||||||
IdService,
|
IdService,
|
||||||
|
InternalEventService,
|
||||||
|
GlobalEventService,
|
||||||
|
ModerationLogService,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
.useMocker((token) => {
|
.useMocker((token) => {
|
||||||
if (token === GlobalEventService) {
|
if (typeof token === 'function') {
|
||||||
return {
|
|
||||||
publishMainStream: jest.fn(),
|
|
||||||
publishBroadcastStream: jest.fn(),
|
|
||||||
};
|
|
||||||
} else if (token === ModerationLogService) {
|
|
||||||
return {
|
|
||||||
log: jest.fn(),
|
|
||||||
};
|
|
||||||
} else if (typeof token === 'function') {
|
|
||||||
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
|
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
|
||||||
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
|
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
|
||||||
return new Mock();
|
return new Mock();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.overrideProvider(GlobalEventService).useValue({
|
||||||
|
publishMainStream: jest.fn(),
|
||||||
|
publishBroadcastStream: jest.fn(),
|
||||||
|
} as unknown as GlobalEventService)
|
||||||
|
.overrideProvider(ModerationLogService).useValue({
|
||||||
|
log: jest.fn(),
|
||||||
|
})
|
||||||
|
.overrideProvider(InternalEventService).useClass(FakeInternalEventService)
|
||||||
|
.overrideProvider(CacheService).useClass(NoOpCacheService)
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
app.enableShutdownHooks();
|
app.enableShutdownHooks();
|
||||||
|
|
|
@ -10,12 +10,15 @@ import { jest } from '@jest/globals';
|
||||||
import { ModuleMocker } from 'jest-mock';
|
import { ModuleMocker } from 'jest-mock';
|
||||||
import { Test } from '@nestjs/testing';
|
import { Test } from '@nestjs/testing';
|
||||||
import * as lolex from '@sinonjs/fake-timers';
|
import * as lolex from '@sinonjs/fake-timers';
|
||||||
|
import { NoOpCacheService } from '../misc/noOpCaches.js';
|
||||||
|
import { FakeInternalEventService } from '../misc/FakeInternalEventService.js';
|
||||||
import type { TestingModule } from '@nestjs/testing';
|
import type { TestingModule } from '@nestjs/testing';
|
||||||
import type { MockFunctionMetadata } from 'jest-mock';
|
import type { MockFunctionMetadata } from 'jest-mock';
|
||||||
import { GlobalModule } from '@/GlobalModule.js';
|
import { GlobalModule } from '@/GlobalModule.js';
|
||||||
import { RoleService } from '@/core/RoleService.js';
|
import { RoleService } from '@/core/RoleService.js';
|
||||||
import {
|
import {
|
||||||
InstancesRepository,
|
InstancesRepository,
|
||||||
|
MetasRepository,
|
||||||
MiMeta,
|
MiMeta,
|
||||||
MiRole,
|
MiRole,
|
||||||
MiRoleAssignment,
|
MiRoleAssignment,
|
||||||
|
@ -34,6 +37,7 @@ import { secureRndstr } from '@/misc/secure-rndstr.js';
|
||||||
import { NotificationService } from '@/core/NotificationService.js';
|
import { NotificationService } from '@/core/NotificationService.js';
|
||||||
import { RoleCondFormulaValue } from '@/models/Role.js';
|
import { RoleCondFormulaValue } from '@/models/Role.js';
|
||||||
import { UserEntityService } from '@/core/entities/UserEntityService.js';
|
import { UserEntityService } from '@/core/entities/UserEntityService.js';
|
||||||
|
import { InternalEventService } from '@/core/InternalEventService.js';
|
||||||
|
|
||||||
const moduleMocker = new ModuleMocker(global);
|
const moduleMocker = new ModuleMocker(global);
|
||||||
|
|
||||||
|
@ -45,6 +49,7 @@ describe('RoleService', () => {
|
||||||
let rolesRepository: RolesRepository;
|
let rolesRepository: RolesRepository;
|
||||||
let roleAssignmentsRepository: RoleAssignmentsRepository;
|
let roleAssignmentsRepository: RoleAssignmentsRepository;
|
||||||
let meta: jest.Mocked<MiMeta>;
|
let meta: jest.Mocked<MiMeta>;
|
||||||
|
let metasRepository: MetasRepository;
|
||||||
let notificationService: jest.Mocked<NotificationService>;
|
let notificationService: jest.Mocked<NotificationService>;
|
||||||
let clock: lolex.InstalledClock;
|
let clock: lolex.InstalledClock;
|
||||||
|
|
||||||
|
@ -143,18 +148,20 @@ describe('RoleService', () => {
|
||||||
provide: NotificationService.name,
|
provide: NotificationService.name,
|
||||||
useExisting: NotificationService,
|
useExisting: NotificationService,
|
||||||
},
|
},
|
||||||
|
MetaService,
|
||||||
|
InternalEventService,
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
.useMocker((token) => {
|
.useMocker((token) => {
|
||||||
if (token === MetaService) {
|
|
||||||
return { fetch: jest.fn() };
|
|
||||||
}
|
|
||||||
if (typeof token === 'function') {
|
if (typeof token === 'function') {
|
||||||
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
|
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
|
||||||
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
|
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
|
||||||
return new Mock();
|
return new Mock();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.overrideProvider(MetaService).useValue({ fetch: jest.fn() })
|
||||||
|
.overrideProvider(InternalEventService).useClass(FakeInternalEventService)
|
||||||
|
.overrideProvider(CacheService).useClass(NoOpCacheService)
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
app.enableShutdownHooks();
|
app.enableShutdownHooks();
|
||||||
|
@ -164,6 +171,7 @@ describe('RoleService', () => {
|
||||||
usersRepository = app.get<UsersRepository>(DI.usersRepository);
|
usersRepository = app.get<UsersRepository>(DI.usersRepository);
|
||||||
rolesRepository = app.get<RolesRepository>(DI.rolesRepository);
|
rolesRepository = app.get<RolesRepository>(DI.rolesRepository);
|
||||||
roleAssignmentsRepository = app.get<RoleAssignmentsRepository>(DI.roleAssignmentsRepository);
|
roleAssignmentsRepository = app.get<RoleAssignmentsRepository>(DI.roleAssignmentsRepository);
|
||||||
|
metasRepository = app.get<MetasRepository>(DI.metasRepository);
|
||||||
|
|
||||||
meta = app.get<MiMeta>(DI.meta) as jest.Mocked<MiMeta>;
|
meta = app.get<MiMeta>(DI.meta) as jest.Mocked<MiMeta>;
|
||||||
notificationService = app.get<NotificationService>(NotificationService) as jest.Mocked<NotificationService>;
|
notificationService = app.get<NotificationService>(NotificationService) as jest.Mocked<NotificationService>;
|
||||||
|
@ -175,7 +183,7 @@ describe('RoleService', () => {
|
||||||
clock.uninstall();
|
clock.uninstall();
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
app.get(DI.metasRepository).delete({}),
|
metasRepository.delete({}),
|
||||||
usersRepository.delete({}),
|
usersRepository.delete({}),
|
||||||
rolesRepository.delete({}),
|
rolesRepository.delete({}),
|
||||||
roleAssignmentsRepository.delete({}),
|
roleAssignmentsRepository.delete({}),
|
||||||
|
|
|
@ -9,8 +9,12 @@ import { generateKeyPair } from 'crypto';
|
||||||
import { Test } from '@nestjs/testing';
|
import { Test } from '@nestjs/testing';
|
||||||
import { jest } from '@jest/globals';
|
import { jest } from '@jest/globals';
|
||||||
|
|
||||||
|
import { NoOpCacheService } from '../misc/noOpCaches.js';
|
||||||
|
import { FakeInternalEventService } from '../misc/FakeInternalEventService.js';
|
||||||
import type { Config } from '@/config.js';
|
import type { Config } from '@/config.js';
|
||||||
import type { MiLocalUser, MiRemoteUser } from '@/models/User.js';
|
import type { MiLocalUser, MiRemoteUser } from '@/models/User.js';
|
||||||
|
import { InternalEventService } from '@/core/InternalEventService.js';
|
||||||
|
import { CacheService } from '@/core/CacheService.js';
|
||||||
import { ApImageService } from '@/core/activitypub/models/ApImageService.js';
|
import { ApImageService } from '@/core/activitypub/models/ApImageService.js';
|
||||||
import { ApNoteService } from '@/core/activitypub/models/ApNoteService.js';
|
import { ApNoteService } from '@/core/activitypub/models/ApNoteService.js';
|
||||||
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
|
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
|
||||||
|
@ -30,7 +34,7 @@ import { genAidx } from '@/misc/id/aidx.js';
|
||||||
import { IdService } from '@/core/IdService.js';
|
import { IdService } from '@/core/IdService.js';
|
||||||
import { MockResolver } from '../misc/mock-resolver.js';
|
import { MockResolver } from '../misc/mock-resolver.js';
|
||||||
import { UserKeypairService } from '@/core/UserKeypairService.js';
|
import { UserKeypairService } from '@/core/UserKeypairService.js';
|
||||||
import { MemoryKVCache, RedisKVCache } from '@/misc/cache.js';
|
import { MemoryKVCache } from '@/misc/cache.js';
|
||||||
|
|
||||||
const host = 'https://host1.test';
|
const host = 'https://host1.test';
|
||||||
|
|
||||||
|
@ -154,6 +158,8 @@ describe('ActivityPub', () => {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.overrideProvider(DI.meta).useFactory({ factory: () => meta })
|
.overrideProvider(DI.meta).useFactory({ factory: () => meta })
|
||||||
|
.overrideProvider(CacheService).useClass(NoOpCacheService)
|
||||||
|
.overrideProvider(InternalEventService).useClass(FakeInternalEventService)
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
await app.init();
|
await app.init();
|
||||||
|
@ -556,7 +562,7 @@ describe('ActivityPub', () => {
|
||||||
publicKey,
|
publicKey,
|
||||||
privateKey,
|
privateKey,
|
||||||
});
|
});
|
||||||
((userKeypairService as unknown as { cache: RedisKVCache<MiUserKeypair> }).cache as unknown as { memoryCache: MemoryKVCache<MiUserKeypair> }).memoryCache.set(author.id, keypair);
|
(userKeypairService as unknown as { cache: MemoryKVCache<MiUserKeypair> }).cache.set(author.id, keypair);
|
||||||
|
|
||||||
note = new MiNote({
|
note = new MiNote({
|
||||||
id: idService.gen(),
|
id: idService.gen(),
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Test, TestingModule } from '@nestjs/testing';
|
import { Test, TestingModule } from '@nestjs/testing';
|
||||||
|
import { FakeInternalEventService } from '../../misc/FakeInternalEventService.js';
|
||||||
|
import { NoOpCacheService } from '../../misc/noOpCaches.js';
|
||||||
import type { MiUser } from '@/models/User.js';
|
import type { MiUser } from '@/models/User.js';
|
||||||
import { UserEntityService } from '@/core/entities/UserEntityService.js';
|
import { UserEntityService } from '@/core/entities/UserEntityService.js';
|
||||||
import { GlobalModule } from '@/GlobalModule.js';
|
import { GlobalModule } from '@/GlobalModule.js';
|
||||||
|
@ -51,6 +53,7 @@ import { ReactionService } from '@/core/ReactionService.js';
|
||||||
import { NotificationService } from '@/core/NotificationService.js';
|
import { NotificationService } from '@/core/NotificationService.js';
|
||||||
import { ReactionsBufferingService } from '@/core/ReactionsBufferingService.js';
|
import { ReactionsBufferingService } from '@/core/ReactionsBufferingService.js';
|
||||||
import { ChatService } from '@/core/ChatService.js';
|
import { ChatService } from '@/core/ChatService.js';
|
||||||
|
import { InternalEventService } from '@/core/InternalEventService.js';
|
||||||
|
|
||||||
process.env.NODE_ENV = 'test';
|
process.env.NODE_ENV = 'test';
|
||||||
|
|
||||||
|
@ -174,6 +177,7 @@ describe('UserEntityService', () => {
|
||||||
ReactionsBufferingService,
|
ReactionsBufferingService,
|
||||||
NotificationService,
|
NotificationService,
|
||||||
ChatService,
|
ChatService,
|
||||||
|
InternalEventService,
|
||||||
];
|
];
|
||||||
|
|
||||||
app = await Test.createTestingModule({
|
app = await Test.createTestingModule({
|
||||||
|
@ -182,7 +186,10 @@ describe('UserEntityService', () => {
|
||||||
...services,
|
...services,
|
||||||
...services.map(x => ({ provide: x.name, useExisting: x })),
|
...services.map(x => ({ provide: x.name, useExisting: x })),
|
||||||
],
|
],
|
||||||
}).compile();
|
})
|
||||||
|
.overrideProvider(InternalEventService).useClass(FakeInternalEventService)
|
||||||
|
.overrideProvider(CacheService).useClass(NoOpCacheService)
|
||||||
|
.compile();
|
||||||
await app.init();
|
await app.init();
|
||||||
app.enableShutdownHooks();
|
app.enableShutdownHooks();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue