]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/changeset_controller.rb
Added tests for changeset close method.
[rails.git] / app / controllers / changeset_controller.rb
index cd49176e63e105e16819cdc00f392189594e58d9..1e6a44189ba1bac5cd0f8508dbdb71419cf86ba5 100644 (file)
@@ -38,25 +38,28 @@ class ChangesetController < ApplicationController
     end
   end
   
+  ##
+  # marks a changeset as closed. this may be called multiple times
+  # on the same changeset, so is idempotent.
   def close 
-    begin
-      unless request.put?
-        render :nothing => true, :status => :method_not_allowed
-        return
-      end
-
-      changeset = Changeset.find(params[:id])
-
-      unless @user.id == changeset.user_id 
-        raise OSM::APIUserChangesetMismatchError 
-      end
-
-      changeset.open = false
-      changeset.save!
-      render :nothing => true
-    rescue ActiveRecord::RecordNotFound
-      render :nothing => true, :status => :not_found
+    unless request.put?
+      render :nothing => true, :status => :method_not_allowed
+      return
+    end
+    
+    changeset = Changeset.find(params[:id])
+    
+    unless @user.id == changeset.user_id 
+      raise OSM::APIUserChangesetMismatchError 
     end
+    
+    changeset.open = false
+    changeset.save!
+    render :nothing => true
+  rescue ActiveRecord::RecordNotFound
+    render :nothing => true, :status => :not_found
+  rescue OSM::APIError => ex
+    render ex.render_opts
   end
 
   ##