mirror of
https://github.com/Fishwaldo/huginn.git
synced 2025-03-15 19:31:26 +00:00
Fix escape characters of events when dry running
JSONEditor double escapes escape characters to properly display them in the UI, however when dry running Agents we actually need to send the Event's characters as they were. Before an event containing new lines like this `Line A\nLineB` would be send as `Line A\\nLineB` to the backend. By replacing the double escaped slashes we ensure the event is handled as it would be when not dry running. #1677
This commit is contained in:
parent
4469213425
commit
4309460896
4 changed files with 45 additions and 2 deletions
|
@ -69,7 +69,7 @@ class @Utils
|
|||
json = $(e.target).find('.payload-editor').val()
|
||||
json = '{}' if json == ''
|
||||
try
|
||||
payload = JSON.parse(json)
|
||||
payload = JSON.parse(json.replace(/\\\\([n|r|t])/g, "\\$1"))
|
||||
throw true unless payload.constructor is Object
|
||||
if Object.keys(payload).length == 0
|
||||
json = ''
|
||||
|
|
35
spec/features/dry_running_spec.rb
Normal file
35
spec/features/dry_running_spec.rb
Normal file
|
@ -0,0 +1,35 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe "Dry running an Agent", js: true do
|
||||
let(:formatting_agent) { agents(:bob_formatting_agent) }
|
||||
let(:user) { users(:bob) }
|
||||
let(:emitter) { agents(:bob_weather_agent) }
|
||||
|
||||
before(:each) do
|
||||
login_as(user)
|
||||
end
|
||||
|
||||
def open_dry_run_modal(agent)
|
||||
visit edit_agent_path(agent)
|
||||
click_on("Dry Run")
|
||||
expect(page).to have_text('Event to send')
|
||||
end
|
||||
|
||||
context 'successful dry runs' do
|
||||
it 'sends escape characters correctly to the backend' do
|
||||
emitter.events << Event.new(payload: {data: "Line 1\nLine 2\nLine 3"})
|
||||
formatting_agent.sources << emitter
|
||||
formatting_agent.options.merge!('instructions' => {'data' => "{{data | newline_to_br | strip_newlines | split: '<br />' | join: ','}}"})
|
||||
formatting_agent.save!
|
||||
|
||||
open_dry_run_modal(formatting_agent)
|
||||
find('.dry-run-event-sample').click
|
||||
within(:css, '.modal .builder') do
|
||||
expect(page).to have_text('Line 1\nLine 2\nLine 3')
|
||||
end
|
||||
click_on("Dry Run")
|
||||
expect(page).to have_text('Line 1,Line 2,Line 3')
|
||||
expect(page).to have_selector(:css, 'li[role="presentation"].active a[href="#tabEvents"]')
|
||||
end
|
||||
end
|
||||
end
|
8
spec/fixtures/agents.yml
vendored
8
spec/fixtures/agents.yml
vendored
|
@ -60,6 +60,14 @@ bob_weather_agent:
|
|||
keep_events_for: <%= 45.days %>
|
||||
options: <%= { :location => 94102, :lat => 37.779329, :lng => -122.41915, :api_key => 'test' }.to_json.inspect %>
|
||||
|
||||
bob_formatting_agent:
|
||||
type: Agents::EventFormattingAgent
|
||||
user: bob
|
||||
name: "Formatting Agent"
|
||||
guid: <%= SecureRandom.hex %>
|
||||
keep_events_for: <%= 45.days %>
|
||||
options: <%= { instructions: {}, mode: 'clean' }.to_json.inspect %>
|
||||
|
||||
jane_weather_agent:
|
||||
type: Agents::WeatherAgent
|
||||
user: jane
|
||||
|
|
|
@ -13,7 +13,7 @@ require 'rspec/rails'
|
|||
require 'rr'
|
||||
require 'webmock/rspec'
|
||||
|
||||
WebMock.disable_net_connect!
|
||||
WebMock.disable_net_connect!(allow_localhost: true)
|
||||
|
||||
# Requires supporting ruby files with custom matchers and macros, etc,
|
||||
# in spec/support/ and its subdirectories.
|
||||
|
|
Loading…
Add table
Reference in a new issue