Patch looks good, and works for the most part (against most objects I tested including providers, hardware profiles, templates, etc). Two entities that it didn't work for were users and pools.
eg navigate to the users admin, create a new user, open that user's details in a new tab, delete the user in the first tab, and then refresh the user's details. Instead of redirecting to the users list and displaying an error it displays an alternate user.
Additionally doing the same w/ pools results in redirecting problem.
Once the pools/users use cases are taken care of, I'll ack.
Thanks, -Mo
On 03/23/2011 08:58 AM, mtaylor@redhat.com wrote:
From: Martyn Taylormtaylor@redhat.com
src/app/controllers/application_controller.rb | 6 +++++ src/features/error_handling.feature | 21 ++++++++++++++++++++ .../step_definitions/error_handling_steps.rb | 4 +++ 3 files changed, 31 insertions(+), 0 deletions(-) create mode 100644 src/features/error_handling.feature create mode 100644 src/features/step_definitions/error_handling_steps.rb
diff --git a/src/app/controllers/application_controller.rb b/src/app/controllers/application_controller.rb index a720939..380cfac 100644 --- a/src/app/controllers/application_controller.rb +++ b/src/app/controllers/application_controller.rb @@ -35,6 +35,7 @@ class ApplicationController< ActionController::Base rescue_from PermissionError, :with => :handle_perm_error rescue_from ActionError, :with => :handle_action_error rescue_from PartialSuccessError, :with => :handle_partial_success_error
rescue_from ActiveRecord::RecordNotFound, :with => :handle_active_record_not_found_error
helper_method :check_privilege
@@ -136,6 +137,11 @@ class ApplicationController< ActionController::Base end end
- def handle_active_record_not_found_error(error)
- redirect_to :back
- flash[:notice] = "The record you tried to access does not exist, it may have been deleted"
- end
- private def json_error_hash(msg, status) json = {}
diff --git a/src/features/error_handling.feature b/src/features/error_handling.feature new file mode 100644 index 0000000..bc5d171 --- /dev/null +++ b/src/features/error_handling.feature @@ -0,0 +1,21 @@ +Feature: Error Handling
- In order to order to perform operations upon site objects
- As a user
- I must be able to correctly view any object errors
- Background:
- Given I am an authorised user
- And I am logged in
- @allow-rescue
- Scenario: Display Record Not Found error for a deleted object
- Given there are the following conductor hardware profiles:
- | name | memory | cpu |storage | architecture |
- | m1-small | 1740 | 2 | 160 | i386 |
- | m1-large | 4096 | 4 | 850 | x86_64 |
- | m1-xlarge | 8192 | 8 | 1690 | x86_64 |
- And I am on the hardware profiles page
- When another user deletes hardware profile "m1-small"
- And I follow "m1-small"
- Then I should be on the hardware profiles page
- And I should see "The record you tried to access does not exist, it may have been deleted"
\ No newline at end of file diff --git a/src/features/step_definitions/error_handling_steps.rb b/src/features/step_definitions/error_handling_steps.rb new file mode 100644 index 0000000..6889de0 --- /dev/null +++ b/src/features/step_definitions/error_handling_steps.rb @@ -0,0 +1,4 @@ +When /^another user deletes hardware profile "([^"]*)"$/ do |name|
- hwp = HardwareProfile.find_by_name(name)
- hwp.delete
+end \ No newline at end of file