Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixes #2768 - Unable to process email where group has option follow_u…
…p_possible: 'new_ticket' and arriving email has no subject header.
- Loading branch information
1 parent
69600b0
commit 2ab17db
Showing
3 changed files
with
90 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
spec/models/channel/filter/follow_up_possible_check_spec.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,37 @@ | |||
require 'rails_helper' | |||
|
|||
RSpec.describe Channel::Filter::FollowUpPossibleCheck, type: :channel_filter do | |||
|
|||
context 'new_ticket follow_up_possible for group' do | |||
|
|||
let(:group) { create(:group, follow_up_possible: 'new_ticket') } | |||
|
|||
context 'ticket closed' do | |||
let(:ticket) { create(:ticket, group: group, state: Ticket::State.find_by(name: 'closed')) } | |||
|
|||
it 'prevents follow up' do | |||
mail = { | |||
'x-zammad-ticket-id': ticket.id | |||
} | |||
|
|||
filter(mail) | |||
|
|||
expect(mail[:'x-zammad-ticket-id']).not_to eq(ticket.id) | |||
end | |||
end | |||
|
|||
context 'ticket open' do | |||
let(:ticket) { create(:ticket, group: group, state: Ticket::State.find_by(name: 'new')) } | |||
|
|||
it 'allows follow up' do | |||
mail = { | |||
'x-zammad-ticket-id': ticket.id | |||
} | |||
|
|||
filter(mail) | |||
|
|||
expect(mail[:'x-zammad-ticket-id']).to eq(ticket.id) | |||
end | |||
end | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,51 @@ | |||
require 'rails_helper' | |||
|
|||
RSpec.describe Ticket::Subject do | |||
let(:ticket) { create(:ticket) } | |||
|
|||
describe '.subject_build' do | |||
it 'build subject based on new title' do | |||
expect(ticket.subject_build('other title')).to eq("other title [Ticket##{ticket.number}]") | |||
end | |||
it 'build subject based on new title with ticket_hook_position left' do | |||
Setting.set('ticket_hook_position', 'left') | |||
expect(ticket.subject_build('other title')).to eq("[Ticket##{ticket.number}] other title") | |||
end | |||
|
|||
it 'build subject based on new title without ticket_hook_position' do | |||
Setting.set('ticket_hook_position', '') | |||
expect(ticket.subject_build('other title')).to eq('other title') | |||
end | |||
it 'build subject based with forward argument' do | |||
expect(ticket.subject_build('other title', 'forward')).to eq("FWD: other title [Ticket##{ticket.number}]") | |||
end | |||
it 'build subject based with reply argument' do | |||
expect(ticket.subject_build('other title', 'reply')).to eq("RE: other title [Ticket##{ticket.number}]") | |||
end | |||
end | |||
|
|||
describe '.subject_clean' do | |||
it 'cleanup subject with undefined string' do | |||
expect(ticket.subject_clean(nil)).to eq('') | |||
end | |||
it 'cleanup subject with empty string' do | |||
expect(ticket.subject_clean('')).to eq('') | |||
end | |||
it 'cleanup subject with long string which need to be truncated by [...]' do | |||
expect(ticket.subject_clean('123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890')).to eq('12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890[...]') | |||
end | |||
it 'cleanup subject with regular ticket#' do | |||
expect(ticket.subject_clean("something [Ticket##{ticket.number}]")).to eq('something') | |||
end | |||
it 'cleanup subject with regular ticket# multiple time' do | |||
expect(ticket.subject_clean("[Ticket##{ticket.number}] [Ticket##{ticket.number}] something [Ticket##{ticket.number}]")).to eq('something') | |||
end | |||
it 'cleanup subject with foreign ticket#' do | |||
expect(ticket.subject_clean('something [Ticket#123456]')).to eq('something [Ticket#123456]') | |||
end | |||
it 'cleanup subject with some reply signs' do | |||
expect(ticket.subject_clean('RE: RE: Re[5]: something [Ticket#123456]')).to eq('something [Ticket#123456]') | |||
end | |||
end | |||
|
|||
end |