do_create(params[:trace][:gpx_file], params[:trace][:tagstring],
params[:trace][:description], params[:trace][:visibility])
rescue StandardError => ex
- logger.debug ex
+ if @trace.valid?
+ flash[:error] = t("traces.create.upload_failed")
+ logger.debug ex
+ end
+ render :action => "new"
+ return
end
if @trace.id
create:
upload_trace: "Upload GPS Trace"
trace_uploaded: "Your GPX file has been uploaded and is awaiting insertion in to the database. This will usually happen within half an hour, and an email will be sent to you on completion."
+ upload_failed: "Sorry, the GPX upload failed. An administrator has been alerted to the error. Please try again"
traces_waiting:
one: "You have %{count} trace waiting for upload. Please consider waiting for these to finish before uploading any more, so as not to block the queue for other users."
other: "You have %{count} traces waiting for upload. Please consider waiting for these to finish before uploading any more, so as not to block the queue for other users."
assert_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
end
+ # Test creating a trace with validation errors
+ def test_create_post_with_validation_errors
+ # Get file to use
+ fixture = Rails.root.join("test", "gpx", "fixtures", "a.gpx")
+ file = Rack::Test::UploadedFile.new(fixture, "application/gpx+xml")
+ user = create(:user)
+
+ # Now authenticated
+ create(:user_preference, :user => user, :k => "gps.trace.visibility", :v => "identifiable")
+ assert_not_equal "trackable", user.preferences.where(:k => "gps.trace.visibility").first.v
+ post :create, :params => { :trace => { :gpx_file => file, :description => "", :tagstring => "new,trace", :visibility => "trackable" } }, :session => { :user => user }
+ assert_template :new
+ assert_match "Description is too short (minimum is 1 character)", response.body
+ end
+
# Test fetching the edit page for a trace using GET
def test_edit_get
public_trace_file = create(:trace, :visibility => "public")