Fixed bug: Direct message ticket creation/selection is broken.

This commit is contained in:
Thorsten Eckel 2015-07-15 16:50:44 +02:00
parent 6fc6a26150
commit e710d47af7
2 changed files with 81 additions and 11 deletions

View file

@ -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(

View file

@ -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