123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Gql::Queries::KnowledgeBase::Answer::Suggestions, current_user_id: 1, type: :graphql do
- include KnowledgeBaseRichTextHelper
- context 'when searching' do
- let(:agent) { create(:agent) }
- let(:customer) { create(:customer) }
- let(:knowledge_base_answer) { create(:knowledge_base_answer, :published, :with_video, :with_image, :with_attachment) }
- let(:knowledge_base_answer_translation) { knowledge_base_answer.translation }
- let(:query) do
- <<~QUERY
- query knowledgeBaseAnswerSuggestions($query: String!) {
- knowledgeBaseAnswerSuggestions(query: $query) {
- id
- title
- categoryTreeTranslation {
- id
- title
- }
- content {
- body
- bodyPrepared
- hasAttachments
- }
- }
- }
- QUERY
- end
- let(:variables) { { query: search_query } }
- before do
- gql.execute(query, variables: variables)
- end
- context 'with authenticated session', authenticated_as: :agent do
- let(:search_query) { knowledge_base_answer_translation.title[0..2] }
- let(:category_translation) { knowledge_base_answer.category.translation_preferred(knowledge_base_answer_translation.kb_locale) }
- let(:expected_result) do
- [
- {
- 'id' => Gql::ZammadSchema.id_from_object(knowledge_base_answer_translation),
- 'title' => knowledge_base_answer_translation.title,
- 'categoryTreeTranslation' => [
- {
- 'id' => Gql::ZammadSchema.id_from_object(category_translation),
- 'title' => category_translation.title,
- },
- ],
- 'content' => {
- 'body' => knowledge_base_answer_translation.content.body,
- 'bodyPrepared' => prepare_rich_text(knowledge_base_answer_translation.content.body_with_urls),
- 'hasAttachments' => true,
- },
- }
- ]
- end
- it 'has data' do
- expect(gql.result.data).to eq(expected_result)
- end
- context 'with no results' do
- let(:search_query) { 'foo' }
- it 'has no data' do
- expect(gql.result.data).to be_empty
- end
- end
- end
- context 'with a customer', authenticated_as: :customer do
- let(:search_query) { knowledge_base_answer_translation.title[0..2] }
- it_behaves_like 'graphql responds with error if unauthenticated'
- end
- end
- end
|