Merge pull request #1938 from jguthrie100/fix_no_trace_description_error

Fixes "new trace" validation error
This commit is contained in:
Andy Allan 2018-08-29 14:49:26 +08:00 committed by GitHub
commit 942e62117f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 1 deletions

View file

@ -117,7 +117,12 @@ class TracesController < ApplicationController
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

View file

@ -1700,6 +1700,7 @@ en:
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."

View file

@ -571,6 +571,21 @@ class TracesControllerTest < ActionController::TestCase
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")