127 lines
3.4 KiB
TypeScript
127 lines
3.4 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { Inject, Injectable } from '@nestjs/common';
|
|
import { MockResolver } from './mock-resolver.js';
|
|
import type { Config } from '@/config.js';
|
|
import type { MiMeta } from '@/models/Meta.js';
|
|
import type {
|
|
UsersRepository,
|
|
NotesRepository,
|
|
PollsRepository,
|
|
NoteReactionsRepository,
|
|
FollowRequestsRepository,
|
|
} from '@/models/_.js';
|
|
import { ApResolverService } from '@/core/activitypub/ApResolverService.js';
|
|
import { DI } from '@/di-symbols.js';
|
|
import { UtilityService } from '@/core/UtilityService.js';
|
|
import { SystemAccountService } from '@/core/SystemAccountService.js';
|
|
import { ApRequestService } from '@/core/activitypub/ApRequestService.js';
|
|
import { HttpRequestService } from '@/core/HttpRequestService.js';
|
|
import { ApRendererService } from '@/core/activitypub/ApRendererService.js';
|
|
import { ApDbResolverService } from '@/core/activitypub/ApDbResolverService.js';
|
|
import { LoggerService } from '@/core/LoggerService.js';
|
|
import { ApLogService } from '@/core/ApLogService.js';
|
|
import { ApUtilityService } from '@/core/activitypub/ApUtilityService.js';
|
|
import { CacheService } from '@/core/CacheService.js';
|
|
import { bindThis } from '@/decorators.js';
|
|
|
|
/**
|
|
* Mock implementation of ApResolverService to automatically provide a MockResolver to the entire test environment.
|
|
*/
|
|
@Injectable()
|
|
export class MockApResolverService extends ApResolverService {
|
|
/**
|
|
* Resolver that will be provided.
|
|
*/
|
|
public readonly resolver: MockResolver;
|
|
|
|
constructor(
|
|
@Inject(DI.config)
|
|
config: Config,
|
|
|
|
@Inject(DI.meta)
|
|
meta: MiMeta,
|
|
|
|
@Inject(DI.usersRepository)
|
|
usersRepository: UsersRepository,
|
|
|
|
@Inject(DI.notesRepository)
|
|
notesRepository: NotesRepository,
|
|
|
|
@Inject(DI.pollsRepository)
|
|
pollsRepository: PollsRepository,
|
|
|
|
@Inject(DI.noteReactionsRepository)
|
|
noteReactionsRepository: NoteReactionsRepository,
|
|
|
|
@Inject(DI.followRequestsRepository)
|
|
followRequestsRepository: FollowRequestsRepository,
|
|
|
|
utilityService: UtilityService,
|
|
systemAccountService: SystemAccountService,
|
|
apRequestService: ApRequestService,
|
|
httpRequestService: HttpRequestService,
|
|
apRendererService: ApRendererService,
|
|
apDbResolverService: ApDbResolverService,
|
|
loggerService: LoggerService,
|
|
apLogService: ApLogService,
|
|
apUtilityService: ApUtilityService,
|
|
cacheService: CacheService,
|
|
) {
|
|
super(
|
|
config,
|
|
meta,
|
|
usersRepository,
|
|
notesRepository,
|
|
pollsRepository,
|
|
noteReactionsRepository,
|
|
followRequestsRepository,
|
|
utilityService,
|
|
systemAccountService,
|
|
apRequestService,
|
|
httpRequestService,
|
|
apRendererService,
|
|
apDbResolverService,
|
|
loggerService,
|
|
apLogService,
|
|
apUtilityService,
|
|
cacheService,
|
|
);
|
|
|
|
this.resolver = new MockResolver(
|
|
this.config,
|
|
this.meta,
|
|
this.usersRepository,
|
|
this.notesRepository,
|
|
this.pollsRepository,
|
|
this.noteReactionsRepository,
|
|
this.followRequestsRepository,
|
|
this.utilityService,
|
|
this.systemAccountService,
|
|
this.apRequestService,
|
|
this.httpRequestService,
|
|
this.apRendererService,
|
|
this.apDbResolverService,
|
|
this.loggerService,
|
|
this.apLogService,
|
|
this.apUtilityService,
|
|
this.cacheService,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Resets the mock to initial state.
|
|
*/
|
|
@bindThis
|
|
reset() {
|
|
this.resolver.clear();
|
|
}
|
|
|
|
@bindThis
|
|
createResolver(): MockResolver {
|
|
return this.resolver;
|
|
}
|
|
}
|