diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.spec.js b/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.spec.js index 6a0f59ac6..4ca3183bc 100644 --- a/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.spec.js +++ b/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.spec.js @@ -1,8 +1,9 @@ import { flushPromises, shallowMount } from '@vue/test-utils'; import FaqSuggestionReviewDialog from './FaqSuggestionReviewDialog.vue'; -const { dispatch, uiFlags } = vi.hoisted(() => ({ +const { dispatch, push, uiFlags } = vi.hoisted(() => ({ dispatch: vi.fn(), + push: vi.fn(), uiFlags: { value: { fetchingItem: false, @@ -24,10 +25,11 @@ vi.mock('vue-i18n', () => ({ })); vi.mock('vue-router', () => ({ - useRouter: () => ({ push: vi.fn() }), + useRouter: () => ({ push }), })); const DialogStub = { + methods: { close: vi.fn() }, template: `
@@ -71,4 +73,42 @@ describe('FaqSuggestionReviewDialog', () => { 'CAPTAIN.FAQ_SUGGESTIONS.DETAILS.NO_SOURCES' ); }); + + it('opens source conversations using their display ID', async () => { + dispatch.mockResolvedValueOnce({ + observations: [ + { + id: 1, + generated_question: 'How do I enable the feature?', + created_at: 1, + conversation: { id: 99, display_id: 42 }, + }, + ], + }); + + const wrapper = shallowMount(FaqSuggestionReviewDialog, { + props: { + suggestion: { + id: 1, + question: 'How do I enable the feature?', + answer: 'Turn it on in settings.', + source_count: 1, + assistant: { name: 'Support assistant' }, + language: 'en', + }, + }, + global: { + mocks: { $t: key => key }, + stubs: { Dialog: DialogStub }, + }, + }); + + await flushPromises(); + await wrapper.get('section button').trigger('click'); + + expect(push).toHaveBeenCalledWith({ + name: 'inbox_conversation', + params: { conversation_id: 42 }, + }); + }); }); diff --git a/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.vue b/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.vue index 256448240..c458f59b0 100644 --- a/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.vue +++ b/app/javascript/dashboard/components-next/captain/pageComponents/response/FaqSuggestionReviewDialog.vue @@ -220,7 +220,7 @@ defineExpose({ dialogRef }); :key="observation.id" type="button" class="flex w-full flex-col gap-1.5 rounded-lg border border-n-weak bg-n-solid-2 p-3 text-start transition-colors hover:border-n-brand" - @click="openConversation(observation.conversation.id)" + @click="openConversation(observation.conversation.display_id)" > diff --git a/enterprise/app/views/api/v1/models/captain/_faq_observation.json.jbuilder b/enterprise/app/views/api/v1/models/captain/_faq_observation.json.jbuilder index cdcd63a70..50dc36d7f 100644 --- a/enterprise/app/views/api/v1/models/captain/_faq_observation.json.jbuilder +++ b/enterprise/app/views/api/v1/models/captain/_faq_observation.json.jbuilder @@ -5,6 +5,6 @@ json.language resource.language json.status resource.status json.created_at resource.created_at.to_i json.conversation do - json.id resource.conversation.display_id + json.id resource.conversation.id json.display_id resource.conversation.display_id end