Allow multiple users to import the same scenario

- renames should_import? to import_confirmed? for readability

Related issue: #968
This commit is contained in:
Will Read 2015-12-07 01:37:56 +00:00
parent c1b6e17bb4
commit 6435f0024c
3 changed files with 28 additions and 11 deletions

View file

@ -7,11 +7,7 @@ class ScenarioImportsController < ApplicationController
@scenario_import = ScenarioImport.new(params[:scenario_import])
@scenario_import.set_user(current_user)
if @scenario_import.will_request_local?(scenarios_url)
render :text => 'Sorry, you cannot import a Scenario by URL from your own Huginn server.' and return
end
if @scenario_import.valid? && @scenario_import.should_import? && @scenario_import.import
if @scenario_import.valid? && @scenario_import.import_confirmed? && @scenario_import.import
redirect_to @scenario_import.scenario, notice: "Import successful!"
else
render action: "new"

View file

@ -50,7 +50,7 @@ class ScenarioImport
@agent_diffs || generate_diff
end
def should_import?
def import_confirmed?
do_import == "1"
end
@ -111,10 +111,6 @@ class ScenarioImport
@scenario || @existing_scenario
end
def will_request_local?(url_root)
data.blank? && file.blank? && url.present? && url.starts_with?(url_root)
end
protected
def parse_file

View file

@ -317,7 +317,7 @@ describe ScenarioImport do
end
end
context "when an a scenario already exists with the given guid" do
context "when an a scenario already exists with the given guid for the importing user" do
let!(:existing_scenario) do
_existing_scenerio = users(:bob).scenarios.build(:name => "an existing scenario", :description => "something")
_existing_scenerio.guid = guid
@ -507,6 +507,31 @@ describe ScenarioImport do
end
end
end
context "when an a scenario already exists with the given guid for the a different user" do
let!(:existing_scenario) do
_existing_scenerio = users(:jane).scenarios.build(:name => "an existing scenario", :description => "something")
_existing_scenerio.guid = guid
_existing_scenerio.save!
_existing_scenerio
end
describe "#import" do
it "makes a new scenario" do
expect {
scenario_import.import(:skip_agents => true)
}.to change { users(:bob).scenarios.count }.by(1)
expect(scenario_import.scenario.name).to eq(name)
expect(scenario_import.scenario.description).to eq(description)
expect(scenario_import.scenario.guid).to eq(guid)
expect(scenario_import.scenario.tag_fg_color).to eq(tag_fg_color)
expect(scenario_import.scenario.tag_bg_color).to eq(tag_bg_color)
expect(scenario_import.scenario.source_url).to eq(source_url)
expect(scenario_import.scenario.public).to be_falsey
end
end
end
context "agents which require a service" do
let(:valid_parsed_services) do