mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-22 06:56:35 +00:00
test(server): plan 4 — constructor ripple for the rosterUserIds/getPlaceWithTags inline
Hand-built BudgetService/BudgetMcp/TodoService call sites drop the removed DatabaseService constructor arg (budgetRepoArgs() now appends a TripMembersRepository so most spread call sites need no other change); budget.service.test.ts's rosterHas() helper and svc() factory move from a spied DatabaseService to a stubbed TripMembersRepository. The AccommodationsService helper (tests/helpers/accommodations-service.ts) and its two direct callers drop the same arg. PackingService call sites are untouched (its new param is optional, so every existing hand-built instance still resolves rosterUserIds through the DatabaseService fallback).
This commit is contained in:
@@ -30,9 +30,11 @@ import {
|
||||
* why this is a helper and not five copies across the suites.
|
||||
*
|
||||
* Plan 3c Task 0b: the `DatabaseService` built here needs a real
|
||||
* `EntityManager` now — `AccommodationsService.stampLodging` reaches
|
||||
* `getPlaceWithTags`, which is `PlacesRepository.findWithTagsAndRatings`
|
||||
* (not `db/database.ts`'s deleted free function).
|
||||
* `EntityManager` now (its `.connection` backs every repository factory
|
||||
* below, and `JourneyDomainService` still takes a full `DatabaseService`).
|
||||
* `AccommodationsService` itself no longer holds one (Plan 4 Task 3 —
|
||||
* `stampLodging`'s old `getPlaceWithTags` delegate is
|
||||
* `PlacesRepository.findWithTagsAndRatings` directly now).
|
||||
*/
|
||||
export async function makeAccommodationsService(conn: Database): Promise<AccommodationsService> {
|
||||
return accommodationsOver(new DatabaseService(conn, (await sharedTestOrm(conn)).em));
|
||||
@@ -68,10 +70,11 @@ export async function accommodationsOver(dbs: DatabaseService): Promise<Accommod
|
||||
await createTestRoadtripViasRepo(dbs.connection),
|
||||
);
|
||||
return new AccommodationsService(
|
||||
dbs, permissions, realtime, assignments, await createTestUnitOfWork(dbs.connection),
|
||||
permissions, realtime, assignments, await createTestUnitOfWork(dbs.connection),
|
||||
// Plan 4 Task 2 — AccommodationsService's own canAccessTrip delegate is now
|
||||
// TripsRepository.findAccessible; `dbs` itself stays (still needed for
|
||||
// stampLodging's getPlaceWithTags).
|
||||
// TripsRepository.findAccessible. Plan 4 Task 3 — stampLodging's
|
||||
// getPlaceWithTags is PlacesRepository.findWithTagsAndRatings directly
|
||||
// (`placesRepo` below, already injected); `dbs` no longer needed here.
|
||||
await createTestTripsRepo(dbs.connection),
|
||||
await createTestDayAccommodationsRepo(dbs.connection),
|
||||
await createTestDayAssignmentsRepo(dbs.connection),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type Database from 'better-sqlite3';
|
||||
import { sharedTestOrm, createTestReservationsRepo, createTestPlacesRepo, createTestTripsRepo } from './test-uow';
|
||||
import { sharedTestOrm, createTestReservationsRepo, createTestPlacesRepo, createTestTripsRepo, createTestTripMembersRepo } from './test-uow';
|
||||
import { createTestBudgetItemsRepo } from './files-repos';
|
||||
import { BudgetItemMembers } from '../../src/db/entities/BudgetItemMembers.entity';
|
||||
import type { BudgetItemMembersRepository } from '../../src/db/repositories/BudgetItemMembers.repository';
|
||||
@@ -13,6 +13,7 @@ import type { BudgetItemsRepository } from '../../src/db/repositories/BudgetItem
|
||||
import type { ReservationsRepository } from '../../src/db/repositories/Reservations.repository';
|
||||
import type { PlacesRepository } from '../../src/db/repositories/Places.repository';
|
||||
import type { TripsRepository } from '../../src/db/repositories/Trips.repository';
|
||||
import type { TripMembersRepository } from '../../src/db/repositories/TripMembers.repository';
|
||||
|
||||
/**
|
||||
* Plan 3e Task 2 (budget) test-only repository factories, bound to a suite's
|
||||
@@ -44,16 +45,18 @@ export function createTestBudgetCategoryOrderRepo(db: Database.Database): Promis
|
||||
}
|
||||
|
||||
/**
|
||||
* The 8 repository arguments `BudgetService`'s constructor appends after
|
||||
* The 9 repository arguments `BudgetService`'s constructor appends after
|
||||
* `uow` (`budgetItemsRepo`, `budgetItemMembersRepo`, `budgetItemPayersRepo`,
|
||||
* `budgetSettlementsRepo`, `budgetCategoryOrderRepo`, `reservationsRepo`,
|
||||
* `placesRepo`, `tripsRepo`), built over the SAME connection in one call —
|
||||
* every hand-built `new BudgetService(...)` test call site spreads this
|
||||
* (`...(await budgetRepoArgs(conn))`) instead of repeating all 8 factories.
|
||||
* `placesRepo`, `tripsRepo`, `tripMembersRepo` — Plan 4 Task 3's own,
|
||||
* appended last when `rosterUserIds` inlined off `DatabaseService`), built
|
||||
* over the SAME connection in one call — every hand-built
|
||||
* `new BudgetService(...)` test call site spreads this
|
||||
* (`...(await budgetRepoArgs(conn))`) instead of repeating all 9 factories.
|
||||
*/
|
||||
export async function budgetRepoArgs(db: Database.Database): Promise<[
|
||||
BudgetItemsRepository, BudgetItemMembersRepository, BudgetItemPayersRepository, BudgetSettlementsRepository,
|
||||
BudgetCategoryOrderRepository, ReservationsRepository, PlacesRepository, TripsRepository,
|
||||
BudgetCategoryOrderRepository, ReservationsRepository, PlacesRepository, TripsRepository, TripMembersRepository,
|
||||
]> {
|
||||
return [
|
||||
await createTestBudgetItemsRepo(db),
|
||||
@@ -64,5 +67,6 @@ export async function budgetRepoArgs(db: Database.Database): Promise<[
|
||||
await createTestReservationsRepo(db),
|
||||
await createTestPlacesRepo(db),
|
||||
await createTestTripsRepo(db),
|
||||
await createTestTripMembersRepo(db),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -218,7 +218,7 @@ export async function createMcpTestRegistry(): Promise<McpRegistry> {
|
||||
// moved off `DatabaseService` onto `TripsRepository`/`UsersRepository`.
|
||||
const guards = new McpToolGuardsService(mcpOrm.repo(Trips), usersRepo, permissionsService, realtimeService);
|
||||
const exchangeRatesService = new ExchangeRatesService();
|
||||
const budgetService = new BudgetService(dbService, permissionsService, exchangeRatesService, realtimeService, await createTestUnitOfWork(dbService.connection), ...(await budgetRepoArgs(dbService.connection)));
|
||||
const budgetService = new BudgetService(permissionsService, exchangeRatesService, realtimeService, await createTestUnitOfWork(dbService.connection), ...(await budgetRepoArgs(dbService.connection)));
|
||||
const authService = new AuthService(
|
||||
permissionsService,
|
||||
new TripMembershipService(await createTestTripsRepo(dbService.connection), await createTestTripMembersRepo(dbService.connection)),
|
||||
@@ -243,7 +243,7 @@ export async function createMcpTestRegistry(): Promise<McpRegistry> {
|
||||
await createTestReservationEndpointsRepo(dbService.connection),
|
||||
await createTestDayAccommodationsRepo(dbService.connection),
|
||||
);
|
||||
const todoService = new TodoService(dbService, permissionsService, realtimeService, await createTestUnitOfWork(dbService.connection), await createTestTodoItemsRepo(dbService.connection), await createTestTodoCategoryAssigneesRepo(dbService.connection), await createTestTripsRepo(dbService.connection));
|
||||
const todoService = new TodoService(permissionsService, realtimeService, await createTestUnitOfWork(dbService.connection), await createTestTodoItemsRepo(dbService.connection), await createTestTodoCategoryAssigneesRepo(dbService.connection), await createTestTripsRepo(dbService.connection), await createTestTripMembersRepo(dbService.connection));
|
||||
const packingService = new PackingService(
|
||||
dbService, permissionsService, realtimeService, notificationsStub(), await createTestUnitOfWork(dbService.connection),
|
||||
await createTestPackingItemsRepo(dbService.connection), await createTestPackingItemContributorsRepo(dbService.connection), await createTestPackingBagsRepo(dbService.connection),
|
||||
@@ -292,7 +292,7 @@ export async function createMcpTestRegistry(): Promise<McpRegistry> {
|
||||
await createTestRoadtripViasRepo(dbService.connection),
|
||||
);
|
||||
const accommodationsService = new AccommodationsService(
|
||||
dbService, permissionsService, realtimeService, assignmentsService, await createTestUnitOfWork(dbService.connection),
|
||||
permissionsService, realtimeService, assignmentsService, await createTestUnitOfWork(dbService.connection),
|
||||
await createTestTripsRepo(dbService.connection),
|
||||
await createTestDayAccommodationsRepo(dbService.connection),
|
||||
await createTestDayAssignmentsRepo(dbService.connection),
|
||||
@@ -397,7 +397,7 @@ export async function createMcpTestRegistry(): Promise<McpRegistry> {
|
||||
new AuthMcp(),
|
||||
new TodoMcp(todoService, authService, addonsService, guards),
|
||||
new PackingMcp(packingService, authService, addonsService, guards),
|
||||
new BudgetMcp(budgetService, exchangeRatesService, dbService, new RuntimeEnvService(), new TripMembershipService(await createTestTripsRepo(dbService.connection), await createTestTripMembersRepo(dbService.connection)), addonsService, guards, await createTestUnitOfWork(dbService.connection), await createTestPlacesRepo(dbService.connection), await createTestTripsRepo(dbService.connection), demoService),
|
||||
new BudgetMcp(budgetService, exchangeRatesService, new RuntimeEnvService(), new TripMembershipService(await createTestTripsRepo(dbService.connection), await createTestTripMembersRepo(dbService.connection)), addonsService, guards, await createTestUnitOfWork(dbService.connection), await createTestPlacesRepo(dbService.connection), await createTestTripsRepo(dbService.connection), demoService, await createTestTripMembersRepo(dbService.connection)),
|
||||
new ReservationsMcp(reservationsService, daysService, budgetService, authService, assignmentsService, guards),
|
||||
new DayNotesMcp(new DayNotesService(await createTestTripsRepo(dbService.connection), permissionsService, realtimeService, await createTestDayNotesRepo(dbService.connection), await createTestDaysRepo(dbService.connection)), authService, guards),
|
||||
new DaysMcp(daysService, authService, guards),
|
||||
|
||||
@@ -158,10 +158,10 @@ export async function createPluginRpcHostFactory(dbs: DatabaseService): Promise<
|
||||
const permissions = new PermissionsService(await createTestAppSettingsRepo(dbs.connection), await createTestUnitOfWork(dbs.connection));
|
||||
const exchangeRates = new ExchangeRatesService();
|
||||
const realtime = new RealtimeService();
|
||||
const budget = new BudgetService(dbs, permissions, exchangeRates, realtime, await createTestUnitOfWork(dbs.connection), ...(await budgetRepoArgs(dbs.connection)));
|
||||
const budget = new BudgetService(permissions, exchangeRates, realtime, await createTestUnitOfWork(dbs.connection), ...(await budgetRepoArgs(dbs.connection)));
|
||||
const addons = await createTestAddonsService(dbs.connection, dbs);
|
||||
const queryHelpers = new QueryHelpersService(await createTestTagsRepo(dbs.connection), await createTestPlaceRatingsRepo(dbs.connection), await createTestAssignmentParticipantsRepo(dbs.connection));
|
||||
const todos = new TodoService(dbs, permissions, realtime, await createTestUnitOfWork(dbs.connection), await createTestTodoItemsRepo(dbs.connection), await createTestTodoCategoryAssigneesRepo(dbs.connection), await createTestTripsRepo(dbs.connection));
|
||||
const todos = new TodoService(permissions, realtime, await createTestUnitOfWork(dbs.connection), await createTestTodoItemsRepo(dbs.connection), await createTestTodoCategoryAssigneesRepo(dbs.connection), await createTestTripsRepo(dbs.connection), await createTestTripMembersRepo(dbs.connection));
|
||||
const packing = new PackingService(
|
||||
dbs, permissions, realtime, notificationsStub(), await createTestUnitOfWork(dbs.connection),
|
||||
await createTestPackingItemsRepo(dbs.connection), await createTestPackingItemContributorsRepo(dbs.connection), await createTestPackingBagsRepo(dbs.connection),
|
||||
@@ -266,7 +266,7 @@ export async function createPluginRpcHostFactory(dbs: DatabaseService): Promise<
|
||||
const pluginOrm = await sharedTestOrm(dbs.connection);
|
||||
const oauth = new PluginOAuthService(pluginOrm.repo(Plugins), pluginOrm.repo(PluginOauthTokens), pluginOrm.repo(PluginOauthState), pluginOrm.repo(PluginSettingsFields));
|
||||
const accommodations = new AccommodationsService(
|
||||
dbs, permissions, realtime, assignments, await createTestUnitOfWork(dbs.connection),
|
||||
permissions, realtime, assignments, await createTestUnitOfWork(dbs.connection),
|
||||
await createTestTripsRepo(dbs.connection),
|
||||
await createTestDayAccommodationsRepo(dbs.connection),
|
||||
await createTestDayAssignmentsRepo(dbs.connection),
|
||||
|
||||
Reference in New Issue
Block a user