Merge pull request #19437 from backstage/rugvip/mock
backend-test-utils: add service mock helpers
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/backend-test-utils': patch
|
||||
---
|
||||
|
||||
Extended `mockService` to also include mocked variants, for example `mockServices.lifecycle.mock()`. The returned mocked implementation will have a `factory` property which is a service factory for itself. You can also pass a partial implementation of the service to the mock function to use a mock implementation of specific methods.
|
||||
@@ -3,6 +3,8 @@
|
||||
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
||||
|
||||
```ts
|
||||
/// <reference types="jest" />
|
||||
|
||||
import { Backend } from '@backstage/backend-app-api';
|
||||
import { BackendFeature } from '@backstage/backend-plugin-api';
|
||||
import { CacheService } from '@backstage/backend-plugin-api';
|
||||
@@ -19,6 +21,7 @@ import { LoggerService } from '@backstage/backend-plugin-api';
|
||||
import { PermissionsService } from '@backstage/backend-plugin-api';
|
||||
import { RootConfigService } from '@backstage/backend-plugin-api';
|
||||
import { RootLifecycleService } from '@backstage/backend-plugin-api';
|
||||
import { RootLoggerService } from '@backstage/backend-plugin-api';
|
||||
import { SchedulerService } from '@backstage/backend-plugin-api';
|
||||
import { ServiceFactory } from '@backstage/backend-plugin-api';
|
||||
import { TokenManagerService } from '@backstage/backend-plugin-api';
|
||||
@@ -33,11 +36,19 @@ export namespace mockServices {
|
||||
export namespace cache {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<CacheService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<CacheService> | undefined,
|
||||
) => ServiceMock<CacheService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace database {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<DatabaseService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<DatabaseService> | undefined,
|
||||
) => ServiceMock<DatabaseService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace httpRouter {
|
||||
@@ -45,6 +56,10 @@ export namespace mockServices {
|
||||
factory: (
|
||||
options?: HttpRouterFactoryOptions | undefined,
|
||||
) => ServiceFactory<HttpRouterService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<HttpRouterService> | undefined,
|
||||
) => ServiceMock<HttpRouterService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export function identity(): IdentityService;
|
||||
@@ -52,21 +67,37 @@ export namespace mockServices {
|
||||
export namespace identity {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<IdentityService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<IdentityService> | undefined,
|
||||
) => ServiceMock<IdentityService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace lifecycle {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<LifecycleService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<LifecycleService> | undefined,
|
||||
) => ServiceMock<LifecycleService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace logger {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<LoggerService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<LoggerService> | undefined,
|
||||
) => ServiceMock<LoggerService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace permissions {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<PermissionsService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<PermissionsService> | undefined,
|
||||
) => ServiceMock<PermissionsService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export function rootConfig(options?: rootConfig.Options): RootConfigService;
|
||||
@@ -85,6 +116,10 @@ export namespace mockServices {
|
||||
export namespace rootLifecycle {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<RootLifecycleService, 'root'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<RootLifecycleService> | undefined,
|
||||
) => ServiceMock<RootLifecycleService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export function rootLogger(options?: rootLogger.Options): LoggerService;
|
||||
@@ -98,11 +133,19 @@ export namespace mockServices {
|
||||
factory: (
|
||||
options?: Options | undefined,
|
||||
) => ServiceFactory<LoggerService, 'root'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<RootLoggerService> | undefined,
|
||||
) => ServiceMock<RootLoggerService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace scheduler {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<SchedulerService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<SchedulerService> | undefined,
|
||||
) => ServiceMock<SchedulerService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export function tokenManager(): TokenManagerService;
|
||||
@@ -110,14 +153,34 @@ export namespace mockServices {
|
||||
export namespace tokenManager {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<TokenManagerService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<TokenManagerService> | undefined,
|
||||
) => ServiceMock<TokenManagerService>;
|
||||
}
|
||||
// (undocumented)
|
||||
export namespace urlReader {
|
||||
const // (undocumented)
|
||||
factory: () => ServiceFactory<UrlReaderService, 'plugin'>;
|
||||
const // (undocumented)
|
||||
mock: (
|
||||
partialImpl?: Partial<UrlReaderService> | undefined,
|
||||
) => ServiceMock<UrlReaderService>;
|
||||
}
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export type ServiceMock<TService> = {
|
||||
factory: ServiceFactory<TService>;
|
||||
} & {
|
||||
[Key in keyof TService]: TService[Key] extends (
|
||||
this: infer This,
|
||||
...args: infer Args
|
||||
) => infer Return
|
||||
? TService[Key] & jest.MockInstance<Return, Args, This>
|
||||
: TService[Key];
|
||||
};
|
||||
|
||||
// @public
|
||||
export function setupRequestMockHandlers(worker: {
|
||||
listen: (t: any) => void;
|
||||
|
||||
@@ -57,6 +57,9 @@
|
||||
"testcontainers": "^8.1.2",
|
||||
"uuid": "^8.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/jest": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "workspace:^",
|
||||
"@types/supertest": "^2.0.8",
|
||||
|
||||
@@ -13,4 +13,4 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
export { mockServices } from './mockServices';
|
||||
export { mockServices, type ServiceMock } from './mockServices';
|
||||
|
||||
@@ -40,6 +40,7 @@ import { JsonObject } from '@backstage/types';
|
||||
import { MockIdentityService } from './MockIdentityService';
|
||||
import { MockRootLoggerService } from './MockRootLoggerService';
|
||||
|
||||
/** @internal */
|
||||
function simpleFactory<
|
||||
TService,
|
||||
TScope extends 'root' | 'plugin',
|
||||
@@ -57,6 +58,44 @@ function simpleFactory<
|
||||
})) as (...options: TOptions) => ServiceFactory<TService, any>;
|
||||
}
|
||||
|
||||
/** @public */
|
||||
export type ServiceMock<TService> = {
|
||||
factory: ServiceFactory<TService>;
|
||||
} & {
|
||||
[Key in keyof TService]: TService[Key] extends (
|
||||
this: infer This,
|
||||
...args: infer Args
|
||||
) => infer Return
|
||||
? TService[Key] & jest.MockInstance<Return, Args, This>
|
||||
: TService[Key];
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
function simpleMock<TService>(
|
||||
ref: ServiceRef<TService, any>,
|
||||
mockFactory: () => jest.Mocked<TService>,
|
||||
): (partialImpl?: Partial<TService>) => ServiceMock<TService> {
|
||||
return partialImpl => {
|
||||
const mock = mockFactory();
|
||||
if (partialImpl) {
|
||||
for (const [key, impl] of Object.entries(partialImpl)) {
|
||||
if (typeof impl === 'function') {
|
||||
(mock as any)[key].mockImplementation(impl);
|
||||
} else {
|
||||
(mock as any)[key] = impl;
|
||||
}
|
||||
}
|
||||
}
|
||||
return Object.assign(mock, {
|
||||
factory: createServiceFactory({
|
||||
service: ref,
|
||||
deps: {},
|
||||
factory: () => mock,
|
||||
})(),
|
||||
}) as ServiceMock<TService>;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
@@ -79,6 +118,13 @@ export namespace mockServices {
|
||||
};
|
||||
|
||||
export const factory = simpleFactory(coreServices.rootLogger, rootLogger);
|
||||
export const mock = simpleMock(coreServices.rootLogger, () => ({
|
||||
child: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
error: jest.fn(),
|
||||
info: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
}));
|
||||
}
|
||||
|
||||
export function tokenManager(): TokenManagerService {
|
||||
@@ -98,6 +144,10 @@ export namespace mockServices {
|
||||
coreServices.tokenManager,
|
||||
tokenManager,
|
||||
);
|
||||
export const mock = simpleMock(coreServices.tokenManager, () => ({
|
||||
authenticate: jest.fn(),
|
||||
getToken: jest.fn(),
|
||||
}));
|
||||
}
|
||||
|
||||
export function identity(): IdentityService {
|
||||
@@ -105,6 +155,9 @@ export namespace mockServices {
|
||||
}
|
||||
export namespace identity {
|
||||
export const factory = simpleFactory(coreServices.identity, identity);
|
||||
export const mock = simpleMock(coreServices.identity, () => ({
|
||||
getIdentity: jest.fn(),
|
||||
}));
|
||||
}
|
||||
|
||||
// TODO(Rugvip): Not all core services have implementations available here yet.
|
||||
@@ -112,29 +165,71 @@ export namespace mockServices {
|
||||
// re-implement functioning mock versions here.
|
||||
export namespace cache {
|
||||
export const factory = cacheServiceFactory;
|
||||
export const mock = simpleMock(coreServices.cache, () => ({
|
||||
delete: jest.fn(),
|
||||
get: jest.fn(),
|
||||
set: jest.fn(),
|
||||
withOptions: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace database {
|
||||
export const factory = databaseServiceFactory;
|
||||
export const mock = simpleMock(coreServices.database, () => ({
|
||||
getClient: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace httpRouter {
|
||||
export const factory = httpRouterServiceFactory;
|
||||
export const mock = simpleMock(coreServices.httpRouter, () => ({
|
||||
use: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace lifecycle {
|
||||
export const factory = lifecycleServiceFactory;
|
||||
export const mock = simpleMock(coreServices.lifecycle, () => ({
|
||||
addShutdownHook: jest.fn(),
|
||||
addStartupHook: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace logger {
|
||||
export const factory = loggerServiceFactory;
|
||||
export const mock = simpleMock(coreServices.logger, () => ({
|
||||
child: jest.fn(),
|
||||
debug: jest.fn(),
|
||||
error: jest.fn(),
|
||||
info: jest.fn(),
|
||||
warn: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace permissions {
|
||||
export const factory = permissionsServiceFactory;
|
||||
export const mock = simpleMock(coreServices.permissions, () => ({
|
||||
authorize: jest.fn(),
|
||||
authorizeConditional: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace rootLifecycle {
|
||||
export const factory = rootLifecycleServiceFactory;
|
||||
export const mock = simpleMock(coreServices.rootLifecycle, () => ({
|
||||
addShutdownHook: jest.fn(),
|
||||
addStartupHook: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace scheduler {
|
||||
export const factory = schedulerServiceFactory;
|
||||
export const mock = simpleMock(coreServices.scheduler, () => ({
|
||||
createScheduledTaskRunner: jest.fn(),
|
||||
getScheduledTasks: jest.fn(),
|
||||
scheduleTask: jest.fn(),
|
||||
triggerTask: jest.fn(),
|
||||
}));
|
||||
}
|
||||
export namespace urlReader {
|
||||
export const factory = urlReaderServiceFactory;
|
||||
export const mock = simpleMock(coreServices.urlReader, () => ({
|
||||
readTree: jest.fn(),
|
||||
readUrl: jest.fn(),
|
||||
search: jest.fn(),
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
+6
-23
@@ -14,15 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getVoidLogger } from '@backstage/backend-common';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
@@ -40,12 +32,12 @@ describe('catalogModuleAwsS3EntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -66,16 +58,7 @@ describe('catalogModuleAwsS3EntityProvider', () => {
|
||||
features: [
|
||||
catalogModuleAwsS3EntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory(() => ({
|
||||
service: coreServices.logger,
|
||||
deps: {},
|
||||
factory: getVoidLogger,
|
||||
}))(),
|
||||
createServiceFactory(() => ({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: () => scheduler,
|
||||
}))(),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
@@ -39,12 +32,12 @@ describe('catalogModuleAzureDevOpsEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -69,11 +62,7 @@ describe('catalogModuleAzureDevOpsEntityProvider', () => {
|
||||
catalogModuleAzureDevOpsEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory(() => ({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
})),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { startTestBackend, mockServices } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { eventsExtensionPoint } from '@backstage/plugin-events-node/alpha';
|
||||
@@ -46,12 +39,12 @@ describe('catalogModuleBitbucketCloudEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [
|
||||
@@ -75,11 +68,7 @@ describe('catalogModuleBitbucketCloudEntityProvider', () => {
|
||||
},
|
||||
},
|
||||
}),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { catalogModuleBitbucketServerEntityProvider } from './catalogModuleBitbucketServerEntityProvider';
|
||||
@@ -39,12 +32,12 @@ describe('catalogModuleBitbucketServerEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -73,11 +66,7 @@ describe('catalogModuleBitbucketServerEntityProvider', () => {
|
||||
catalogModuleBitbucketServerEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
@@ -39,12 +32,12 @@ describe('catalogModuleGerritEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -79,11 +72,7 @@ describe('catalogModuleGerritEntityProvider', () => {
|
||||
catalogModuleGerritEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,19 +14,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
import { catalogModuleGithubEntityProvider } from './catalogModuleGithubEntityProvider';
|
||||
import { GithubEntityProvider } from '../providers/GithubEntityProvider';
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
|
||||
describe('catalogModuleGithubEntityProvider', () => {
|
||||
it('should register provider at the catalog extension point', async () => {
|
||||
@@ -39,12 +32,12 @@ describe('catalogModuleGithubEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -65,11 +58,7 @@ describe('catalogModuleGithubEntityProvider', () => {
|
||||
features: [
|
||||
catalogModuleGithubEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
@@ -39,12 +32,12 @@ describe('catalogModuleGitlabDiscoveryEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
integrations: {
|
||||
@@ -78,11 +71,7 @@ describe('catalogModuleGitlabDiscoveryEntityProvider', () => {
|
||||
catalogModuleGitlabDiscoveryEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
mockServices.logger.factory(),
|
||||
createServiceFactory({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
}),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-13
@@ -14,12 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createBackendModule,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { createBackendModule } from '@backstage/backend-plugin-api';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { IncrementalEntityProvider } from '../types';
|
||||
import {
|
||||
@@ -40,18 +36,15 @@ describe('catalogModuleIncrementalIngestionEntityProvider', () => {
|
||||
};
|
||||
|
||||
const addEntityProvider = jest.fn();
|
||||
const httpRouterUse = jest.fn();
|
||||
|
||||
const httpRouterMock = mockServices.httpRouter.mock();
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [
|
||||
[catalogProcessingExtensionPoint, { addEntityProvider }],
|
||||
],
|
||||
features: [
|
||||
createServiceFactory({
|
||||
service: coreServices.httpRouter,
|
||||
deps: {},
|
||||
factory: () => ({ use: httpRouterUse }),
|
||||
}),
|
||||
httpRouterMock.factory,
|
||||
catalogModuleIncrementalIngestionEntityProvider(),
|
||||
createBackendModule({
|
||||
pluginId: 'catalog',
|
||||
@@ -79,6 +72,6 @@ describe('catalogModuleIncrementalIngestionEntityProvider', () => {
|
||||
expect(addEntityProvider.mock.calls[0][0].getProviderName()).toBe(
|
||||
'provider1',
|
||||
);
|
||||
expect(httpRouterUse).toHaveBeenCalledTimes(1);
|
||||
expect(httpRouterMock.use).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { Duration } from 'luxon';
|
||||
@@ -39,12 +32,12 @@ describe('catalogModuleMicrosoftGraphOrgEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -70,11 +63,7 @@ describe('catalogModuleMicrosoftGraphOrgEntityProvider', () => {
|
||||
features: [
|
||||
catalogModuleMicrosoftGraphOrgEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory(() => ({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
})),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+6
-17
@@ -14,14 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import {
|
||||
PluginTaskScheduler,
|
||||
TaskScheduleDefinition,
|
||||
} from '@backstage/backend-tasks';
|
||||
import { TaskScheduleDefinition } from '@backstage/backend-tasks';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';
|
||||
import { catalogModulePuppetDbEntityProvider } from './catalogModulePuppetDbEntityProvider';
|
||||
@@ -38,12 +31,12 @@ describe('catalogModulePuppetDbEntityProvider', () => {
|
||||
},
|
||||
};
|
||||
const runner = jest.fn();
|
||||
const scheduler = {
|
||||
createScheduledTaskRunner: (schedule: TaskScheduleDefinition) => {
|
||||
const scheduler = mockServices.scheduler.mock({
|
||||
createScheduledTaskRunner(schedule) {
|
||||
usedSchedule = schedule;
|
||||
return runner;
|
||||
return { run: runner };
|
||||
},
|
||||
} as unknown as PluginTaskScheduler;
|
||||
});
|
||||
|
||||
const config = {
|
||||
catalog: {
|
||||
@@ -64,11 +57,7 @@ describe('catalogModulePuppetDbEntityProvider', () => {
|
||||
features: [
|
||||
catalogModulePuppetDbEntityProvider(),
|
||||
mockServices.rootConfig.factory({ data: config }),
|
||||
createServiceFactory(() => ({
|
||||
deps: {},
|
||||
service: coreServices.scheduler,
|
||||
factory: async () => scheduler,
|
||||
})),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
+2
-13
@@ -14,11 +14,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
coreServices,
|
||||
createServiceFactory,
|
||||
SchedulerService,
|
||||
} from '@backstage/backend-plugin-api';
|
||||
import { mockServices, startTestBackend } from '@backstage/backend-test-utils';
|
||||
import { eventsExtensionPoint } from '@backstage/plugin-events-node/alpha';
|
||||
import { TestEventBroker } from '@backstage/plugin-events-backend-test-utils';
|
||||
@@ -34,9 +29,7 @@ describe('eventsModuleAwsSqsConsumingEventPublisher', () => {
|
||||
},
|
||||
};
|
||||
|
||||
const scheduler = {
|
||||
scheduleTask: jest.fn(),
|
||||
} as unknown as SchedulerService;
|
||||
const scheduler = mockServices.scheduler.mock();
|
||||
|
||||
await startTestBackend({
|
||||
extensionPoints: [[eventsExtensionPoint, extensionPoint]],
|
||||
@@ -68,11 +61,7 @@ describe('eventsModuleAwsSqsConsumingEventPublisher', () => {
|
||||
},
|
||||
},
|
||||
}),
|
||||
createServiceFactory({
|
||||
service: coreServices.scheduler,
|
||||
deps: {},
|
||||
factory: () => scheduler,
|
||||
}),
|
||||
scheduler.factory,
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user