Skip to content

Commit 69a8695

Browse files
Fix collaborators displays under custom tab on left navigation when saved object permission is disabled (#9734)
* Fix collaborators displays when saved object permission is disabled Signed-off-by: Owen Wang <[email protected]> * Changeset file for PR #9734 created/updated * Address comments Signed-off-by: Owen Wang <[email protected]> --------- Signed-off-by: Owen Wang <[email protected]> Co-authored-by: opensearch-changeset-bot[bot] <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com>
1 parent 25e040f commit 69a8695

File tree

3 files changed

+88
-3
lines changed

3 files changed

+88
-3
lines changed

changelogs/fragments/9734.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
fix:
2+
- Fix collaborators displays under custom tab on navigation when saved object permission is disabled ([#9734](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/9734))

src/plugins/workspace/public/plugin.test.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,88 @@ describe('Workspace plugin', () => {
556556
expect(coreStart.chrome.globalSearch.unregisterSearchCommand).toBeCalledWith('pagesSearch');
557557
});
558558

559+
it('#start should update collaboratorsAppUpdater correctly if permission enabled', async () => {
560+
const workspacePlugin = new WorkspacePlugin();
561+
const setupMock = getSetupMock();
562+
const coreStart = coreMock.createStart();
563+
await workspacePlugin.setup(setupMock, {});
564+
565+
const appUpdaterSpy = jest.spyOn((workspacePlugin as any).collaboratorsAppUpdater$, 'next');
566+
567+
const startMock = {
568+
...coreStart,
569+
chrome: {
570+
...coreStart.chrome,
571+
navGroup: {
572+
...coreStart.chrome.navGroup,
573+
getNavGroupEnabled: jest.fn().mockReturnValue(true),
574+
},
575+
},
576+
application: {
577+
...coreStart.application,
578+
capabilities: {
579+
...coreStart.application.capabilities,
580+
workspaces: {
581+
...coreStart.application.capabilities.workspaces,
582+
permissionEnabled: true,
583+
},
584+
},
585+
},
586+
};
587+
588+
workspacePlugin.start(startMock, getMockDependencies());
589+
590+
expect(appUpdaterSpy).toHaveBeenCalled();
591+
const updaterFn = appUpdaterSpy.mock.calls[0][0];
592+
const result = (updaterFn as any)();
593+
594+
expect(result).toStrictEqual({
595+
status: AppStatus.accessible,
596+
navLinkStatus: AppNavLinkStatus.visible,
597+
});
598+
});
599+
600+
it('#start should update collaboratorsAppUpdater correctly if permission disabled', async () => {
601+
const workspacePlugin = new WorkspacePlugin();
602+
const setupMock = getSetupMock();
603+
const coreStart = coreMock.createStart();
604+
await workspacePlugin.setup(setupMock, {});
605+
606+
const appUpdaterSpy = jest.spyOn((workspacePlugin as any).collaboratorsAppUpdater$, 'next');
607+
608+
const startMock = {
609+
...coreStart,
610+
chrome: {
611+
...coreStart.chrome,
612+
navGroup: {
613+
...coreStart.chrome.navGroup,
614+
getNavGroupEnabled: jest.fn().mockReturnValue(false),
615+
},
616+
},
617+
application: {
618+
...coreStart.application,
619+
capabilities: {
620+
...coreStart.application.capabilities,
621+
workspaces: {
622+
...coreStart.application.capabilities.workspaces,
623+
permissionEnabled: false,
624+
},
625+
},
626+
},
627+
};
628+
629+
workspacePlugin.start(startMock, getMockDependencies());
630+
631+
expect(appUpdaterSpy).toHaveBeenCalled();
632+
const updaterFn = appUpdaterSpy.mock.calls[0][0];
633+
const result = (updaterFn as any)();
634+
635+
expect(result).toStrictEqual({
636+
status: AppStatus.inaccessible,
637+
navLinkStatus: AppNavLinkStatus.hidden,
638+
});
639+
});
640+
559641
it('#stop should call unregisterNavGroupUpdater', async () => {
560642
const workspacePlugin = new WorkspacePlugin();
561643
const setupMock = getSetupMock();

src/plugins/workspace/public/plugin.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,9 +570,10 @@ export class WorkspacePlugin
570570
this.collaboratorsAppUpdater$.next(() => {
571571
return {
572572
status: isPermissionEnabled ? AppStatus.accessible : AppStatus.inaccessible,
573-
navLinkStatus: core.chrome.navGroup.getNavGroupEnabled()
574-
? AppNavLinkStatus.visible
575-
: AppNavLinkStatus.hidden,
573+
navLinkStatus:
574+
core.chrome.navGroup.getNavGroupEnabled() && isPermissionEnabled
575+
? AppNavLinkStatus.visible
576+
: AppNavLinkStatus.hidden,
576577
};
577578
});
578579

0 commit comments

Comments
 (0)