Browse Source

Fixes #4825 - Core Workflow - Action "Fill text if empty" will always be executed even if text field is not empty.

Co-authored-by: Dominik Klein <dk@zammad.com>
Rolf Schmidt 1 year ago
parent
commit
e9af26f482
2 changed files with 29 additions and 0 deletions
  1. 5 0
      app/models/core_workflow/result.rb
  2. 24 0
      spec/models/core_workflow_spec.rb

+ 5 - 0
app/models/core_workflow/result.rb

@@ -31,6 +31,7 @@ class CoreWorkflow::Result
   def set_default
     @rerun = false
 
+    set_payload_body
     set_payload_customer_id_default
 
     @result[:restrict_values] = {}
@@ -53,6 +54,10 @@ class CoreWorkflow::Result
     set_default_only_shown_if_selectable
   end
 
+  def set_payload_body
+    @payload['params']['body'] = @payload.dig('params', 'article', 'body')
+  end
+
   def set_payload_customer_id_default
     return if !@payload['params']['customer_id'].nil?
     return if !@user

+ 24 - 0
spec/models/core_workflow_spec.rb

@@ -288,4 +288,28 @@ RSpec.describe CoreWorkflow, mariadb: true, type: :model do
       expect(result[:matched_workflows]).not_to include(workflow.id)
     end
   end
+
+  describe 'Core Workflow - Action "Fill text if empty" will always be executed even if text field is not empty #4825' do
+    let(:payload) do
+      base_payload.merge('params' => { 'article' => { 'body' => 'test123' } })
+    end
+    let!(:workflow) do
+      create(:core_workflow,
+             object:  'Ticket',
+             perform: {
+               'ticket.body': {
+                 operator:      'fill_in_empty',
+                 fill_in_empty: 'test',
+               },
+             })
+    end
+
+    before do
+      workflow
+    end
+
+    it 'does not prefill if body is set already' do
+      expect(result[:fill_in]['body']).to be_blank
+    end
+  end
 end