refactor(test-utils): rename ServiceFactoryTester.get to ServiceFactoryTestest.getSubject

Signed-off-by: Camila Belo <camilaibs@gmail.com>
This commit is contained in:
Camila Belo
2024-07-10 11:50:52 +02:00
parent 30b53de364
commit 2f991786a3
9 changed files with 63 additions and 41 deletions
@@ -373,6 +373,7 @@ export class ServiceFactoryTester<TService, TScope extends 'root' | 'plugin'> {
| (() => ServiceFactory<TService, TScope>),
options?: ServiceFactoryTesterOptions,
): ServiceFactoryTester<TService, TScope>;
// @deprecated
get(
...args: 'root' extends TScope ? [] : [pluginId?: string]
): Promise<TService>;
@@ -380,6 +381,9 @@ export class ServiceFactoryTester<TService, TScope extends 'root' | 'plugin'> {
service: ServiceRef<TGetService, TGetScope>,
...args: 'root' extends TGetScope ? [] : [pluginId?: string]
): Promise<TGetService>;
getSubject(
...args: 'root' extends TScope ? [] : [pluginId?: string]
): Promise<TService>;
}
// @public
@@ -56,34 +56,34 @@ describe('ServiceFactoryTester', () => {
it('should test a root service factory', async () => {
const tester = ServiceFactoryTester.from(rootFactory);
await expect(tester.get()).resolves.toBe('root');
await expect(tester.getSubject()).resolves.toBe('root');
});
it('should test a plugin service factory', async () => {
const tester = ServiceFactoryTester.from(pluginFactory);
await expect(tester.get('x')).resolves.toBe('x-plugin');
await expect(tester.get('y')).resolves.toBe('y-plugin');
await expect(tester.get('z')).resolves.toBe('z-plugin');
await expect(tester.getSubject('x')).resolves.toBe('x-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-plugin');
await expect(tester.getSubject('z')).resolves.toBe('z-plugin');
});
it('should test a plugin service factory with root context', async () => {
const tester = ServiceFactoryTester.from(sharedPluginFactory);
await expect(tester.get('x')).resolves.toBe('x-1-plugin');
await expect(tester.get('y')).resolves.toBe('y-2-plugin');
await expect(tester.get('y')).resolves.toBe('y-2-plugin');
await expect(tester.get('y')).resolves.toBe('y-2-plugin');
await expect(tester.get('z')).resolves.toBe('z-3-plugin');
await expect(tester.getSubject('x')).resolves.toBe('x-1-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-2-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-2-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-2-plugin');
await expect(tester.getSubject('z')).resolves.toBe('z-3-plugin');
const tester2 = ServiceFactoryTester.from(sharedPluginFactory);
await expect(tester2.get('z')).resolves.toBe('z-1-plugin');
await expect(tester2.get('y')).resolves.toBe('y-2-plugin');
await expect(tester2.get('x')).resolves.toBe('x-3-plugin');
await expect(tester2.get('x')).resolves.toBe('x-3-plugin');
await expect(tester2.get('y')).resolves.toBe('y-2-plugin');
await expect(tester2.get('z')).resolves.toBe('z-1-plugin');
await expect(tester2.getSubject('z')).resolves.toBe('z-1-plugin');
await expect(tester2.getSubject('y')).resolves.toBe('y-2-plugin');
await expect(tester2.getSubject('x')).resolves.toBe('x-3-plugin');
await expect(tester2.getSubject('x')).resolves.toBe('x-3-plugin');
await expect(tester2.getSubject('y')).resolves.toBe('y-2-plugin');
await expect(tester2.getSubject('z')).resolves.toBe('z-1-plugin');
});
it('should use dependencies', async () => {
@@ -96,7 +96,7 @@ describe('ServiceFactoryTester', () => {
{ dependencies: [rootFactory, pluginFactory()] },
);
await expect(tester.get('x')).resolves.toBe('root, x-plugin');
await expect(tester.getSubject('x')).resolves.toBe('root, x-plugin');
});
it('should use dependencies with root context', async () => {
@@ -109,11 +109,11 @@ describe('ServiceFactoryTester', () => {
{ dependencies: [sharedPluginFactory(), pluginFactory] },
);
await expect(tester.get('x')).resolves.toBe('x-1-plugin, x-plugin');
await expect(tester.get('y')).resolves.toBe('y-2-plugin, y-plugin');
await expect(tester.get('y')).resolves.toBe('y-2-plugin, y-plugin');
await expect(tester.get('y')).resolves.toBe('y-2-plugin, y-plugin');
await expect(tester.get('z')).resolves.toBe('z-3-plugin, z-plugin');
await expect(tester.getSubject('x')).resolves.toBe('x-1-plugin, x-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-2-plugin, y-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-2-plugin, y-plugin');
await expect(tester.getSubject('y')).resolves.toBe('y-2-plugin, y-plugin');
await expect(tester.getSubject('z')).resolves.toBe('z-3-plugin, z-plugin');
});
it('should prioritize the subject implementation', async () => {
@@ -126,7 +126,7 @@ describe('ServiceFactoryTester', () => {
{ dependencies: [rootFactory] },
);
await expect(tester.get()).resolves.toBe('other-root');
await expect(tester.getSubject()).resolves.toBe('other-root');
});
it('should throw on missing dependencies', async () => {
@@ -138,7 +138,7 @@ describe('ServiceFactoryTester', () => {
}),
);
await expect(tester.get('x')).rejects.toThrow(
await expect(tester.getSubject('x')).rejects.toThrow(
"Failed to instantiate service 'b' for 'x' because the following dependent services are missing: 'a'",
);
});
@@ -79,6 +79,17 @@ export class ServiceFactoryTester<TService, TScope extends 'root' | 'plugin'> {
this.#registry = registry;
}
/**
* Returns the service instance for the subject.
*
* @deprecated Use `getSubject` instead.
*/
async get(
...args: 'root' extends TScope ? [] : [pluginId?: string]
): Promise<TService> {
return this.getSubject(...args);
}
/**
* Returns the service instance for the subject.
*
@@ -89,7 +100,7 @@ export class ServiceFactoryTester<TService, TScope extends 'root' | 'plugin'> {
*
* By default the plugin ID 'test' is used.
*/
async get(
async getSubject(
...args: 'root' extends TScope ? [] : [pluginId?: string]
): Promise<TService> {
const [pluginId] = args;