From df33dc1d71a5b6d84b17cff1d7dd4bfe89213c14 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 12 Jan 2018 14:59:25 +0100 Subject: [PATCH] Implemented issue #1745 - article.body support for triggers. --- .../_ui_element/richtext_search.coffee | 4 + .../_ui_element/ticket_selector.coffee | 2 + test/unit/ticket_trigger_test.rb | 410 ++++++++++++++---- 3 files changed, 325 insertions(+), 91 deletions(-) create mode 100644 app/assets/javascripts/app/controllers/_ui_element/richtext_search.coffee diff --git a/app/assets/javascripts/app/controllers/_ui_element/richtext_search.coffee b/app/assets/javascripts/app/controllers/_ui_element/richtext_search.coffee new file mode 100644 index 000000000..9a5f05581 --- /dev/null +++ b/app/assets/javascripts/app/controllers/_ui_element/richtext_search.coffee @@ -0,0 +1,4 @@ +# coffeelint: disable=camel_case_classes +class App.UiElement.richtext_search + @render: (attribute) -> + $( App.view('generic/input')( attribute: attribute ) ) diff --git a/app/assets/javascripts/app/controllers/_ui_element/ticket_selector.coffee b/app/assets/javascripts/app/controllers/_ui_element/ticket_selector.coffee index a88901169..f3a7dbe11 100644 --- a/app/assets/javascripts/app/controllers/_ui_element/ticket_selector.coffee +++ b/app/assets/javascripts/app/controllers/_ui_element/ticket_selector.coffee @@ -25,6 +25,7 @@ class App.UiElement.ticket_selector '^radio$': ['is', 'is not'] '^select$': ['is', 'is not'] '^input$': ['contains', 'contains not'] + '^richtext$': ['contains', 'contains not'] '^textarea$': ['contains', 'contains not'] '^tag$': ['contains all', 'contains one', 'contains all not', 'contains one not'] @@ -37,6 +38,7 @@ class App.UiElement.ticket_selector '^radio$': ['is', 'is not', 'has changed'] '^select$': ['is', 'is not', 'has changed'] '^input$': ['contains', 'contains not', 'has changed'] + '^richtext$': ['contains', 'contains not', 'has changed'] '^textarea$': ['contains', 'contains not', 'has changed'] '^tag$': ['contains all', 'contains one', 'contains all not', 'contains one not'] diff --git a/test/unit/ticket_trigger_test.rb b/test/unit/ticket_trigger_test.rb index 1529e1260..c649c7c58 100644 --- a/test/unit/ticket_trigger_test.rb +++ b/test/unit/ticket_trigger_test.rb @@ -151,15 +151,14 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket1, 'ticket1 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -236,7 +235,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(2, ticket1.articles.count, 'ticket1.articles verify') assert_equal(%w[aa abc], ticket1.tag_list) - ticket2 = Ticket.create( + ticket2 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), @@ -245,7 +244,6 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - assert(ticket2, 'ticket2 created') assert_equal('some title äöüß', ticket2.title, 'ticket2.title verify') assert_equal('Users', ticket2.group.name, 'ticket2.group verify') @@ -264,7 +262,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(0, ticket2.articles.count, 'ticket2.articles verify') assert_equal([], ticket2.tag_list) - ticket3 = Ticket.create( + ticket3 = Ticket.create!( title: "some title\n äöüß3", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), @@ -273,7 +271,7 @@ class TicketTriggerTest < ActiveSupport::TestCase ) assert(ticket3, 'ticket3 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket3.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -318,7 +316,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_match('Thanks for your inquiry - 1234 check (some title äöüß3)!', article3.subject) assert_equal('text/html', article3.content_type) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket3.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -343,7 +341,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(4, ticket3.articles.count, 'ticket3.articles verify') assert_equal(%w[aa abc article_create_trigger], ticket3.tag_list) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket3.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -368,7 +366,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(5, ticket3.articles.count, 'ticket3.articles verify') assert_equal(%w[aa abc article_create_trigger], ticket3.tag_list) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket3.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -423,14 +421,13 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket1, 'ticket1 created') assert_equal('some title äöüß', ticket1.title, 'ticket1.title verify') assert_equal('Users', ticket1.group.name, 'ticket1.group verify') @@ -517,14 +514,13 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket1, 'ticket1 created') assert_equal('some title äöüß', ticket1.title, 'ticket1.title verify') assert_equal('Users', ticket1.group.name, 'ticket1.group verify') @@ -732,7 +728,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('2 normal', ticket_p.priority.name, 'ticket_p.priority verify') assert_equal(2, ticket_p.articles.count, 'ticket_p.articles verify') - article_p = Ticket::Article.create( + article_p = Ticket::Article.create!( ticket_id: ticket_p.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -752,7 +748,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('2 normal', ticket_p.priority.name, 'ticket_p.priority verify') assert_equal(3, ticket_p.articles.count, 'ticket_p.articles verify') - article_p = Ticket::Article.create( + article_p = Ticket::Article.create!( ticket_id: ticket_p.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -772,7 +768,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('2 normal', ticket_p.priority.name, 'ticket_p.priority verify') assert_equal(4, ticket_p.articles.count, 'ticket_p.articles verify') - article_p = Ticket::Article.create( + article_p = Ticket::Article.create!( ticket_id: ticket_p.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -803,7 +799,7 @@ class TicketTriggerTest < ActiveSupport::TestCase ticket_p.state = Ticket::State.lookup(name: 'open') ticket_p.save! - article_p = Ticket::Article.create( + article_p = Ticket::Article.create!( ticket_id: ticket_p.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1207,7 +1203,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', owner: agent, group: Group.lookup(name: 'Users'), @@ -1215,7 +1211,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1240,7 +1236,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(1, ticket1.articles.count) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1283,7 +1279,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1342,7 +1338,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', #owner: agent, group: Group.lookup(name: 'Users'), @@ -1350,7 +1346,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1374,7 +1370,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal([], ticket1.tag_list) UserInfo.current_user_id = agent.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1467,14 +1463,14 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', group: Group.lookup(name: 'Users'), customer: customer, updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1500,7 +1496,7 @@ class TicketTriggerTest < ActiveSupport::TestCase ticket1.update!(customer: User.lookup(email: 'nicole.braun@zammad.org') ) UserInfo.current_user_id = agent.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1578,14 +1574,14 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1611,7 +1607,7 @@ class TicketTriggerTest < ActiveSupport::TestCase ticket1.update!(customer: customer ) UserInfo.current_user_id = agent.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1691,7 +1687,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', #owner: agent, group: Group.lookup(name: 'Users'), @@ -1699,7 +1695,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1723,7 +1719,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal([], ticket1.tag_list) UserInfo.current_user_id = agent1.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1762,7 +1758,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal([], ticket1.tag_list) UserInfo.current_user_id = agent1.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1801,7 +1797,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal([], ticket1.tag_list) UserInfo.current_user_id = agent1.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1872,7 +1868,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', #owner: agent, group: Group.lookup(name: 'Users'), @@ -1880,7 +1876,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -1904,7 +1900,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal([], ticket1.tag_list) UserInfo.current_user_id = agent.id - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2019,7 +2015,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', owner: agent, customer: customer, @@ -2027,7 +2023,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2065,7 +2061,7 @@ class TicketTriggerTest < ActiveSupport::TestCase customer.vip = false customer.save! - ticket2 = Ticket.create( + ticket2 = Ticket.create!( title: 'test 123', owner: agent, customer: customer, @@ -2073,7 +2069,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket2.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2157,14 +2153,14 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2291,7 +2287,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', owner: agent, customer: customer, @@ -2299,7 +2295,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2325,7 +2321,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(2, ticket1.articles.count, 'ticket1.articles verify') assert_equal([], ticket1.tag_list) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2350,7 +2346,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(3, ticket1.articles.count, 'ticket1.articles verify') assert_equal([], ticket1.tag_list) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2377,7 +2373,7 @@ class TicketTriggerTest < ActiveSupport::TestCase ticket1.priority = Ticket::Priority.find_by(name: '3 high') ticket1.save! - article = Ticket::Article.create( + article = Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2416,7 +2412,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(6, ticket1.articles.count, 'ticket1.articles verify') assert_equal([], ticket1.tag_list) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2574,7 +2570,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 123', #owner: agent, customer: customer, @@ -2582,7 +2578,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2624,7 +2620,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(3, ticket1.articles.count, 'ticket1.articles verify') assert_equal([], ticket1.tag_list) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -2718,14 +2714,14 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient+from@example.com', @@ -2775,14 +2771,14 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender+from@example.com', to: 'some_recipient@example.com', @@ -2844,14 +2840,14 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, to: 'some_recipient@example.com', subject: 'some subject', @@ -2913,14 +2909,14 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, to: 'some_recipient@example.com', subject: 'some subject', @@ -2979,7 +2975,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), @@ -2987,7 +2983,7 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient+from@example.com', @@ -3038,14 +3034,14 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient+from@example.com', @@ -3101,15 +3097,14 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'loop try 1', group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket1, 'ticket1 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3136,7 +3131,7 @@ class TicketTriggerTest < ActiveSupport::TestCase ticket1.reload assert_equal(2, ticket1.articles.count) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3157,7 +3152,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[2].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[3].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3178,7 +3173,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[4].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[5].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3199,7 +3194,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[6].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[7].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3220,7 +3215,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[8].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[9].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3241,7 +3236,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[10].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[11].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3262,7 +3257,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[12].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[13].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3283,7 +3278,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[14].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[15].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3304,7 +3299,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[16].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[17].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3325,7 +3320,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal('some_loop_sender@example.com', ticket1.articles[18].from) assert_equal('nicole.braun@zammad.org', ticket1.articles[19].to) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3345,7 +3340,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(21, ticket1.articles.count) assert_equal('some_loop_sender@example.com', ticket1.articles[20].from) - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_loop_sender@example.com', to: 'some_loop_recipient@example.com', @@ -3431,15 +3426,14 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: "some title\n äöüß", group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket1, 'ticket1 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'some_sender@example.com', to: 'some_recipient@example.com', @@ -3559,15 +3553,14 @@ class TicketTriggerTest < ActiveSupport::TestCase updated_by_id: 1, ) - ticket1 = Ticket.create( + ticket1 = Ticket.create!( title: 'test 1', group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket1, 'ticket1 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket1.id, from: 'sender1@example.com', to: 'some_recipient@example.com', @@ -3597,15 +3590,14 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(1, ticket1.articles.count, 'ticket1.articles verify') assert_equal(%w[sender1], ticket1.tag_list) - ticket2 = Ticket.create( + ticket2 = Ticket.create!( title: 'test 2', group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), updated_by_id: 1, created_by_id: 1, ) - assert(ticket2, 'ticket2 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket2.id, from: 'sender2@example.com', to: 'some_recipient@example.com', @@ -3637,7 +3629,7 @@ class TicketTriggerTest < ActiveSupport::TestCase assert_equal(1, ticket2.articles.count, 'ticket2.articles verify') assert_equal(%w[sender2], ticket2.tag_list) - ticket3 = Ticket.create( + ticket3 = Ticket.create!( title: 'test 3', group: Group.lookup(name: 'Users'), customer: User.lookup(email: 'nicole.braun@zammad.org'), @@ -3645,7 +3637,7 @@ class TicketTriggerTest < ActiveSupport::TestCase created_by_id: 1, ) assert(ticket3, 'ticket3 created') - Ticket::Article.create( + Ticket::Article.create!( ticket_id: ticket3.id, from: 'sender0@example.com', to: 'some_recipient@example.com', @@ -3677,4 +3669,240 @@ class TicketTriggerTest < ActiveSupport::TestCase article1 = ticket3.articles.last end + + test 'article.body' do + trigger1 = Trigger.create_or_update( + name: 'auto reply', + condition: { + 'ticket.action' => { + 'operator' => 'is', + 'value' => 'create', + }, + 'ticket.state_id' => { + 'operator' => 'is', + 'value' => Ticket::State.lookup(name: 'new').id.to_s, + }, + 'article.body' => { + 'operator' => 'contains', + 'value' => 'hello', + }, + }, + perform: { + 'notification.email' => { + 'body' => 'some text
#{ticket.customer.lastname}
#{ticket.title}
#{article.body}', + 'recipient' => 'ticket_customer', + 'subject' => 'Thanks for your inquiry (#{ticket.title})!', + }, + 'ticket.tags' => { + 'operator' => 'add', + 'value' => 'aa, kk', + }, + }, + disable_notification: true, + active: true, + created_by_id: 1, + updated_by_id: 1, + ) + + ticket1 = Ticket.create!( + title: 'test 1', + group: Group.lookup(name: 'Users'), + customer: User.lookup(email: 'nicole.braun@zammad.org'), + updated_by_id: 1, + created_by_id: 1, + ) + Ticket::Article.create!( + ticket_id: ticket1.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'some subject', + message_id: 'some@id', + body: 'some message note hello ', + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + updated_by_id: 1, + created_by_id: 1, + ) + + ticket1.reload + assert_equal('test 1', ticket1.title, 'ticket1.title verify') + assert_equal('Users', ticket1.group.name, 'ticket1.group verify') + assert_equal('new', ticket1.state.name, 'ticket1.state verify') + assert_equal('2 normal', ticket1.priority.name, 'ticket1.priority verify') + assert_equal(1, ticket1.articles.count, 'ticket1.articles verify') + assert_equal([], ticket1.tag_list) + + Observer::Transaction.commit + + ticket1.reload + assert_equal('test 1', ticket1.title, 'ticket1.title verify') + assert_equal('Users', ticket1.group.name, 'ticket1.group verify') + assert_equal('new', ticket1.state.name, 'ticket1.state verify') + assert_equal(2, ticket1.articles.count, 'ticket1.articles verify') + assert_equal(%w[aa kk], ticket1.tag_list) + article1 = ticket1.articles.last + assert_match('Zammad ', article1.from) + assert_match('nicole.braun@zammad.org', article1.to) + assert_match('Thanks for your inquiry (test 1)!', article1.subject) + assert_match('some message', article1.body) + assert_match('> some message <b>note</b> hello', article1.body) + assert_equal('text/html', article1.content_type) + + ticket2 = Ticket.create!( + title: 'test 1', + group: Group.lookup(name: 'Users'), + customer: User.lookup(email: 'nicole.braun@zammad.org'), + updated_by_id: 1, + created_by_id: 1, + ) + Ticket::Article.create!( + ticket_id: ticket2.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'some subject', + message_id: 'some@id', + body: 'some message note', + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + updated_by_id: 1, + created_by_id: 1, + ) + + ticket2.reload + assert_equal('test 1', ticket2.title, 'ticket2.title verify') + assert_equal('Users', ticket2.group.name, 'ticket2.group verify') + assert_equal('new', ticket2.state.name, 'ticket2.state verify') + assert_equal('2 normal', ticket2.priority.name, 'ticket2.priority verify') + assert_equal(1, ticket2.articles.count, 'ticket2.articles verify') + assert_equal([], ticket2.tag_list) + + Observer::Transaction.commit + + ticket2.reload + assert_equal('test 1', ticket2.title, 'ticket2.title verify') + assert_equal('Users', ticket2.group.name, 'ticket2.group verify') + assert_equal('new', ticket2.state.name, 'ticket2.state verify') + assert_equal(1, ticket2.articles.count, 'ticket2.articles verify') + assert_equal(%w[], ticket2.tag_list) + + trigger1 = Trigger.create_or_update( + name: 'auto reply', + condition: { + 'ticket.action' => { + 'operator' => 'is', + 'value' => 'create', + }, + 'ticket.state_id' => { + 'operator' => 'is', + 'value' => Ticket::State.lookup(name: 'new').id.to_s, + }, + 'article.body' => { + 'operator' => 'contains not', + 'value' => 'hello', + }, + }, + perform: { + 'notification.email' => { + 'body' => 'some text
#{ticket.customer.lastname}
#{ticket.title}
#{article.body}', + 'recipient' => 'ticket_customer', + 'subject' => 'Thanks for your inquiry (#{ticket.title})!', + }, + 'ticket.tags' => { + 'operator' => 'add', + 'value' => 'aa, kk', + }, + }, + disable_notification: true, + active: true, + created_by_id: 1, + updated_by_id: 1, + ) + + ticket3 = Ticket.create!( + title: 'test 1', + group: Group.lookup(name: 'Users'), + customer: User.lookup(email: 'nicole.braun@zammad.org'), + updated_by_id: 1, + created_by_id: 1, + ) + Ticket::Article.create!( + ticket_id: ticket3.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'some subject', + message_id: 'some@id', + body: 'some message note hello ', + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + updated_by_id: 1, + created_by_id: 1, + ) + + ticket3.reload + assert_equal('test 1', ticket3.title, 'ticket3.title verify') + assert_equal('Users', ticket3.group.name, 'ticket3.group verify') + assert_equal('new', ticket3.state.name, 'ticket3.state verify') + assert_equal('2 normal', ticket3.priority.name, 'ticket3.priority verify') + assert_equal(1, ticket3.articles.count, 'ticket3.articles verify') + assert_equal([], ticket3.tag_list) + + Observer::Transaction.commit + + ticket3.reload + assert_equal('test 1', ticket3.title, 'ticket3.title verify') + assert_equal('Users', ticket3.group.name, 'ticket3.group verify') + assert_equal('new', ticket3.state.name, 'ticket3.state verify') + assert_equal(1, ticket3.articles.count, 'ticket3.articles verify') + assert_equal(%w[], ticket3.tag_list) + + ticket4 = Ticket.create!( + title: 'test 1', + group: Group.lookup(name: 'Users'), + customer: User.lookup(email: 'nicole.braun@zammad.org'), + updated_by_id: 1, + created_by_id: 1, + ) + Ticket::Article.create!( + ticket_id: ticket4.id, + from: 'some_sender@example.com', + to: 'some_recipient@example.com', + subject: 'some subject', + message_id: 'some@id', + body: 'some message note 2', + internal: false, + sender: Ticket::Article::Sender.find_by(name: 'Agent'), + type: Ticket::Article::Type.find_by(name: 'note'), + updated_by_id: 1, + created_by_id: 1, + ) + + ticket4.reload + assert_equal('test 1', ticket4.title, 'ticket4.title verify') + assert_equal('Users', ticket4.group.name, 'ticket4.group verify') + assert_equal('new', ticket4.state.name, 'ticket4.state verify') + assert_equal('2 normal', ticket4.priority.name, 'ticket4.priority verify') + assert_equal(1, ticket4.articles.count, 'ticket4.articles verify') + assert_equal([], ticket4.tag_list) + + Observer::Transaction.commit + + ticket4.reload + assert_equal('test 1', ticket4.title, 'ticket4.title verify') + assert_equal('Users', ticket4.group.name, 'ticket4.group verify') + assert_equal('new', ticket4.state.name, 'ticket4.state verify') + assert_equal(2, ticket4.articles.count, 'ticket4.articles verify') + assert_equal(%w[aa kk], ticket4.tag_list) + article4 = ticket4.articles.last + assert_match('Zammad ', article4.from) + assert_match('nicole.braun@zammad.org', article4.to) + assert_match('Thanks for your inquiry (test 1)!', article4.subject) + assert_match('some message', article4.body) + assert_match('> some message <b>note</b> 2', article4.body) + assert_equal('text/html', article4.content_type) + + end + end