From 6435f0024ce2223ca89a8ace0040ed5a471cdd26 Mon Sep 17 00:00:00 2001
From: Will Read <will.read@gmail.com>
Date: Mon, 7 Dec 2015 01:37:56 +0000
Subject: [PATCH] Allow multiple users to import the same scenario

- renames should_import? to import_confirmed? for readability

Related issue: #968
---
 .../scenario_imports_controller.rb            |  6 +----
 app/models/scenario_import.rb                 |  6 +----
 spec/models/scenario_import_spec.rb           | 27 ++++++++++++++++++-
 3 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/app/controllers/scenario_imports_controller.rb b/app/controllers/scenario_imports_controller.rb
index 531aa19d..748b855c 100644
--- a/app/controllers/scenario_imports_controller.rb
+++ b/app/controllers/scenario_imports_controller.rb
@@ -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"
diff --git a/app/models/scenario_import.rb b/app/models/scenario_import.rb
index f6f943eb..4a93c033 100644
--- a/app/models/scenario_import.rb
+++ b/app/models/scenario_import.rb
@@ -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
diff --git a/spec/models/scenario_import_spec.rb b/spec/models/scenario_import_spec.rb
index e786d6f5..a8cd3bd1 100644
--- a/spec/models/scenario_import_spec.rb
+++ b/spec/models/scenario_import_spec.rb
@@ -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