Skip to content

Commit

Permalink
more test fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
eokoneyo committed Mar 3, 2025
1 parent 59a28c9 commit 715606a
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 21 deletions.
15 changes: 7 additions & 8 deletions src/platform/plugins/shared/share/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,7 @@ export class SharePlugin
registrations.setup({ analytics });

return {
registerShareIntegration: this.shareRegistry.registerShareIntegration.bind(
this.shareRegistry
),
register: this.shareRegistry.register.bind(this.shareRegistry),
...this.shareRegistry.setup(),
url: this.url,
navigate: (options: RedirectOptions) => this.redirectManager!.navigate(options),
setAnonymousAccessServiceProvider: (provider: () => AnonymousAccessServiceContract) => {
Expand All @@ -149,13 +146,15 @@ export class SharePlugin
public start(core: CoreStart): SharePublicStart {
const isServerless = this.initializerContext.env.packageInfo.buildFlavor === 'serverless';

const { resolveShareItemsForShareContext } = this.shareRegistry.start({
urlService: this.url!,
anonymousAccessServiceProvider: () => this.anonymousAccessServiceProvider!(),
});

const sharingContextMenuStart = this.shareContextMenu.start({
core,
isServerless,
resolveShareItemsForShareContext: this.shareRegistry.start({
urlService: this.url!,
anonymousAccessServiceProvider: () => this.anonymousAccessServiceProvider!(),
}),
resolveShareItemsForShareContext,
});

return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,21 @@ import {
ShareMenuRegistrySetup,
ShareMenuRegistryStart,
} from './share_menu_registry';
import { ShareContext } from '../types';
import { ShareContext, ShareConfigs } from '../types';

const createSetupMock = (): jest.Mocked<ShareMenuRegistrySetup> => {
const setup = {
register: jest.fn(),
registerShareIntegration: jest.fn(),
};
return setup;
};

const createStartMock = (): jest.Mocked<ShareMenuRegistryStart> => {
const start = {
getShareMenuItems: jest.fn((_props: ShareContext) => [] as ShareMenuItemV2[]),
resolveShareItemsForShareContext: jest.fn(
(_props: ShareContext & { isServerless: boolean }) => [] as ShareConfigs[]
),
};
return start;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,20 @@ export class ShareRegistry implements ShareRegistryPublicApi {
[this.globalMarker]: new Map(),
};

setup() {
return {
register: this.register.bind(this),
registerShareIntegration: this.registerShareIntegration.bind(this),
};
}

start({ urlService, anonymousAccessServiceProvider }: ShareRegistryApiStart) {
this.urlService = urlService;
this.anonymousAccessServiceProvider = anonymousAccessServiceProvider;

return this.resolveShareItemsForShareContext.bind(this);
return {
resolveShareItemsForShareContext: this.resolveShareItemsForShareContext.bind(this),
};
}

private registerShareIntentAction(
Expand Down Expand Up @@ -92,7 +101,7 @@ export class ShareRegistry implements ShareRegistryPublicApi {
/**
* @description provides an escape hatch to support allowing legacy share menu items to be registered
*/
register(value: ShareMenuProviderLegacy) {
private register(value: ShareMenuProviderLegacy) {
// implement backwards compatibility for the share plugin
this.registerShareIntentAction(this.globalMarker, {
shareType: 'legacy',
Expand All @@ -101,7 +110,7 @@ export class ShareRegistry implements ShareRegistryPublicApi {
});
}

registerShareIntegration<I extends ShareIntegration>(
private registerShareIntegration<I extends ShareIntegration>(
...args: [string, Omit<I, 'shareType'>] | [Omit<I, 'shareType'>]
): void {
const [shareObject, shareActionIntent] =
Expand All @@ -125,7 +134,7 @@ export class ShareRegistry implements ShareRegistryPublicApi {
return globalOptions.concat(Array.from(shareContextMap.values()));
}

resolveShareItemsForShareContext({
private resolveShareItemsForShareContext({
objectType,
isServerless,
...shareContext
Expand Down Expand Up @@ -164,3 +173,6 @@ export class ShareRegistry implements ShareRegistryPublicApi {
});
}
}

export type ShareMenuRegistryStart = ReturnType<ShareRegistry['start']>;
export type ShareMenuRegistrySetup = ReturnType<ShareRegistry['setup']>;
23 changes: 16 additions & 7 deletions src/platform/plugins/shared/share/public/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,15 +195,24 @@ export interface SharingData {
};
}

export abstract class ShareRegistryPublicApi {
abstract start(
args: ShareRegistryApiStart
): ShareRegistryPublicApi['resolveShareItemsForShareContext'];
export interface ShareRegistryInternalApi {
registerShareIntegration<I extends ShareIntegration>(shareObject: string, arg: I): void;
registerShareIntegration<I extends ShareIntegration>(arg: I): void;

resolveShareItemsForShareContext(args: ShareContext): ShareConfigs[];
}

abstract registerShareIntegration<I extends ShareIntegration>(shareObject: string, arg: I): void;
abstract registerShareIntegration<I extends ShareIntegration>(arg: I): void;
export abstract class ShareRegistryPublicApi {
abstract setup(): {
/**
* @description registers a share menu provider for a specific object type
*/
registerShareIntegration: ShareRegistryInternalApi['registerShareIntegration'];
};

abstract resolveShareItemsForShareContext(args: ShareContext): ShareConfigs[];
abstract start(args: ShareRegistryApiStart): {
resolveShareItemsForShareContext: ShareRegistryInternalApi['resolveShareItemsForShareContext'];
};
}

export type BrowserUrlService = UrlService<
Expand Down

0 comments on commit 715606a

Please sign in to comment.