Skip to content

Commit 9e7d7c5

Browse files
committed
[Security assistant] Fix System Prompt updates from Conversations tab (#234812)
(cherry picked from commit 540e69f)
1 parent 59d4f3a commit 9e7d7c5

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import {
2727
import { DataViewsContract } from '@kbn/data-views-plugin/public';
2828
import { SettingsStart } from '@kbn/core-ui-settings-browser';
2929

30+
const mockSetSelectedSettingsTab = jest.fn();
31+
3032
const mockContext = {
3133
basePromptContexts: MOCK_QUICK_PROMPTS,
3234
http: {
@@ -36,7 +38,11 @@ const mockContext = {
3638
assistantAvailability: {
3739
isAssistantEnabled: true,
3840
isAssistantManagementEnabled: true,
41+
hasConnectorsAllPrivilege: true,
3942
},
43+
selectedSettingsTab: null,
44+
setSelectedSettingsTab: mockSetSelectedSettingsTab,
45+
navigateToApp: jest.fn(),
4046
};
4147

4248
const mockDataViews = {
@@ -109,6 +115,34 @@ describe('AssistantSettingsManagement', () => {
109115
expect(queryByTestId(`bottom-bar`)).not.toBeInTheDocument();
110116
});
111117

118+
describe('useEffect behavior', () => {
119+
it('calls onTabChange and clears contextSettingsTab when contextSettingsTab is set', () => {
120+
const contextWithTab = {
121+
...mockContext,
122+
selectedSettingsTab: SYSTEM_PROMPTS_TAB,
123+
};
124+
(useAssistantContext as jest.Mock).mockImplementation(() => contextWithTab);
125+
126+
render(<AssistantSettingsManagement {...testProps} />, { wrapper });
127+
128+
expect(onTabChange).toHaveBeenCalledWith(SYSTEM_PROMPTS_TAB);
129+
expect(mockSetSelectedSettingsTab).toHaveBeenCalledWith(null);
130+
});
131+
132+
it('does not call onTabChange when contextSettingsTab is null', () => {
133+
const contextWithoutTab = {
134+
...mockContext,
135+
selectedSettingsTab: null,
136+
};
137+
(useAssistantContext as jest.Mock).mockImplementation(() => contextWithoutTab);
138+
139+
render(<AssistantSettingsManagement {...testProps} />, { wrapper });
140+
141+
expect(onTabChange).not.toHaveBeenCalled();
142+
expect(mockSetSelectedSettingsTab).not.toHaveBeenCalled();
143+
});
144+
});
145+
112146
describe.each([
113147
CONNECTORS_TAB,
114148
ANONYMIZATION_TAB,

x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export const AssistantSettingsManagement: React.FC<Props> = React.memo(
5959
if (contextSettingsTab) {
6060
// contextSettingsTab can be selected from Conversations > System Prompts > Add System Prompt
6161
onTabChange?.(contextSettingsTab);
62+
setSelectedSettingsTab(null);
6263
}
6364
}, [onTabChange, contextSettingsTab, setSelectedSettingsTab]);
6465

0 commit comments

Comments
 (0)