From 5453836a06a3d8db8b446be1cc64ee0952a05ecd Mon Sep 17 00:00:00 2001 From: jubnl Date: Wed, 23 Sep 2026 18:27:37 +0200 Subject: [PATCH] =?UTF-8?q?test(server):=20plan=203e=20=E2=80=94=20hand-bu?= =?UTF-8?q?ilt=20FilesService,=20FilesRpc=20and=20AllowedFileTypesService?= =?UTF-8?q?=20calls=20follow=20the=20repository=20constructors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/tests/unit/nest/admin.service.test.ts | 2 +- .../nest/admin.version-notification.test.ts | 2 +- server/tests/unit/nest/auth.service.test.ts | 2 +- .../unit/nest/doc-sync/doc-sync.job.test.ts | 4 ++-- .../unit/nest/doc-sync/doc-sync.service.test.ts | 4 ++-- server/tests/unit/nest/oidc.service.test.ts | 2 +- server/tests/unit/nest/passkey.service.test.ts | 2 +- .../unit/nest/trip-read-model.service.test.ts | 17 ++++++++++++++++- server/tests/unit/nest/trips.service.test.ts | 17 ++++++++++++++++- server/tests/unit/plugins/rpc-fallbacks.test.ts | 8 ++++---- 10 files changed, 45 insertions(+), 15 deletions(-) diff --git a/server/tests/unit/nest/admin.service.test.ts b/server/tests/unit/nest/admin.service.test.ts index ece2a2afb..2332dbda5 100644 --- a/server/tests/unit/nest/admin.service.test.ts +++ b/server/tests/unit/nest/admin.service.test.ts @@ -115,7 +115,7 @@ beforeAll(async () => { permissions = new PermissionsService(await createTestAppSettingsRepo(dbs.connection), await createTestUnitOfWork(dbs.connection)); userCleanup = new UserCleanupService(dbs, new BudgetService(dbs, permissions, new ExchangeRatesService(), realtime, await createTestUnitOfWork(dbs.connection)), await createTestUnitOfWork(dbs.connection), await createTestUsersRepo(dbs.connection)); auth = new AuthService( - permissions, new TripMembershipService(await createTestTripsRepo(dbs.connection), await createTestTripMembersRepo(dbs.connection)), webauthn, userCleanup, new MailerService(dbs), new EphemeralTokenService(), new AllowedFileTypesService(dbs), await createTestUnitOfWork(dbs.connection), + permissions, new TripMembershipService(await createTestTripsRepo(dbs.connection), await createTestTripMembersRepo(dbs.connection)), webauthn, userCleanup, new MailerService(dbs), new EphemeralTokenService(), new AllowedFileTypesService(await createTestAppSettingsRepo(dbs.connection)), await createTestUnitOfWork(dbs.connection), await createTestAppSettingsRepo(dbs.connection), await createTestUsersRepo(dbs.connection), await createTestInviteTokensRepo(dbs.connection), await createTestMcpTokensRepo(dbs.connection), await createTestOauthTokensRepo(dbs.connection), await createTestWebauthnCredentialsRepo(dbs.connection), await createTestPasswordResetTokensRepo(dbs.connection), ); diff --git a/server/tests/unit/nest/admin.version-notification.test.ts b/server/tests/unit/nest/admin.version-notification.test.ts index a55ae3557..a8be29784 100644 --- a/server/tests/unit/nest/admin.version-notification.test.ts +++ b/server/tests/unit/nest/admin.version-notification.test.ts @@ -93,7 +93,7 @@ beforeAll(async () => { permissions = new PermissionsService(await createTestAppSettingsRepo(dbs.connection), await createTestUnitOfWork(dbs.connection)); userCleanup = new UserCleanupService(dbs, new BudgetService(dbs, permissions, new ExchangeRatesService(), realtime, await createTestUnitOfWork(dbs.connection)), await createTestUnitOfWork(dbs.connection), await createTestUsersRepo(dbs.connection)); auth = new AuthService( - permissions, new TripMembershipService(await createTestTripsRepo(dbs.connection), await createTestTripMembersRepo(dbs.connection)), webauthn, userCleanup, new MailerService(dbs), new EphemeralTokenService(), new AllowedFileTypesService(dbs), await createTestUnitOfWork(dbs.connection), + permissions, new TripMembershipService(await createTestTripsRepo(dbs.connection), await createTestTripMembersRepo(dbs.connection)), webauthn, userCleanup, new MailerService(dbs), new EphemeralTokenService(), new AllowedFileTypesService(await createTestAppSettingsRepo(dbs.connection)), await createTestUnitOfWork(dbs.connection), await createTestAppSettingsRepo(dbs.connection), await createTestUsersRepo(dbs.connection), await createTestInviteTokensRepo(dbs.connection), await createTestMcpTokensRepo(dbs.connection), await createTestOauthTokensRepo(dbs.connection), await createTestWebauthnCredentialsRepo(dbs.connection), await createTestPasswordResetTokensRepo(dbs.connection), ); diff --git a/server/tests/unit/nest/auth.service.test.ts b/server/tests/unit/nest/auth.service.test.ts index d3353d97b..4abc5c6fe 100644 --- a/server/tests/unit/nest/auth.service.test.ts +++ b/server/tests/unit/nest/auth.service.test.ts @@ -117,7 +117,7 @@ beforeAll(async () => { new UserCleanupService(new DatabaseService(testDb), new BudgetService(new DatabaseService(testDb), new PermissionsService(await createTestAppSettingsRepo(testDb), await createTestUnitOfWork(testDb)), new ExchangeRatesService(), new RealtimeService(), await createTestUnitOfWork(testDb)), await createTestUnitOfWork(testDb), await createTestUsersRepo(testDb)), mailerStub, new EphemeralTokenService(), - new AllowedFileTypesService(new DatabaseService(testDb)), await createTestUnitOfWork(testDb), + new AllowedFileTypesService(await createTestAppSettingsRepo(testDb)), await createTestUnitOfWork(testDb), await createTestAppSettingsRepo(testDb), await createTestUsersRepo(testDb), await createTestInviteTokensRepo(testDb), await createTestMcpTokensRepo(testDb), await createTestOauthTokensRepo(testDb), await createTestWebauthnCredentialsRepo(testDb), await createTestPasswordResetTokensRepo(testDb), diff --git a/server/tests/unit/nest/doc-sync/doc-sync.job.test.ts b/server/tests/unit/nest/doc-sync/doc-sync.job.test.ts index c49afcd06..824581939 100644 --- a/server/tests/unit/nest/doc-sync/doc-sync.job.test.ts +++ b/server/tests/unit/nest/doc-sync/doc-sync.job.test.ts @@ -42,7 +42,7 @@ import type { RealtimeService } from '../../../../src/nest/realtime/realtime.ser import { createTables } from '../../../../src/db/schema'; import { runMigrations } from '../../../../src/db/migrations'; import { createTrip, createUser } from '../../../helpers/factories'; -import { createTestUnitOfWork } from '../../../helpers/test-uow'; +import { createTestUnitOfWork, createTestAppSettingsRepo } from '../../../helpers/test-uow'; const link = (id: number): LinkRow => ({ id, provider_id: 'paperless' } as LinkRow); @@ -449,7 +449,7 @@ describe('DocSyncJob and a provider switched off in the admin panel', () => { config = new DocSyncConfigService(dbs, registry, await createTestUnitOfWork(testDb)); service = new DocSyncService( dbs, config, registry, - {} as StorageService, {} as FilesService, new AllowedFileTypesService(dbs), + {} as StorageService, {} as FilesService, new AllowedFileTypesService(await createTestAppSettingsRepo(testDb)), { broadcast: vi.fn() } as unknown as RealtimeService, addons, await createTestUnitOfWork(testDb), diff --git a/server/tests/unit/nest/doc-sync/doc-sync.service.test.ts b/server/tests/unit/nest/doc-sync/doc-sync.service.test.ts index d3b962032..b28e0783c 100644 --- a/server/tests/unit/nest/doc-sync/doc-sync.service.test.ts +++ b/server/tests/unit/nest/doc-sync/doc-sync.service.test.ts @@ -70,7 +70,7 @@ import type { AddonsService } from '../../../../src/nest/addons/addons.service'; import type { FilesService } from '../../../../src/nest/files/files.service'; import type { StorageService } from '../../../../src/nest/storage/storage.service'; import type { RealtimeService } from '../../../../src/nest/realtime/realtime.service'; -import { createTestUnitOfWork } from '../../../helpers/test-uow'; +import { createTestUnitOfWork, createTestAppSettingsRepo } from '../../../helpers/test-uow'; // ── Fixtures ───────────────────────────────────────────────────────────────── @@ -328,7 +328,7 @@ describe('DocSyncService', () => { registry, storage, files, - new AllowedFileTypesService(dbs), + new AllowedFileTypesService(await createTestAppSettingsRepo(testDb)), realtime, addons as unknown as AddonsService, await createTestUnitOfWork(testDb), diff --git a/server/tests/unit/nest/oidc.service.test.ts b/server/tests/unit/nest/oidc.service.test.ts index f33b5f442..dfe8b7895 100644 --- a/server/tests/unit/nest/oidc.service.test.ts +++ b/server/tests/unit/nest/oidc.service.test.ts @@ -140,7 +140,7 @@ beforeAll(async () => { new UserCleanupService(new DatabaseService(testDb), new BudgetService(new DatabaseService(testDb), new PermissionsService(await createTestAppSettingsRepo(testDb), await createTestUnitOfWork(testDb)), new ExchangeRatesService(), new RealtimeService(), await createTestUnitOfWork(testDb)), await createTestUnitOfWork(testDb), await createTestUsersRepo(testDb)), mailerStub, new EphemeralTokenService(), - new AllowedFileTypesService(new DatabaseService(testDb)), await createTestUnitOfWork(testDb), + new AllowedFileTypesService(await createTestAppSettingsRepo(testDb)), await createTestUnitOfWork(testDb), await createTestAppSettingsRepo(testDb), await createTestUsersRepo(testDb), await createTestInviteTokensRepo(testDb), await createTestMcpTokensRepo(testDb), await createTestOauthTokensRepo(testDb), await createTestWebauthnCredentialsRepo(testDb), await createTestPasswordResetTokensRepo(testDb), diff --git a/server/tests/unit/nest/passkey.service.test.ts b/server/tests/unit/nest/passkey.service.test.ts index 751538d2c..e0b745df1 100644 --- a/server/tests/unit/nest/passkey.service.test.ts +++ b/server/tests/unit/nest/passkey.service.test.ts @@ -133,7 +133,7 @@ beforeAll(async () => { new UserCleanupService(new DatabaseService(testDb), new BudgetService(new DatabaseService(testDb), new PermissionsService(await createTestAppSettingsRepo(testDb), await createTestUnitOfWork(testDb)), new ExchangeRatesService(), new RealtimeService(), await createTestUnitOfWork(testDb)), await createTestUnitOfWork(testDb), await createTestUsersRepo(testDb)), mailerStub, new EphemeralTokenService(), - new AllowedFileTypesService(new DatabaseService(testDb)), await createTestUnitOfWork(testDb), + new AllowedFileTypesService(await createTestAppSettingsRepo(testDb)), await createTestUnitOfWork(testDb), await createTestAppSettingsRepo(testDb), await createTestUsersRepo(testDb), await createTestInviteTokensRepo(testDb), await createTestMcpTokensRepo(testDb), await createTestOauthTokensRepo(testDb), await createTestWebauthnCredentialsRepo(testDb), await createTestPasswordResetTokensRepo(testDb), diff --git a/server/tests/unit/nest/trip-read-model.service.test.ts b/server/tests/unit/nest/trip-read-model.service.test.ts index 43bcd4acb..d0ae4ef4d 100644 --- a/server/tests/unit/nest/trip-read-model.service.test.ts +++ b/server/tests/unit/nest/trip-read-model.service.test.ts @@ -92,6 +92,7 @@ import { createTestReservationDayPositionsRepo, createTestDayAccommodationsRepo, } from '../../helpers/test-uow'; +import { createTestTripFilesRepo, createTestFileLinksRepo, createTestBudgetItemsRepo } from '../../helpers/files-repos'; // Real sibling services over the same in-memory DB — the aggregation runs the // actual SQL of every domain it fans out to, so a shape change downstream shows @@ -160,7 +161,21 @@ const buildReadModel = async (tripsRepo: TripsRepository, roster: TripMembersSer new CollabService(dbs(), new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), new RealtimeService(), notificationsStub(), makeStorageFixture('').storage, new RateLimitService(), await createTestUnitOfWork(dbs().connection)), placesSvc, new TodoService(dbs(), new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), new RealtimeService(), await createTestUnitOfWork(dbs().connection)), - new FilesService(dbs(), new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), new RealtimeService(), new EphemeralTokenService(), makeStorageFixture('').storage, (await sharedTestOrm(testDb)).em), + new FilesService( + dbs(), + new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), + new RealtimeService(), + new EphemeralTokenService(), + makeStorageFixture('').storage, + (await sharedTestOrm(testDb)).em, + await createTestUnitOfWork(dbs().connection), + await createTestTripFilesRepo(dbs().connection), + await createTestFileLinksRepo(dbs().connection), + await createTestReservationsRepo(dbs().connection), + await createTestPlacesRepo(dbs().connection), + await createTestDayAssignmentsRepo(dbs().connection), + await createTestBudgetItemsRepo(dbs().connection), + ), ); let svc: Awaited>; diff --git a/server/tests/unit/nest/trips.service.test.ts b/server/tests/unit/nest/trips.service.test.ts index 694185d21..6ac050a5f 100644 --- a/server/tests/unit/nest/trips.service.test.ts +++ b/server/tests/unit/nest/trips.service.test.ts @@ -101,6 +101,7 @@ import { createTestReservationDayPositionsRepo, createTestDayAccommodationsRepo, } from '../../helpers/test-uow'; +import { createTestTripFilesRepo, createTestFileLinksRepo, createTestBudgetItemsRepo } from '../../helpers/files-repos'; // Real sibling services over the same in-memory DB — updateTrip's date-shift // resyncs and the summary/bundle aggregation run their actual SQL. @@ -207,7 +208,21 @@ beforeAll(async () => { new CollabService(dbs(), new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), new RealtimeService(), notificationsStub(), coversFx.storage, new RateLimitService(), await createTestUnitOfWork(dbs().connection)), placesSvc, new TodoService(dbs(), new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), new RealtimeService(), await createTestUnitOfWork(dbs().connection)), - new FilesService(dbs(), new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), new RealtimeService(), new EphemeralTokenService(), coversFx.storage, (await sharedTestOrm(testDb)).em), + new FilesService( + dbs(), + new PermissionsService(await createTestAppSettingsRepo(dbs().connection), await createTestUnitOfWork(dbs().connection)), + new RealtimeService(), + new EphemeralTokenService(), + coversFx.storage, + (await sharedTestOrm(testDb)).em, + await createTestUnitOfWork(dbs().connection), + await createTestTripFilesRepo(dbs().connection), + await createTestFileLinksRepo(dbs().connection), + await createTestReservationsRepo(dbs().connection), + await createTestPlacesRepo(dbs().connection), + await createTestDayAssignmentsRepo(dbs().connection), + await createTestBudgetItemsRepo(dbs().connection), + ), ); }); diff --git a/server/tests/unit/plugins/rpc-fallbacks.test.ts b/server/tests/unit/plugins/rpc-fallbacks.test.ts index 33c4232b9..60a19a6ff 100644 --- a/server/tests/unit/plugins/rpc-fallbacks.test.ts +++ b/server/tests/unit/plugins/rpc-fallbacks.test.ts @@ -93,19 +93,19 @@ describe('optional fields fall back rather than reaching the service as undefine }); it('FALLBACK-003 a file link with no targets stores three nulls', async () => { - const { guards, db } = guardsFor(); + const { guards } = guardsFor(); const createFileLink = vi.fn(() => []); const files = { getFileById: vi.fn(() => ({})), findForeignLinkTarget: vi.fn(() => null), createFileLink } as never; - const host = new PluginRpcHost('p', ALL, makeDeps(), createTestPluginRegistry([new FilesRpc(files, realtime(), db, guards, {} as never)])); + const host = new PluginRpcHost('p', ALL, makeDeps(), createTestPluginRegistry([new FilesRpc(files, realtime(), {} as never, guards, {} as never)])); await host.dispatch(req('files.createLink', { tripId: 1, fileId: 2, opts: {} }), 42); expect(createFileLink).toHaveBeenCalledWith(2, { reservation_id: null, assignment_id: null, place_id: null }); }); it('FALLBACK-004 a file update tells an omitted link from one cleared with null', async () => { - const { guards, db } = guardsFor(); + const { guards } = guardsFor(); const updateFile = vi.fn((id: number) => ({ id })); const files = { getFileById: vi.fn(() => ({})), findForeignLinkTarget: vi.fn(() => null), updateFile } as never; - const host = new PluginRpcHost('p', ALL, makeDeps(), createTestPluginRegistry([new FilesRpc(files, realtime(), db, guards, {} as never)])); + const host = new PluginRpcHost('p', ALL, makeDeps(), createTestPluginRegistry([new FilesRpc(files, realtime(), {} as never, guards, {} as never)])); await host.dispatch(req('files.update', { tripId: 1, fileId: 2, input: { reservation_id: null, place_id: 7 } }), 42); expect(updateFile).toHaveBeenLastCalledWith(2, expect.anything(), expect.objectContaining({ reservation_id: null, place_id: '7' })); });