From 4565c73a33d70afc0424ad1c1d646eb0c9256221 Mon Sep 17 00:00:00 2001 From: Christian Hein Date: Wed, 26 Jul 2017 10:38:03 -0300 Subject: [PATCH 1/2] Add validations for `mode` values Fix conditional event_description. Should check for `merge` instead of `merged`. --- app/models/agents/event_formatting_agent.rb | 6 +++++- spec/models/agents/event_formatting_agent_spec.rb | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/agents/event_formatting_agent.rb b/app/models/agents/event_formatting_agent.rb index 4f8ed11d..a813593e 100644 --- a/app/models/agents/event_formatting_agent.rb +++ b/app/models/agents/event_formatting_agent.rb @@ -84,7 +84,7 @@ module Agents event_description do "Events will have the following fields%s:\n\n %s" % [ case options['mode'].to_s - when 'merged' + when 'merge' ', merged with the original contents' when /\{/ ', conditionally merged with the original contents' @@ -98,6 +98,10 @@ module Agents def validate_options errors.add(:base, "instructions and mode need to be present.") unless options['instructions'].present? && options['mode'].present? + if options['mode'].present? && !options['mode'].to_s.include?('{{') && !%[clean merge].include?(options['mode'].to_s) + errors.add(:base, "mode must be 'clean' or 'merge'") + end + validate_matchers end diff --git a/spec/models/agents/event_formatting_agent_spec.rb b/spec/models/agents/event_formatting_agent_spec.rb index d4902501..daf625e8 100644 --- a/spec/models/agents/event_formatting_agent_spec.rb +++ b/spec/models/agents/event_formatting_agent_spec.rb @@ -74,6 +74,12 @@ describe Agents::EventFormattingAgent do expect(Event.last.payload[:content]).not_to eq(nil) end + it "should handle Liquid templating in mode" do + @checker.options[:mode] = "{{'merge'}}" + @checker.receive([@event]) + expect(Event.last.payload[:content]).not_to eq(nil) + end + it "should handle Liquid templating in instructions" do @checker.receive([@event]) expect(Event.last.payload[:message]).to eq("Received Some Lorem Ipsum from somevalue .") From 52dbaaa586c313bf3c7a2754924a9377bd1d9f57 Mon Sep 17 00:00:00 2001 From: Christian Hein Date: Wed, 26 Jul 2017 10:50:29 -0300 Subject: [PATCH 2/2] Add spec for `mode` value validation --- .../agents/event_formatting_agent_spec.rb | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/spec/models/agents/event_formatting_agent_spec.rb b/spec/models/agents/event_formatting_agent_spec.rb index daf625e8..e891fa4f 100644 --- a/spec/models/agents/event_formatting_agent_spec.rb +++ b/spec/models/agents/event_formatting_agent_spec.rb @@ -188,5 +188,25 @@ describe Agents::EventFormattingAgent do @checker.options[:mode] = "" expect(@checker).not_to be_valid end + + it "requires mode to be 'clean' or 'merge'" do + @checker.options['mode'] = 'what?' + expect(@checker).not_to be_valid + + @checker.options['mode'] = 'clean' + expect(@checker).to be_valid + + @checker.options['mode'] = 'merge' + expect(@checker).to be_valid + + @checker.options['mode'] = :clean + expect(@checker).to be_valid + + @checker.options['mode'] = :merge + expect(@checker).to be_valid + + @checker.options['mode'] = '{{somekey}}' + expect(@checker).to be_valid + end end end