Fixed bug: Direct message ticket creation/selection is broken.
This commit is contained in:
parent
6fc6a26150
commit
e710d47af7
2 changed files with 81 additions and 11 deletions
23
lib/tweet.rb
23
lib/tweet.rb
|
@ -97,15 +97,24 @@ class Tweet
|
||||||
Rails.logger.debug group_id.inspect
|
Rails.logger.debug group_id.inspect
|
||||||
|
|
||||||
if tweet.class.to_s == 'Twitter::DirectMessage'
|
if tweet.class.to_s == 'Twitter::DirectMessage'
|
||||||
ticket = Ticket.find_by(
|
|
||||||
customer_id: user.id,
|
article = Ticket::Article.find_by(
|
||||||
state: Ticket::State.where.not(
|
from: 'me_bauer',
|
||||||
state_type_id: Ticket::StateType.where(
|
type_id: Ticket::Article::Type.find_by( name: 'twitter direct-message' ).id,
|
||||||
name: 'closed',
|
)
|
||||||
|
|
||||||
|
if article
|
||||||
|
ticket = Ticket.find_by(
|
||||||
|
id: article.ticket_id,
|
||||||
|
customer_id: user.id,
|
||||||
|
state: Ticket::State.where.not(
|
||||||
|
state_type_id: Ticket::StateType.where(
|
||||||
|
name: 'closed',
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
return ticket if ticket
|
||||||
return ticket if ticket
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Ticket.create(
|
Ticket.create(
|
||||||
|
|
|
@ -220,25 +220,86 @@ class TwitterTest < ActiveSupport::TestCase
|
||||||
sleep 5
|
sleep 5
|
||||||
}
|
}
|
||||||
|
|
||||||
assert( article, 'inbound article created' )
|
assert( article, "inbound article '#{text}' created" )
|
||||||
ticket = article.ticket
|
ticket = article.ticket
|
||||||
assert( ticket, 'ticket of inbound article exists' )
|
assert( ticket, 'ticket of inbound article exists' )
|
||||||
assert( ticket.articles, 'ticket.articles exists' )
|
assert( ticket.articles, 'ticket.articles exists' )
|
||||||
assert_equal( ticket.articles.count, 1, 'ticket article inbound count' )
|
assert_equal( 1, ticket.articles.count, 'ticket article inbound count' )
|
||||||
assert_equal( ticket.state.name, 'new' )
|
assert_equal( ticket.state.name, 'new' )
|
||||||
|
|
||||||
# reply via ticket
|
# reply via ticket
|
||||||
outbound_article = Ticket::Article.create(
|
outbound_article = Ticket::Article.create(
|
||||||
ticket_id: ticket.id,
|
ticket_id: ticket.id,
|
||||||
to: 'me_bauer',
|
to: 'me_bauer',
|
||||||
body: text,
|
body: 'Will call you later!',
|
||||||
type: Ticket::Article::Type.find_by( name: 'twitter direct-message' ),
|
type: Ticket::Article::Type.find_by( name: 'twitter direct-message' ),
|
||||||
sender: Ticket::Article::Sender.find_by( name: 'Agent' ),
|
sender: Ticket::Article::Sender.find_by( name: 'Agent' ),
|
||||||
internal: false,
|
internal: false,
|
||||||
updated_by_id: 1,
|
updated_by_id: 1,
|
||||||
created_by_id: 1,
|
created_by_id: 1,
|
||||||
)
|
)
|
||||||
|
ticket.state = Ticket::State.find_by( name: 'pending reminder' )
|
||||||
|
ticket.save
|
||||||
|
|
||||||
assert( outbound_article, 'outbound article created' )
|
assert( outbound_article, 'outbound article created' )
|
||||||
assert_equal( outbound_article.ticket.articles.count, 2, 'ticket article outbound count' )
|
assert_equal( 2, outbound_article.ticket.articles.count, 'ticket article outbound count' )
|
||||||
|
|
||||||
|
text = 'Ok. ' + hash
|
||||||
|
dm = client.create_direct_message(
|
||||||
|
'armin_theo',
|
||||||
|
text,
|
||||||
|
)
|
||||||
|
assert( dm, "second dm with ##{hash} created" )
|
||||||
|
|
||||||
|
# fetch check system account
|
||||||
|
article = nil
|
||||||
|
(1..4).each {
|
||||||
|
Channel.fetch
|
||||||
|
|
||||||
|
# check if ticket and article has been created
|
||||||
|
article = Ticket::Article.find_by( message_id: dm.id )
|
||||||
|
|
||||||
|
break if article
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
}
|
||||||
|
|
||||||
|
assert( article, "inbound article '#{text}' created" )
|
||||||
|
ticket = article.ticket
|
||||||
|
assert( ticket, 'ticket of inbound article exists' )
|
||||||
|
assert( ticket.articles, 'ticket.articles exists' )
|
||||||
|
assert_equal( 3, ticket.articles.count, 'ticket article inbound count' )
|
||||||
|
assert_equal( ticket.state.name, 'open' )
|
||||||
|
|
||||||
|
# close dm ticket, next dm should open a new
|
||||||
|
ticket.state = Ticket::State.find_by( name: 'closed' )
|
||||||
|
ticket.save
|
||||||
|
|
||||||
|
text = 'Thanks for your call . I just have one question. ' + hash
|
||||||
|
dm = client.create_direct_message(
|
||||||
|
'armin_theo',
|
||||||
|
text,
|
||||||
|
)
|
||||||
|
assert( dm, "third dm with ##{hash} created" )
|
||||||
|
|
||||||
|
# fetch check system account
|
||||||
|
article = nil
|
||||||
|
(1..4).each {
|
||||||
|
Channel.fetch
|
||||||
|
|
||||||
|
# check if ticket and article has been created
|
||||||
|
article = Ticket::Article.find_by( message_id: dm.id )
|
||||||
|
|
||||||
|
break if article
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
}
|
||||||
|
|
||||||
|
assert( article, "inbound article '#{text}' created" )
|
||||||
|
ticket = article.ticket
|
||||||
|
assert( ticket, 'ticket of inbound article exists' )
|
||||||
|
assert( ticket.articles, 'ticket.articles exists' )
|
||||||
|
assert_equal( 1, ticket.articles.count, 'ticket article inbound count' )
|
||||||
|
assert_equal( ticket.state.name, 'new' )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue