Skip to content

Instantly share code, notes, and snippets.

@mskog
Created May 23, 2016 07:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mskog/3906a53df914f768b214de64463d5fde to your computer and use it in GitHub Desktop.
Save mskog/3906a53df914f768b214de64463d5fde to your computer and use it in GitHub Desktop.
diff --git a/app/business_logic/services/broadband_provider_actions/backends/task.rb b/app/business_logic/services/broadband_provider_actions/backends/task.rb
index c6968d9..726e40e 100644
--- a/app/business_logic/services/broadband_provider_actions/backends/task.rb
+++ b/app/business_logic/services/broadband_provider_actions/backends/task.rb
@@ -26,7 +26,7 @@ module Services
def undo
original_command = track_back_object.command.sub('Undo', '')
original_action = track_back_object.event.actions.find_by(command: original_command)
- task = original_action.result
+ task = original_action.try(:result)
return unless task
Interactors::Tasks::Cancel.new(id: task.id, track_back_object: track_back_object).perform
end
diff --git a/spec/business_logic/services/broadband_provider_actions/backends/task_spec.rb b/spec/business_logic/services/broadband_provider_actions/backends/task_spec.rb
index c052789..8f190a7 100644
--- a/spec/business_logic/services/broadband_provider_actions/backends/task_spec.rb
+++ b/spec/business_logic/services/broadband_provider_actions/backends/task_spec.rb
@@ -46,6 +46,12 @@ describe Services::BroadbandProviderActions::Backends::Task do
And{expect(task.task_type).to eq expected_task_type}
end
+ shared_examples_for "undo action with no result on the event" do
+ Given!(:previous_action){nil}
+ When{subject.undo}
+ Then{expect(task).to be_nil}
+ end
+
describe "#perform" do
Given(:task){Task.last}
@@ -76,6 +82,10 @@ describe Services::BroadbandProviderActions::Backends::Task do
Then{expect(result).to_not have_failed}
And{expect(Task.count).to be_zero}
end
+
+ context "with an undo action and no previous task is found" do
+ include_examples "undo action with no result on the event"
+ end
end
context "cancel" do
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment