@@ -45,6 +45,8 @@ class ScenariosController < ApplicationController |
||
| 45 | 45 |
@exporter = AgentsExporter.new(:name => @scenario.name, |
| 46 | 46 |
:description => @scenario.description, |
| 47 | 47 |
:guid => @scenario.guid, |
| 48 |
+ :tag_fg_color => @scenario.tag_fg_color, |
|
| 49 |
+ :tag_bg_color => @scenario.tag_bg_color, |
|
| 48 | 50 |
:source_url => @scenario.public? && export_scenario_url(@scenario), |
| 49 | 51 |
:agents => @scenario.agents) |
| 50 | 52 |
response.headers['Content-Disposition'] = 'attachment; filename="' + @exporter.filename + '"' |
@@ -60,10 +60,14 @@ class ScenarioImport |
||
| 60 | 60 |
description = parsed_data['description'] |
| 61 | 61 |
name = parsed_data['name'] |
| 62 | 62 |
links = parsed_data['links'] |
| 63 |
+ tag_fg_color = parsed_data['tag_fg_color'] |
|
| 64 |
+ tag_bg_color = parsed_data['tag_bg_color'] |
|
| 63 | 65 |
source_url = parsed_data['source_url'].presence || nil |
| 64 | 66 |
@scenario = user.scenarios.where(:guid => guid).first_or_initialize |
| 65 | 67 |
@scenario.update_attributes!(:name => name, :description => description, |
| 66 |
- :source_url => source_url, :public => false) |
|
| 68 |
+ :source_url => source_url, :public => false, |
|
| 69 |
+ :tag_fg_color => tag_fg_color, |
|
| 70 |
+ :tag_bg_color => tag_bg_color) |
|
| 67 | 71 |
|
| 68 | 72 |
unless options[:skip_agents] |
| 69 | 73 |
created_agents = agent_diffs.map do |agent_diff| |
@@ -16,6 +16,8 @@ class AgentsExporter |
||
| 16 | 16 |
:description => options[:description].presence || 'No description provided', |
| 17 | 17 |
:source_url => options[:source_url], |
| 18 | 18 |
:guid => options[:guid], |
| 19 |
+ :tag_fg_color => options[:tag_fg_color], |
|
| 20 |
+ :tag_bg_color => options[:tag_bg_color], |
|
| 19 | 21 |
:exported_at => Time.now.utc.iso8601, |
| 20 | 22 |
:agents => agents.map { |agent| agent_as_json(agent) },
|
| 21 | 23 |
:links => links |
@@ -51,4 +53,4 @@ class AgentsExporter |
||
| 51 | 53 |
options[:propagate_immediately] = agent.propagate_immediately if agent.can_receive_events? |
| 52 | 54 |
end |
| 53 | 55 |
end |
| 54 |
-end |
|
| 56 |
+end |
@@ -50,6 +50,8 @@ describe ScenariosController do |
||
| 50 | 50 |
assigns(:exporter).options[:description].should == scenarios(:bob_weather).description |
| 51 | 51 |
assigns(:exporter).options[:agents].should == scenarios(:bob_weather).agents |
| 52 | 52 |
assigns(:exporter).options[:guid].should == scenarios(:bob_weather).guid |
| 53 |
+ assigns(:exporter).options[:tag_fg_color].should == scenarios(:bob_weather).tag_fg_color |
|
| 54 |
+ assigns(:exporter).options[:tag_bg_color].should == scenarios(:bob_weather).tag_bg_color |
|
| 53 | 55 |
assigns(:exporter).options[:source_url].should be_falsey |
| 54 | 56 |
response.headers['Content-Disposition'].should == 'attachment; filename="bob-s-weather-alert-scenario.json"' |
| 55 | 57 |
response.headers['Content-Type'].should == 'application/json; charset=utf-8' |
@@ -7,9 +7,13 @@ describe AgentsExporter do |
||
| 7 | 7 |
let(:name) { "My set of Agents" }
|
| 8 | 8 |
let(:description) { "These Agents work together nicely!" }
|
| 9 | 9 |
let(:guid) { "some-guid" }
|
| 10 |
+ let(:tag_fg_color) { "#ffffff" }
|
|
| 11 |
+ let(:tag_bg_color) { "#000000" }
|
|
| 10 | 12 |
let(:source_url) { "http://yourhuginn.com/scenarios/2/export.json" }
|
| 11 | 13 |
let(:agent_list) { [agents(:jane_weather_agent), agents(:jane_rain_notifier_agent)] }
|
| 12 |
- let(:exporter) { AgentsExporter.new(:agents => agent_list, :name => name, :description => description, :source_url => source_url, :guid => guid) }
|
|
| 14 |
+ let(:exporter) { AgentsExporter.new(
|
|
| 15 |
+ :agents => agent_list, :name => name, :description => description, :source_url => source_url, |
|
| 16 |
+ :guid => guid, :tag_fg_color => tag_fg_color, :tag_bg_color => tag_bg_color) } |
|
| 13 | 17 |
|
| 14 | 18 |
it "outputs a structure containing name, description, the date, all agents & their links" do |
| 15 | 19 |
data = exporter.as_json |
@@ -17,6 +21,8 @@ describe AgentsExporter do |
||
| 17 | 21 |
data[:description].should == description |
| 18 | 22 |
data[:source_url].should == source_url |
| 19 | 23 |
data[:guid].should == guid |
| 24 |
+ data[:tag_fg_color].should == tag_fg_color |
|
| 25 |
+ data[:tag_bg_color].should == tag_bg_color |
|
| 20 | 26 |
Time.parse(data[:exported_at]).should be_within(2).of(Time.now.utc) |
| 21 | 27 |
data[:links].should == [{ :source => 0, :receiver => 1 }]
|
| 22 | 28 |
data[:agents].should == agent_list.map { |agent| exporter.agent_as_json(agent) }
|
@@ -58,4 +64,4 @@ describe AgentsExporter do |
||
| 58 | 64 |
AgentsExporter.new(:name => ",,").filename.should == "exported-agents.json" |
| 59 | 65 |
end |
| 60 | 66 |
end |
| 61 |
-end |
|
| 67 |
+end |
@@ -3,6 +3,8 @@ require 'spec_helper' |
||
| 3 | 3 |
describe ScenarioImport do |
| 4 | 4 |
let(:user) { users(:bob) }
|
| 5 | 5 |
let(:guid) { "somescenarioguid" }
|
| 6 |
+ let(:tag_fg_color) { "#ffffff" }
|
|
| 7 |
+ let(:tag_bg_color) { "#000000" }
|
|
| 6 | 8 |
let(:description) { "This is a cool Huginn Scenario that does something useful!" }
|
| 7 | 9 |
let(:name) { "A useful Scenario" }
|
| 8 | 10 |
let(:source_url) { "http://example.com/scenarios/2/export.json" }
|
@@ -46,10 +48,12 @@ describe ScenarioImport do |
||
| 46 | 48 |
} |
| 47 | 49 |
end |
| 48 | 50 |
let(:valid_parsed_data) do |
| 49 |
- {
|
|
| 51 |
+ {
|
|
| 50 | 52 |
:name => name, |
| 51 | 53 |
:description => description, |
| 52 | 54 |
:guid => guid, |
| 55 |
+ :tag_fg_color => tag_fg_color, |
|
| 56 |
+ :tag_bg_color => tag_bg_color, |
|
| 53 | 57 |
:source_url => source_url, |
| 54 | 58 |
:exported_at => 2.days.ago.utc.iso8601, |
| 55 | 59 |
:agents => [ |
@@ -142,7 +146,7 @@ describe ScenarioImport do |
||
| 142 | 146 |
end |
| 143 | 147 |
end |
| 144 | 148 |
end |
| 145 |
- |
|
| 149 |
+ |
|
| 146 | 150 |
describe "#dangerous?" do |
| 147 | 151 |
it "returns false on most Agents" do |
| 148 | 152 |
ScenarioImport.new(:data => valid_data).should_not be_dangerous |
@@ -171,6 +175,8 @@ describe ScenarioImport do |
||
| 171 | 175 |
scenario_import.scenario.name.should == name |
| 172 | 176 |
scenario_import.scenario.description.should == description |
| 173 | 177 |
scenario_import.scenario.guid.should == guid |
| 178 |
+ scenario_import.scenario.tag_fg_color.should == tag_fg_color |
|
| 179 |
+ scenario_import.scenario.tag_bg_color.should == tag_bg_color |
|
| 174 | 180 |
scenario_import.scenario.source_url.should == source_url |
| 175 | 181 |
scenario_import.scenario.public.should be_falsey |
| 176 | 182 |
end |
@@ -269,6 +275,8 @@ describe ScenarioImport do |
||
| 269 | 275 |
|
| 270 | 276 |
existing_scenario.reload |
| 271 | 277 |
existing_scenario.guid.should == guid |
| 278 |
+ existing_scenario.tag_fg_color.should == tag_fg_color |
|
| 279 |
+ existing_scenario.tag_bg_color.should == tag_bg_color |
|
| 272 | 280 |
existing_scenario.description.should == description |
| 273 | 281 |
existing_scenario.name.should == name |
| 274 | 282 |
existing_scenario.source_url.should == source_url |
@@ -408,4 +416,4 @@ describe ScenarioImport do |
||
| 408 | 416 |
end |
| 409 | 417 |
end |
| 410 | 418 |
end |
| 411 |
-end |
|
| 419 |
+end |