1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Gql::Queries::Mention::Suggestions, searchindex: true, type: :graphql do
- context 'when searching' do
- let(:agent) { create(:agent, groups: [group]) }
- let(:customer) { create(:customer) }
- let(:group) { create(:group) }
- let(:query) do
- <<~QUERY
- query mentionSuggestions($query: String!, $groupId: ID!) {
- mentionSuggestions(query: $query, groupId: $groupId) {
- id
- fullname
- email
- }
- }
- QUERY
- end
- let!(:variables) { { query: search_query, groupId: Gql::ZammadSchema.id_from_object(group) } }
- before do
- searchindex_model_reload([User])
- gql.execute(query, variables: variables)
- end
- shared_examples 'returns the correct users' do
- it 'has data' do
- expect(gql.result.data).to include(expected_result)
- end
- end
- context 'with authenticated session', authenticated_as: :agent do
- let(:search_query) { agent.firstname[0..2] }
- let(:expected_result) do
- {
- 'id' => Gql::ZammadSchema.id_from_object(agent),
- 'fullname' => agent.fullname,
- 'email' => agent.email,
- }
- end
- include_examples 'returns the correct users'
- context 'with no results' do
- let(:search_query) { 'foo' }
- it 'has no data' do
- expect(gql.result.data).to be_empty
- end
- end
- context 'with an agent that has no email' do
- let(:agent) { create(:agent, groups: [group], email: nil) }
- include_examples 'returns the correct users'
- end
- context 'with an agent that has no firstname/lastname' do
- let(:agent) { create(:agent, groups: [group], firstname: nil, lastname: nil, email: 'foo@zammad.com') }
- let(:search_query) { 'foo' }
- include_examples 'returns the correct users'
- end
- end
- context 'with a customer', authenticated_as: :customer do
- let(:search_query) { agent.firstname[0..2] }
- it_behaves_like 'graphql responds with error if unauthenticated'
- end
- end
- end
|