summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-06-06 12:18:31 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-06-09 11:02:36 -0400
commit633b64e5c3dc807835cab0c1866ae66513b2a07b (patch)
tree66094b40b570f90a9e0103456cf1c5e2b07c7266 /packages
parentimplement no-op caches for testing (diff)
downloadsharkey-633b64e5c3dc807835cab0c1866ae66513b2a07b.tar.gz
sharkey-633b64e5c3dc807835cab0c1866ae66513b2a07b.tar.bz2
sharkey-633b64e5c3dc807835cab0c1866ae66513b2a07b.zip
disable caches in unit tests
Diffstat (limited to 'packages')
-rw-r--r--packages/backend/test/unit/AnnouncementService.ts26
-rw-r--r--packages/backend/test/unit/RoleService.ts16
-rw-r--r--packages/backend/test/unit/activitypub.ts10
-rw-r--r--packages/backend/test/unit/entities/UserEntityService.ts9
4 files changed, 44 insertions, 17 deletions
diff --git a/packages/backend/test/unit/AnnouncementService.ts b/packages/backend/test/unit/AnnouncementService.ts
index a79655c9aa..32d7df05bf 100644
--- a/packages/backend/test/unit/AnnouncementService.ts
+++ b/packages/backend/test/unit/AnnouncementService.ts
@@ -8,9 +8,12 @@ process.env.NODE_ENV = 'test';
import { jest } from '@jest/globals';
import { ModuleMocker } from 'jest-mock';
import { Test } from '@nestjs/testing';
+import { NoOpCacheService } from '../misc/noOpCaches.js';
+import { FakeInternalEventService } from '../misc/FakeInternalEventService.js';
import { GlobalModule } from '@/GlobalModule.js';
import { AnnouncementService } from '@/core/AnnouncementService.js';
import { AnnouncementEntityService } from '@/core/entities/AnnouncementEntityService.js';
+import { InternalEventService } from '@/core/InternalEventService.js';
import type {
AnnouncementReadsRepository,
AnnouncementsRepository,
@@ -71,24 +74,27 @@ describe('AnnouncementService', () => {
AnnouncementEntityService,
CacheService,
IdService,
+ InternalEventService,
+ GlobalEventService,
+ ModerationLogService,
],
})
.useMocker((token) => {
- if (token === GlobalEventService) {
- return {
- publishMainStream: jest.fn(),
- publishBroadcastStream: jest.fn(),
- };
- } else if (token === ModerationLogService) {
- return {
- log: jest.fn(),
- };
- } else if (typeof token === 'function') {
+ if (typeof token === 'function') {
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
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();
app.enableShutdownHooks();
diff --git a/packages/backend/test/unit/RoleService.ts b/packages/backend/test/unit/RoleService.ts
index 839402418e..2afe22618d 100644
--- a/packages/backend/test/unit/RoleService.ts
+++ b/packages/backend/test/unit/RoleService.ts
@@ -10,12 +10,15 @@ import { jest } from '@jest/globals';
import { ModuleMocker } from 'jest-mock';
import { Test } from '@nestjs/testing';
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 { MockFunctionMetadata } from 'jest-mock';
import { GlobalModule } from '@/GlobalModule.js';
import { RoleService } from '@/core/RoleService.js';
import {
InstancesRepository,
+ MetasRepository,
MiMeta,
MiRole,
MiRoleAssignment,
@@ -34,6 +37,7 @@ import { secureRndstr } from '@/misc/secure-rndstr.js';
import { NotificationService } from '@/core/NotificationService.js';
import { RoleCondFormulaValue } from '@/models/Role.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
+import { InternalEventService } from '@/core/InternalEventService.js';
const moduleMocker = new ModuleMocker(global);
@@ -45,6 +49,7 @@ describe('RoleService', () => {
let rolesRepository: RolesRepository;
let roleAssignmentsRepository: RoleAssignmentsRepository;
let meta: jest.Mocked<MiMeta>;
+ let metasRepository: MetasRepository;
let notificationService: jest.Mocked<NotificationService>;
let clock: lolex.InstalledClock;
@@ -143,18 +148,20 @@ describe('RoleService', () => {
provide: NotificationService.name,
useExisting: NotificationService,
},
+ MetaService,
+ InternalEventService,
],
})
.useMocker((token) => {
- if (token === MetaService) {
- return { fetch: jest.fn() };
- }
if (typeof token === 'function') {
const mockMetadata = moduleMocker.getMetadata(token) as MockFunctionMetadata<any, any>;
const Mock = moduleMocker.generateFromMetadata(mockMetadata);
return new Mock();
}
})
+ .overrideProvider(MetaService).useValue({ fetch: jest.fn() })
+ .overrideProvider(InternalEventService).useClass(FakeInternalEventService)
+ .overrideProvider(CacheService).useClass(NoOpCacheService)
.compile();
app.enableShutdownHooks();
@@ -164,6 +171,7 @@ describe('RoleService', () => {
usersRepository = app.get<UsersRepository>(DI.usersRepository);
rolesRepository = app.get<RolesRepository>(DI.rolesRepository);
roleAssignmentsRepository = app.get<RoleAssignmentsRepository>(DI.roleAssignmentsRepository);
+ metasRepository = app.get<MetasRepository>(DI.metasRepository);
meta = app.get<MiMeta>(DI.meta) as jest.Mocked<MiMeta>;
notificationService = app.get<NotificationService>(NotificationService) as jest.Mocked<NotificationService>;
@@ -175,7 +183,7 @@ describe('RoleService', () => {
clock.uninstall();
await Promise.all([
- app.get(DI.metasRepository).delete({}),
+ metasRepository.delete({}),
usersRepository.delete({}),
rolesRepository.delete({}),
roleAssignmentsRepository.delete({}),
diff --git a/packages/backend/test/unit/activitypub.ts b/packages/backend/test/unit/activitypub.ts
index 94dec16401..45975275d4 100644
--- a/packages/backend/test/unit/activitypub.ts
+++ b/packages/backend/test/unit/activitypub.ts
@@ -9,8 +9,12 @@ import { generateKeyPair } from 'crypto';
import { Test } from '@nestjs/testing';
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 { 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 { ApNoteService } from '@/core/activitypub/models/ApNoteService.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 { MockResolver } from '../misc/mock-resolver.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';
@@ -154,6 +158,8 @@ describe('ActivityPub', () => {
},
})
.overrideProvider(DI.meta).useFactory({ factory: () => meta })
+ .overrideProvider(CacheService).useClass(NoOpCacheService)
+ .overrideProvider(InternalEventService).useClass(FakeInternalEventService)
.compile();
await app.init();
@@ -556,7 +562,7 @@ describe('ActivityPub', () => {
publicKey,
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({
id: idService.gen(),
diff --git a/packages/backend/test/unit/entities/UserEntityService.ts b/packages/backend/test/unit/entities/UserEntityService.ts
index ce3f931bb0..4f45f3216d 100644
--- a/packages/backend/test/unit/entities/UserEntityService.ts
+++ b/packages/backend/test/unit/entities/UserEntityService.ts
@@ -4,6 +4,8 @@
*/
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 { UserEntityService } from '@/core/entities/UserEntityService.js';
import { GlobalModule } from '@/GlobalModule.js';
@@ -51,6 +53,7 @@ import { ReactionService } from '@/core/ReactionService.js';
import { NotificationService } from '@/core/NotificationService.js';
import { ReactionsBufferingService } from '@/core/ReactionsBufferingService.js';
import { ChatService } from '@/core/ChatService.js';
+import { InternalEventService } from '@/core/InternalEventService.js';
process.env.NODE_ENV = 'test';
@@ -174,6 +177,7 @@ describe('UserEntityService', () => {
ReactionsBufferingService,
NotificationService,
ChatService,
+ InternalEventService,
];
app = await Test.createTestingModule({
@@ -182,7 +186,10 @@ describe('UserEntityService', () => {
...services,
...services.map(x => ({ provide: x.name, useExisting: x })),
],
- }).compile();
+ })
+ .overrideProvider(InternalEventService).useClass(FakeInternalEventService)
+ .overrideProvider(CacheService).useClass(NoOpCacheService)
+ .compile();
await app.init();
app.enableShutdownHooks();