Refactoring: Migrate email_process_follow_up_possible_test to RSpec
This commit is contained in:
parent
d3bbdd3b00
commit
b65a84f95e
2 changed files with 51 additions and 72 deletions
|
@ -91,12 +91,62 @@ RSpec.describe Channel::EmailParser, type: :model do
|
||||||
let(:ticket) { create(:ticket) }
|
let(:ticket) { create(:ticket) }
|
||||||
|
|
||||||
context 'when email subject contains ticket reference' do
|
context 'when email subject contains ticket reference' do
|
||||||
let(:raw_mail) { File.read(mail_file).sub(/(?<=^Subject: ).*$/, ticket_ref) }
|
let(:raw_mail) { File.read(mail_file).sub(/(?<=^Subject: ).*$/, ticket_ref) }
|
||||||
|
|
||||||
it 'adds message to ticket' do
|
it 'adds message to ticket' do
|
||||||
expect { described_class.new.process({}, raw_mail) }
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
.to change { ticket.articles.length }
|
.to change { ticket.articles.length }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'and ticket is closed' do
|
||||||
|
before { ticket.update(state: Ticket::State.find_by(name: 'closed')) }
|
||||||
|
|
||||||
|
it 'adds message to ticket' do
|
||||||
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
.to change { ticket.articles.length }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'but ticket group’s #follow_up_possible attribute is "new_ticket"' do
|
||||||
|
before { ticket.group.update(follow_up_possible: 'new_ticket') }
|
||||||
|
|
||||||
|
context 'and ticket is open' do
|
||||||
|
it 'still adds message to ticket' do
|
||||||
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
.to change { ticket.articles.length }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'and ticket is closed' do
|
||||||
|
before { ticket.update(state: Ticket::State.find_by(name: 'closed')) }
|
||||||
|
|
||||||
|
it 'creates a new ticket' do
|
||||||
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
.to change { Ticket.count }.by(1)
|
||||||
|
.and not_change { ticket.articles.length }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'and ticket is merged' do
|
||||||
|
before { ticket.update(state: Ticket::State.find_by(name: 'merged')) }
|
||||||
|
|
||||||
|
it 'creates a new ticket' do
|
||||||
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
.to change { Ticket.count }.by(1)
|
||||||
|
.and not_change { ticket.articles.length }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'and ticket is removed' do
|
||||||
|
before { ticket.update(state: Ticket::State.find_by(name: 'removed')) }
|
||||||
|
|
||||||
|
it 'creates a new ticket' do
|
||||||
|
expect { described_class.new.process({}, raw_mail) }
|
||||||
|
.to change { Ticket.count }.by(1)
|
||||||
|
.and not_change { ticket.articles.length }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when configured to search body' do
|
context 'when configured to search body' do
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
require 'test_helper'
|
|
||||||
|
|
||||||
class EmailProcessFollowUpPossibleTest < ActiveSupport::TestCase
|
|
||||||
|
|
||||||
test 'process with follow up possible check' do
|
|
||||||
|
|
||||||
users_group = Group.lookup(name: 'Users')
|
|
||||||
|
|
||||||
ticket = Ticket.create(
|
|
||||||
title: 'follow up check',
|
|
||||||
group: users_group,
|
|
||||||
customer_id: 2,
|
|
||||||
state: Ticket::State.lookup(name: 'new'),
|
|
||||||
priority: Ticket::Priority.lookup(name: '2 normal'),
|
|
||||||
updated_by_id: 1,
|
|
||||||
created_by_id: 1,
|
|
||||||
)
|
|
||||||
article = Ticket::Article.create(
|
|
||||||
ticket_id: ticket.id,
|
|
||||||
from: 'some_sender@example.com',
|
|
||||||
to: 'some_recipient@example.com',
|
|
||||||
subject: 'follow up check',
|
|
||||||
message_id: '<20150830145601.30.608882@edenhofer.zammad.com>',
|
|
||||||
body: 'some message article',
|
|
||||||
internal: false,
|
|
||||||
sender: Ticket::Article::Sender.lookup(name: 'Agent'),
|
|
||||||
type: Ticket::Article::Type.lookup(name: 'email'),
|
|
||||||
updated_by_id: 1,
|
|
||||||
created_by_id: 1,
|
|
||||||
)
|
|
||||||
|
|
||||||
follow_up_raw = "From: me@example.com
|
|
||||||
To: customer@example.com
|
|
||||||
Subject: #{ticket.subject_build('some new subject')}
|
|
||||||
|
|
||||||
Some Text"
|
|
||||||
|
|
||||||
users_group.update!('follow_up_possible' => 'new_ticket')
|
|
||||||
|
|
||||||
travel 1.second
|
|
||||||
ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, follow_up_raw)
|
|
||||||
assert_equal(ticket.id, ticket_p.id)
|
|
||||||
assert_equal('follow up check', ticket_p.title)
|
|
||||||
assert_match('some new subject', article_p.subject)
|
|
||||||
|
|
||||||
# close ticket
|
|
||||||
ticket.state = Ticket::State.find_by(name: 'closed')
|
|
||||||
ticket.save!
|
|
||||||
|
|
||||||
follow_up_raw = "From: me@example.com
|
|
||||||
To: customer@example.com
|
|
||||||
Subject: #{ticket.subject_build('some new subject2')}
|
|
||||||
|
|
||||||
Some Text"
|
|
||||||
|
|
||||||
travel 1.second
|
|
||||||
ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, follow_up_raw)
|
|
||||||
assert_not_equal(ticket.id, ticket_p.id)
|
|
||||||
assert_equal('some new subject2', ticket_p.title)
|
|
||||||
assert_equal('some new subject2', article_p.subject)
|
|
||||||
|
|
||||||
users_group.update!('follow_up_possible' => 'yes')
|
|
||||||
|
|
||||||
travel 1.second
|
|
||||||
ticket_p, article_p, user_p = Channel::EmailParser.new.process({}, follow_up_raw)
|
|
||||||
assert_equal(ticket.id, ticket_p.id)
|
|
||||||
assert_equal('follow up check', ticket_p.title)
|
|
||||||
assert_match('some new subject', article_p.subject)
|
|
||||||
travel_back
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in a new issue