12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Gql::Mutations::User::Current::OutOfOffice, type: :graphql do
- let(:user) { create(:agent) }
- let(:mutation) do
- <<~GQL
- mutation userCurrentOutOfOffice($input: OutOfOfficeInput!) {
- userCurrentOutOfOffice(input: $input) {
- success
- errors {
- message
- field
- }
- }
- }
- GQL
- end
- let(:variables) do
- {
- input: {
- enabled: true,
- text: 'Out of office message',
- startAt: '2011-02-03',
- endAt: '2011-03-03',
- replacementId: gql.id(create(:agent))
- }
- }
- end
- def execute_graphql_query
- gql.execute(mutation, variables: variables)
- end
- context 'when user is not authenticated' do
- it 'returns an error' do
- expect(execute_graphql_query.error_message).to eq('Authentication required')
- end
- end
- context 'when user is authenticated', authenticated_as: :user do
- context 'with invalid settings' do
- let(:variables) do
- {
- input: {
- enabled: true,
- text: 'Out of office message',
- startAt: '2011-02-03',
- endAt: '2011-03-03',
- replacementId: nil
- }
- }
- end
- it 'returns an error' do
- execute_graphql_query
- expect(gql.result.data).to include('errors' => include(
- include(
- 'field' => 'outOfOfficeReplacementId',
- 'message' => 'This field can\'t be blank'
- )
- ))
- end
- end
- context 'with valid setting' do
- it 'updates user profile out of office input' do
- expect { execute_graphql_query }
- .to change { user.reload.preferences['out_of_office_text'] }
- .from(nil)
- .to('Out of office message')
- end
- end
- end
- end
|