]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'openstreetmap/pull/1553'
authorTom Hughes <tom@compton.nu>
Fri, 2 Jun 2017 19:34:17 +0000 (20:34 +0100)
committerTom Hughes <tom@compton.nu>
Fri, 2 Jun 2017 19:34:17 +0000 (20:34 +0100)
143 files changed:
.rubocop.yml
.rubocop_todo.yml
Gemfile
Gemfile.lock
app/controllers/api_controller.rb
app/controllers/application_controller.rb
app/controllers/changeset_controller.rb
app/controllers/diary_entry_controller.rb
app/controllers/geocoder_controller.rb
app/controllers/node_controller.rb
app/controllers/oauth_controller.rb
app/controllers/old_controller.rb
app/controllers/relation_controller.rb
app/controllers/search_controller.rb
app/controllers/site_controller.rb
app/controllers/swf_controller.rb
app/controllers/trace_controller.rb
app/controllers/user_controller.rb
app/controllers/user_preference_controller.rb
app/controllers/user_roles_controller.rb
app/controllers/way_controller.rb
app/helpers/browse_helper.rb
app/models/changeset.rb
app/models/client_application.rb
app/models/diary_entry.rb
app/models/node.rb
app/models/note.rb
app/models/note_comment.rb
app/models/redaction.rb
app/models/relation.rb
app/models/trace.rb
app/models/user.rb
app/models/user_role.rb
app/models/way.rb
app/views/changeset/list.atom.builder
app/views/geocoder/search.html.erb
app/views/layouts/_header.html.erb
app/views/message/read.html.erb
app/views/user/list.html.erb
config/application.rb
config/initializers/abstract_adapter.rb
config/initializers/action_dispatch.rb
config/initializers/assets.rb
config/initializers/i18n.rb
config/initializers/omniauth.rb
config/initializers/router.rb
config/initializers/sanitize.rb
config/initializers/secure_headers.rb
config/initializers/session.rb [deleted file]
db/migrate/001_create_osm_db.rb
db/migrate/002_cleanup_osm_db.rb
db/migrate/004_user_enhancements.rb
db/migrate/005_tile_tracepoints.rb
db/migrate/006_tile_nodes.rb
db/migrate/007_add_relations.rb
db/migrate/008_remove_segments.rb
db/migrate/010_diary_comments.rb
db/migrate/020_populate_node_tags_and_remove.rb
db/migrate/021_move_to_innodb.rb
db/migrate/023_add_changesets.rb
db/migrate/028_add_more_changeset_indexes.rb
db/migrate/039_add_more_controls_to_gpx_files.rb
db/migrate/041_add_fine_o_auth_permissions.rb
db/migrate/044_create_user_roles.rb
db/migrate/051_add_status_to_user.rb
db/migrate/053_add_map_bug_tables.rb
db/migrate/057_add_map_bug_comment_event.rb
db/migrate/20120214210114_add_text_format.rb
lib/editors.rb
lib/migrate.rb
lib/quad_tile.rb
script/statistics
script/update-spam-blocks
test/controllers/amf_controller_test.rb
test/controllers/api_controller_test.rb
test/controllers/browse_controller_test.rb
test/controllers/changeset_controller_test.rb
test/controllers/geocoder_controller_test.rb
test/controllers/node_controller_test.rb
test/controllers/old_node_controller_test.rb
test/controllers/old_relation_controller_test.rb
test/controllers/old_way_controller_test.rb
test/controllers/redactions_controller_test.rb
test/controllers/relation_controller_test.rb
test/controllers/search_controller_test.rb
test/controllers/site_controller_test.rb
test/controllers/swf_controller_test.rb
test/controllers/trace_controller_test.rb
test/controllers/user_blocks_controller_test.rb
test/controllers/user_controller_test.rb
test/controllers/user_preference_controller_test.rb
test/controllers/way_controller_test.rb
test/fixtures/changesets.yml [deleted file]
test/fixtures/current_nodes.yml [deleted file]
test/fixtures/current_relation_members.yml [deleted file]
test/fixtures/current_relations.yml [deleted file]
test/fixtures/current_way_nodes.yml [deleted file]
test/fixtures/current_ways.yml [deleted file]
test/fixtures/nodes.yml [deleted file]
test/fixtures/redactions.yml [deleted file]
test/fixtures/relation_members.yml [deleted file]
test/fixtures/relations.yml [deleted file]
test/fixtures/user_roles.yml [deleted file]
test/fixtures/users.yml [deleted file]
test/fixtures/way_nodes.yml [deleted file]
test/fixtures/ways.yml [deleted file]
test/helpers/application_helper_test.rb
test/helpers/browse_helper_test.rb
test/helpers/title_helper_test.rb
test/integration/client_applications_test.rb
test/integration/page_locale_test.rb
test/integration/user_changeset_comments_test.rb
test/integration/user_creation_test.rb
test/integration/user_diaries_test.rb
test/integration/user_login_test.rb
test/lib/bounding_box_test.rb
test/lib/i18n_test.rb
test/models/changeset_comment_test.rb
test/models/changeset_tag_test.rb
test/models/changeset_test.rb
test/models/friend_test.rb
test/models/language_test.rb
test/models/message_test.rb
test/models/node_tag_test.rb
test/models/node_test.rb
test/models/note_comment_test.rb
test/models/note_test.rb
test/models/oauth_nonce_test.rb
test/models/old_node_tag_test.rb
test/models/old_relation_tag_test.rb
test/models/old_relation_test.rb
test/models/old_way_tag_test.rb
test/models/old_way_test.rb
test/models/redaction_test.rb
test/models/relation_member_test.rb
test/models/relation_tag_test.rb
test/models/relation_test.rb
test/models/request_token_test.rb
test/models/user_test.rb
test/models/way_node_test.rb
test/models/way_tag_test.rb
test/models/way_test.rb
test/test_helper.rb

index a31adf03bed73486bfb2c7f532ab61aad0cad8e3..e1f1724e0f995623182ed9025b71b5dbdfd65bf5 100644 (file)
@@ -24,18 +24,21 @@ AllCops:
 Rails:
   Enabled: true
 
+Layout/ExtraSpacing:
+  AllowForAlignment: true
+
 Style/BracesAroundHashParameters:
   EnforcedStyle: context_dependent
 
-Style/ExtraSpacing:
-  AllowForAlignment: true
-
 Style/FileName:
   Exclude:
     - 'script/deliver-message'
     - 'script/locale/reload-languages'
     - 'script/update-spam-blocks'
 
+Style/FormatStringToken:
+  EnforcedStyle: template
+
 Style/IfInsideElse:
   Enabled: false
 
@@ -55,6 +58,12 @@ Style/HashSyntax:
 Style/StringLiterals:
   EnforcedStyle: double_quotes
 
+Style/SymbolArray:
+  EnforcedStyle: brackets
+
+Rails/ApplicationRecord:
+  Enabled: false
+
 Rails/HttpPositionalArguments:
   Enabled: false
 
index 03fa82f0f62e336e08549329a5ae362a8426068a..ce7e5d9b2e584c688d0b393839fb403d419b9653 100644 (file)
@@ -64,7 +64,7 @@ Metrics/BlockNesting:
 # Offense count: 62
 # Configuration parameters: CountComments.
 Metrics/ClassLength:
-  Max: 1705
+  Max: 1782
 
 # Offense count: 69
 Metrics/CyclomaticComplexity:
diff --git a/Gemfile b/Gemfile
index 0f65c9c1dbfa5695b85fca93c1131dd98c170431..278167d6611943d97360516ec4eaa78dea31fb58 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -46,7 +46,7 @@ gem "composite_primary_keys", "~> 8.1.0"
 gem "deadlock_retry", ">= 1.2.0"
 gem "dynamic_form"
 gem "http_accept_language", "~> 2.0.0"
-gem "i18n-js", ">= 3.0.0.rc10"
+gem "i18n-js", ">= 3.0.0"
 gem "oauth-plugin", ">= 0.5.1"
 gem "paperclip", "~> 4.0"
 gem "rack-cors"
index 03b033199303d99ded745205859e6cf9eb9ff224..830d9775fc66fd303d4469006df39b55ffbaccfd 100644 (file)
@@ -38,24 +38,24 @@ GEM
       minitest (~> 5.1)
       thread_safe (~> 0.3, >= 0.3.4)
       tzinfo (~> 1.1)
-    addressable (2.5.0)
+    addressable (2.5.1)
       public_suffix (~> 2.0, >= 2.0.2)
     arel (6.0.4)
     ast (2.3.0)
-    autoprefixer-rails (6.7.7.1)
+    autoprefixer-rails (7.1.1)
       execjs
     bigdecimal (1.1.0)
     builder (3.2.3)
-    canonical-rails (0.1.2)
-      rails (>= 4.1, < 5.1)
-    capybara (2.13.0)
+    canonical-rails (0.2.0)
+      rails (>= 4.1, < 5.2)
+    capybara (2.14.0)
       addressable
       mime-types (>= 1.16)
       nokogiri (>= 1.3.3)
       rack (>= 1.0.0)
       rack-test (>= 0.5.4)
       xpath (~> 2.0)
-    climate_control (0.1.0)
+    climate_control (0.2.0)
     cliver (0.3.2)
     cocaine (0.5.8)
       climate_control (>= 0.0.3, < 1.0)
@@ -67,14 +67,14 @@ GEM
       execjs
     coffee-script-source (1.12.2)
     colorize (0.8.1)
-    composite_primary_keys (8.1.4)
+    composite_primary_keys (8.1.6)
       activerecord (~> 4.2.0)
     concurrent-ruby (1.0.5)
-    coveralls (0.8.19)
+    coveralls (0.8.21)
       json (>= 1.8, < 3)
-      simplecov (~> 0.12.0)
+      simplecov (~> 0.14.1)
       term-ansicolor (~> 1.3)
-      thor (~> 0.19.1)
+      thor (~> 0.19.4)
       tins (~> 1.6)
     crack (0.4.3)
       safe_yaml (~> 1.0.0)
@@ -95,22 +95,22 @@ GEM
       multipart-post (>= 1.2, < 3)
     fspath (3.1.0)
     geoip (1.6.3)
-    globalid (0.3.7)
-      activesupport (>= 4.1.0)
-    hashdiff (0.3.2)
+    globalid (0.4.0)
+      activesupport (>= 4.2.0)
+    hashdiff (0.3.4)
     hashie (3.5.5)
     htmlentities (4.3.4)
     http_accept_language (2.0.5)
-    i18n (0.8.1)
-    i18n-js (3.0.0.rc16)
+    i18n (0.8.4)
+    i18n-js (3.0.0)
       i18n (~> 0.6, >= 0.6.6)
-    image_optim (0.24.2)
+    image_optim (0.24.3)
       exifr (~> 1.2, >= 1.2.2)
       fspath (~> 3.0)
       image_size (~> 1.5)
       in_threads (~> 1.3)
       progress (~> 3.0, >= 3.0.1)
-    image_optim_rails (0.3.0)
+    image_optim_rails (0.4.0)
       image_optim (~> 0.24.0)
       rails
       sprockets
@@ -124,7 +124,7 @@ GEM
       execjs (>= 1.4.0)
       multi_json (~> 1.0)
       therubyracer (~> 0.12.1)
-    json (2.0.3)
+    json (2.1.0)
     jsonify (0.3.1)
       multi_json (~> 1.0)
     jsonify-rails (0.3.2)
@@ -149,20 +149,20 @@ GEM
       request_store
     loofah (2.0.3)
       nokogiri (>= 1.5.9)
-    mail (2.6.4)
+    mail (2.6.5)
       mime-types (>= 1.16, < 4)
     mime-types (3.1)
       mime-types-data (~> 3.2015)
     mime-types-data (3.2016.0521)
     mimemagic (0.3.0)
     mini_portile2 (2.1.0)
-    minitest (5.10.1)
+    minitest (5.10.2)
     multi_json (1.12.1)
     multi_xml (0.6.0)
     multipart-post (2.0.0)
-    nokogiri (1.7.1)
+    nokogiri (1.7.2)
       mini_portile2 (~> 2.1.0)
-    nokogumbo (1.4.9)
+    nokogumbo (1.4.12)
       nokogiri
     oauth (0.4.7)
     oauth-plugin (0.5.1)
@@ -170,8 +170,8 @@ GEM
       oauth (~> 0.4.4)
       oauth2 (>= 0.5.0)
       rack
-    oauth2 (1.3.0)
-      faraday (>= 0.8, < 0.11)
+    oauth2 (1.3.1)
+      faraday (>= 0.8, < 0.12)
       jwt (~> 1.0)
       multi_json (~> 1.3)
       multi_xml (~> 0.5)
@@ -181,11 +181,11 @@ GEM
       rack (>= 1.6.2, < 3)
     omniauth-facebook (4.0.0)
       omniauth-oauth2 (~> 1.2)
-    omniauth-github (1.2.3)
+    omniauth-github (1.3.0)
       omniauth (~> 1.5)
       omniauth-oauth2 (>= 1.4.0, < 2.0)
-    omniauth-google-oauth2 (0.4.1)
-      jwt (~> 1.5.2)
+    omniauth-google-oauth2 (0.5.0)
+      jwt (~> 1.5)
       multi_json (~> 1.3)
       omniauth (>= 1.1.1)
       omniauth-oauth2 (>= 1.3.1)
@@ -210,10 +210,11 @@ GEM
       cocaine (~> 0.5.5)
       mime-types
       mimemagic (= 0.3.0)
+    parallel (1.11.2)
     parser (2.4.0.0)
       ast (~> 2.2)
     pg (0.20.0)
-    poltergeist (1.14.0)
+    poltergeist (1.15.0)
       capybara (~> 2.1)
       cliver (~> 0.3.1)
       websocket-driver (>= 0.2.0)
@@ -222,7 +223,7 @@ GEM
     psych (2.2.4)
     public_suffix (2.0.5)
     r2 (0.2.6)
-    rack (1.6.5)
+    rack (1.6.8)
     rack-cors (0.4.1)
     rack-openid (1.3.1)
       rack (>= 1.1.0)
@@ -257,14 +258,16 @@ GEM
       activesupport (= 4.2.8)
       rake (>= 0.8.7)
       thor (>= 0.18.1, < 2.0)
-    rainbow (2.2.1)
+    rainbow (2.2.2)
+      rake
     rake (12.0.0)
     redcarpet (3.4.0)
     ref (2.0.0)
     request_store (1.3.2)
     rinku (2.0.2)
     rotp (3.3.0)
-    rubocop (0.47.1)
+    rubocop (0.49.1)
+      parallel (~> 1.10)
       parser (>= 2.3.3.1, < 3.0)
       powerpack (~> 0.1)
       rainbow (>= 1.99.1, < 3.0)
@@ -277,20 +280,20 @@ GEM
       crass (~> 1.0.2)
       nokogiri (>= 1.4.4)
       nokogumbo (~> 1.4.1)
-    sass (3.4.23)
+    sass (3.4.24)
     sass-rails (5.0.6)
       railties (>= 4.0.0, < 6)
       sass (~> 3.1)
       sprockets (>= 2.8, < 4.0)
       sprockets-rails (>= 2.0, < 4.0)
       tilt (>= 1.1, < 3)
-    secure_headers (3.6.2)
+    secure_headers (3.6.4)
       useragent
-    simplecov (0.12.0)
+    simplecov (0.14.1)
       docile (~> 1.1.0)
       json (>= 1.8, < 3)
       simplecov-html (~> 0.10.0)
-    simplecov-html (0.10.0)
+    simplecov-html (0.10.1)
     sprockets (3.7.1)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
@@ -298,7 +301,7 @@ GEM
       actionpack (>= 4.0)
       activesupport (>= 4.0)
       sprockets (>= 3.0.0)
-    term-ansicolor (1.4.0)
+    term-ansicolor (1.6.0)
       tins (~> 1.0)
     therubyracer (0.12.3)
       libv8 (~> 3.16.14.15)
@@ -307,24 +310,24 @@ GEM
     thread_safe (0.3.6)
     tilt (2.0.7)
     timecop (0.8.1)
-    tins (1.13.2)
-    tzinfo (1.2.2)
+    tins (1.14.0)
+    tzinfo (1.2.3)
       thread_safe (~> 0.1)
-    uglifier (3.1.9)
+    uglifier (3.2.0)
       execjs (>= 0.3.0, < 3)
-    unicode-display_width (1.1.3)
+    unicode-display_width (1.2.1)
     useragent (0.16.8)
     validates_email_format_of (1.6.3)
       i18n
     vendorer (0.1.16)
-    webmock (2.3.2)
+    webmock (3.0.1)
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
       hashdiff
     websocket-driver (0.6.5)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.2)
-    xpath (2.0.0)
+    xpath (2.1.0)
       nokogiri (~> 1.3)
 
 PLATFORMS
@@ -347,7 +350,7 @@ DEPENDENCIES
   geoip
   htmlentities
   http_accept_language (~> 2.0.0)
-  i18n-js (>= 3.0.0.rc10)
+  i18n-js (>= 3.0.0)
   image_optim_rails
   jquery-rails
   jshint
index ce1a217cd130c5fa5e07ac210a56b1c9621435f8..c36ded1c0bff58123ab690b2bc754dc557a48728 100644 (file)
@@ -100,7 +100,7 @@ class ApiController < ApplicationController
 
     response.headers["Content-Disposition"] = "attachment; filename=\"tracks.gpx\""
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   # This is probably the most common call of all. It is used for getting the
@@ -198,7 +198,7 @@ class ApiController < ApplicationController
 
     response.headers["Content-Disposition"] = "attachment; filename=\"map.osm\""
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   # Get a list of the tiles that have changed within a specified time
@@ -241,9 +241,9 @@ class ApiController < ApplicationController
 
       doc.root << changes
 
-      render :text => doc.to_s, :content_type => "text/xml"
+      render :xml => doc.to_s
     else
-      render :text => "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours", :status => :bad_request
+      render :plain => "Requested zoom is invalid, or the supplied start is after the end time, or the start duration is more than 24 hours", :status => :bad_request
     end
   end
 
@@ -294,7 +294,7 @@ class ApiController < ApplicationController
     policy << blacklist
     doc.root << policy
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   # External apps that use the api are able to query which permissions
index 2ceeda7bea9f62fd24c8220cf239cba776b01e96..14490488507bc5775924d8c2e0f93a7daccf548f 100644 (file)
@@ -41,7 +41,7 @@ class ApplicationController < ActionController::Base
       if request.get?
         redirect_to :controller => "user", :action => "login", :referer => request.fullpath
       else
-        render :text => "", :status => :forbidden
+        head :forbidden
       end
     end
   end
@@ -127,7 +127,7 @@ class ApplicationController < ActionController::Base
         flash[:error] = t("application.require_moderator.not_a_moderator")
         redirect_to :action => "index"
       else
-        render :text => "", :status => :forbidden
+        head :forbidden
       end
     end
   end
@@ -181,7 +181,7 @@ class ApplicationController < ActionController::Base
     unless @user
       # no auth, the user does not exist or the password was wrong
       response.headers["WWW-Authenticate"] = "Basic realm=\"#{realm}\""
-      render :text => errormessage, :status => :unauthorized
+      render :plain => errormessage, :status => :unauthorized
       return false
     end
   end
@@ -197,7 +197,7 @@ class ApplicationController < ActionController::Base
   def authorize_moderator(errormessage = "Access restricted to moderators")
     # check user is a moderator
     unless @user.moderator?
-      render :text => errormessage, :status => :forbidden
+      render :plain => errormessage, :status => :forbidden
       false
     end
   end
@@ -288,9 +288,9 @@ class ApplicationController < ActionController::Base
       result.root << (XML::Node.new("status") << "#{Rack::Utils.status_code(status)} #{Rack::Utils::HTTP_STATUS_CODES[status]}")
       result.root << (XML::Node.new("message") << message)
 
-      render :text => result.to_s, :content_type => "text/xml"
+      render :xml => result.to_s
     else
-      render :text => message, :status => status, :content_type => "text/plain"
+      render :plain => message, :status => status
     end
   end
 
@@ -321,7 +321,7 @@ class ApplicationController < ActionController::Base
   def api_call_handle_error
     yield
   rescue ActiveRecord::RecordNotFound => ex
-    render :text => "", :status => :not_found
+    head :not_found
   rescue LibXML::XML::Error, ArgumentError => ex
     report_error ex.message, :bad_request
   rescue ActiveRecord::RecordInvalid => ex
@@ -391,7 +391,7 @@ class ApplicationController < ActionController::Base
 
     respond_to do |format|
       format.html { render :template => "user/no_such_user", :status => :not_found }
-      format.all { render :text => "", :status => :not_found }
+      format.all { head :not_found }
     end
   end
 
@@ -410,9 +410,9 @@ class ApplicationController < ActionController::Base
 
   def map_layout
     append_content_security_policy_directives(
-      :connect_src => %w(nominatim.openstreetmap.org overpass-api.de router.project-osrm.org valhalla.mapzen.com),
-      :script_src => %w(graphhopper.com open.mapquestapi.com),
-      :img_src => %w(developer.mapquest.com)
+      :connect_src => %w[nominatim.openstreetmap.org overpass-api.de router.project-osrm.org valhalla.mapzen.com],
+      :script_src => %w[graphhopper.com open.mapquestapi.com],
+      :img_src => %w[developer.mapquest.com]
     )
 
     if STATUS == :database_offline || STATUS == :api_offline
index da066a73afa4bc703f293067ad536ea7c63536e7..71fc2a59a58659e5cc37efc3169f77891a57f04d 100644 (file)
@@ -34,7 +34,7 @@ class ChangesetController < ApplicationController
     # Subscribe user to changeset comments
     cs.subscribers << @user
 
-    render :text => cs.id.to_s, :content_type => "text/plain"
+    render :plain => cs.id.to_s
   end
 
   ##
@@ -43,7 +43,7 @@ class ChangesetController < ApplicationController
   def read
     changeset = Changeset.find(params[:id])
 
-    render :text => changeset.to_xml(params[:include_discussion].presence).to_s, :content_type => "text/xml"
+    render :xml => changeset.to_xml(params[:include_discussion].presence).to_s
   end
 
   ##
@@ -61,7 +61,7 @@ class ChangesetController < ApplicationController
     changeset.set_closed_time_now
 
     changeset.save!
-    render :text => ""
+    render :nothing => true
   end
 
   ##
@@ -104,7 +104,7 @@ class ChangesetController < ApplicationController
     # save the larger bounding box and return the changeset, which
     # will include the bigger bounding box.
     cs.save!
-    render :text => cs.to_xml.to_s, :content_type => "text/xml"
+    render :xml => cs.to_xml.to_s
   end
 
   ##
@@ -132,7 +132,7 @@ class ChangesetController < ApplicationController
     diff_reader = DiffReader.new(request.raw_post, changeset)
     Changeset.transaction do
       result = diff_reader.commit
-      render :text => result.to_s, :content_type => "text/xml"
+      render :xml => result.to_s
     end
   end
 
@@ -197,7 +197,7 @@ class ChangesetController < ApplicationController
         end
     end
 
-    render :text => result.to_s, :content_type => "text/xml"
+    render :xml => result.to_s
   end
 
   ##
@@ -224,7 +224,7 @@ class ChangesetController < ApplicationController
       results.root << cs.to_xml_node
     end
 
-    render :text => results.to_s, :content_type => "text/xml"
+    render :xml => results.to_s
   end
 
   ##
@@ -244,52 +244,54 @@ class ChangesetController < ApplicationController
 
     check_changeset_consistency(changeset, @user)
     changeset.update_from(new_changeset, @user)
-    render :text => changeset.to_xml, :mime_type => "text/xml"
+    render :xml => changeset.to_xml
   end
 
   ##
-  # list edits (open changesets) in reverse chronological order
+  # list non-empty changesets in reverse chronological order
   def list
-    if request.format == :atom && params[:max_id]
-      redirect_to url_for(params.merge(:max_id => nil)), :status => :moved_permanently
+    @params = params.permit(:display_name, :bbox, :friends, :nearby, :max_id, :list)
+
+    if request.format == :atom && @params[:max_id]
+      redirect_to url_for(@params.merge(:max_id => nil)), :status => :moved_permanently
       return
     end
 
-    if params[:display_name]
-      user = User.find_by(:display_name => params[:display_name])
+    if @params[:display_name]
+      user = User.find_by(:display_name => @params[:display_name])
       if !user || !user.active?
-        render_unknown_user params[:display_name]
+        render_unknown_user @params[:display_name]
         return
       end
     end
 
-    if (params[:friends] || params[:nearby]) && !@user
+    if (@params[:friends] || @params[:nearby]) && !@user
       require_user
       return
     end
 
-    if request.format == :html && !params[:list]
+    if request.format == :html && !@params[:list]
       require_oauth
       render :action => :history, :layout => map_layout
     else
       changesets = conditions_nonempty(Changeset.all)
 
-      if params[:display_name]
+      if @params[:display_name]
         changesets = if user.data_public? || user == @user
                        changesets.where(:user_id => user.id)
                      else
                        changesets.where("false")
                      end
-      elsif params[:bbox]
+      elsif @params[:bbox]
         changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params))
-      elsif params[:friends] && @user
+      elsif @params[:friends] && @user
         changesets = changesets.where(:user_id => @user.friend_users.identifiable)
-      elsif params[:nearby] && @user
+      elsif @params[:nearby] && @user
         changesets = changesets.where(:user_id => @user.nearby)
       end
 
-      if params[:max_id]
-        changesets = changesets.where("changesets.id <= ?", params[:max_id])
+      if @params[:max_id]
+        changesets = changesets.where("changesets.id <= ?", @params[:max_id])
       end
 
       @edits = changesets.order("changesets.id DESC").limit(20).preload(:user, :changeset_tags, :comments)
@@ -335,7 +337,7 @@ class ChangesetController < ApplicationController
     changeset.subscribers << @user unless changeset.subscribers.exists?(@user.id)
 
     # Return a copy of the updated changeset
-    render :text => changeset.to_xml.to_s, :content_type => "text/xml"
+    render :xml => changeset.to_xml.to_s
   end
 
   ##
@@ -356,7 +358,7 @@ class ChangesetController < ApplicationController
     changeset.subscribers << @user
 
     # Return a copy of the updated changeset
-    render :text => changeset.to_xml.to_s, :content_type => "text/xml"
+    render :xml => changeset.to_xml.to_s
   end
 
   ##
@@ -377,7 +379,7 @@ class ChangesetController < ApplicationController
     changeset.subscribers.delete(@user)
 
     # Return a copy of the updated changeset
-    render :text => changeset.to_xml.to_s, :content_type => "text/xml"
+    render :xml => changeset.to_xml.to_s
   end
 
   ##
@@ -396,7 +398,7 @@ class ChangesetController < ApplicationController
     comment.update(:visible => false)
 
     # Return a copy of the updated changeset
-    render :text => comment.changeset.to_xml.to_s, :content_type => "text/xml"
+    render :xml => comment.changeset.to_xml.to_s
   end
 
   ##
@@ -415,7 +417,7 @@ class ChangesetController < ApplicationController
     comment.update(:visible => true)
 
     # Return a copy of the updated changeset
-    render :text => comment.changeset.to_xml.to_s, :content_type => "text/xml"
+    render :xml => comment.changeset.to_xml.to_s
   end
 
   ##
@@ -440,7 +442,7 @@ class ChangesetController < ApplicationController
       format.rss
     end
   rescue OSM::APIBadUserInput
-    render :text => "", :status => :bad_request
+    head :bad_request
   end
 
   private
index 6fb255a36fc481dab4711ec2da7f75d5e5f70463..19bc84ac785e6e8193235784ab1eb65f38588911 100644 (file)
@@ -128,7 +128,7 @@ class DiaryEntryController < ApplicationController
         return
       end
     else
-      @entries = DiaryEntry.joins(:user).where(:users => { :status => %w(active confirmed) })
+      @entries = DiaryEntry.joins(:user).where(:users => { :status => %w[active confirmed] })
 
       if params[:language]
         @title = t "diary_entry.list.in_language_title", :language => Language.find(params[:language]).english_name
@@ -158,11 +158,11 @@ class DiaryEntryController < ApplicationController
         @description = I18n.t("diary_entry.feed.user.description", :user => user.display_name)
         @link = "http://#{SERVER_URL}/user/#{user.display_name}/diary"
       else
-        render :text => "", :status => :not_found
+        head :not_found
         return
       end
     else
-      @entries = DiaryEntry.joins(:user).where(:users => { :status => %w(active confirmed) })
+      @entries = DiaryEntry.joins(:user).where(:users => { :status => %w[active confirmed] })
 
       if params[:language]
         @entries = @entries.where(:language_code => params[:language])
index 57f86ec9fc7dd704d1b3e1d6347a1b6b28f8bbfd..2348425886342ec9d979a2800842da049ffef6a2 100644 (file)
@@ -10,22 +10,21 @@ class GeocoderController < ApplicationController
   before_action :require_oauth, :only => [:search]
 
   def search
-    normalize_params
-
+    @params = normalize_params
     @sources = []
 
-    if params[:lat] && params[:lon]
+    if @params[:lat] && @params[:lon]
       @sources.push "latlon"
       @sources.push "osm_nominatim_reverse"
       @sources.push "geonames_reverse" if defined?(GEONAMES_USERNAME)
-    elsif params[:query]
-      if params[:query] =~ /^\d{5}(-\d{4})?$/
+    elsif @params[:query]
+      if @params[:query] =~ /^\d{5}(-\d{4})?$/
         @sources.push "us_postcode"
         @sources.push "osm_nominatim"
-      elsif params[:query] =~ /^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i
+      elsif @params[:query] =~ /^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i
         @sources.push "uk_postcode"
         @sources.push "osm_nominatim"
-      elsif params[:query] =~ /^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i
+      elsif @params[:query] =~ /^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i
         @sources.push "ca_postcode"
         @sources.push "osm_nominatim"
       else
@@ -35,7 +34,7 @@ class GeocoderController < ApplicationController
     end
 
     if @sources.empty?
-      render :text => "", :status => :bad_request
+      head :bad_request
     else
       render :layout => map_layout
     end
@@ -316,29 +315,30 @@ class GeocoderController < ApplicationController
   end
 
   def normalize_params
-    query = params[:query]
-    return unless query
-
-    query.strip!
-
-    if latlon = query.match(/^([NS])\s*(\d{1,3}(\.\d*)?)\W*([EW])\s*(\d{1,3}(\.\d*)?)$/).try(:captures) # [NSEW] decimal degrees
-      params.merge!(nsew_to_decdeg(latlon)).delete(:query)
-    elsif latlon = query.match(/^(\d{1,3}(\.\d*)?)\s*([NS])\W*(\d{1,3}(\.\d*)?)\s*([EW])$/).try(:captures) # decimal degrees [NSEW]
-      params.merge!(nsew_to_decdeg(latlon)).delete(:query)
-
-    elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?$/).try(:captures) # [NSEW] degrees, decimal minutes
-      params.merge!(ddm_to_decdeg(latlon)).delete(:query)
-    elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\s*([NS])\W*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\s*([EW])$/).try(:captures) # degrees, decimal minutes [NSEW]
-      params.merge!(ddm_to_decdeg(latlon)).delete(:query)
-
-    elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?$/).try(:captures) # [NSEW] degrees, minutes, decimal seconds
-      params.merge!(dms_to_decdeg(latlon)).delete(:query)
-    elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]\s*([NS])\W*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?\s*([EW])$/).try(:captures) # degrees, minutes, decimal seconds [NSEW]
-      params.merge!(dms_to_decdeg(latlon)).delete(:query)
-
-    elsif latlon = query.match(/^\s*([+-]?\d+(\.\d*)?)\s*[\s,]\s*([+-]?\d+(\.\d*)?)\s*$/)
-      params.merge!(:lat => latlon[1].to_f, :lon => latlon[3].to_f).delete(:query)
+    if query = params[:query]
+      query.strip!
+
+      if latlon = query.match(/^([NS])\s*(\d{1,3}(\.\d*)?)\W*([EW])\s*(\d{1,3}(\.\d*)?)$/).try(:captures) # [NSEW] decimal degrees
+        params.merge!(nsew_to_decdeg(latlon)).delete(:query)
+      elsif latlon = query.match(/^(\d{1,3}(\.\d*)?)\s*([NS])\W*(\d{1,3}(\.\d*)?)\s*([EW])$/).try(:captures) # decimal degrees [NSEW]
+        params.merge!(nsew_to_decdeg(latlon)).delete(:query)
+
+      elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?$/).try(:captures) # [NSEW] degrees, decimal minutes
+        params.merge!(ddm_to_decdeg(latlon)).delete(:query)
+      elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\s*([NS])\W*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\s*([EW])$/).try(:captures) # degrees, decimal minutes [NSEW]
+        params.merge!(ddm_to_decdeg(latlon)).delete(:query)
+
+      elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?$/).try(:captures) # [NSEW] degrees, minutes, decimal seconds
+        params.merge!(dms_to_decdeg(latlon)).delete(:query)
+      elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]\s*([NS])\W*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?\s*([EW])$/).try(:captures) # degrees, minutes, decimal seconds [NSEW]
+        params.merge!(dms_to_decdeg(latlon)).delete(:query)
+
+      elsif latlon = query.match(/^\s*([+-]?\d+(\.\d*)?)\s*[\s,]\s*([+-]?\d+(\.\d*)?)\s*$/)
+        params.merge!(:lat => latlon[1].to_f, :lon => latlon[3].to_f).delete(:query)
+      end
     end
+
+    params.permit(:query, :lat, :lon, :zoom, :minlat, :minlon, :maxlat, :maxlon)
   end
 
   def nsew_to_decdeg(captures)
index 8d29fd0726b21ff8d286f59d899ccc2d5ca355c6..9f6703b07688dbeb716fffb35cd47b34abb56760 100644 (file)
@@ -19,7 +19,7 @@ class NodeController < ApplicationController
 
     # Assume that Node.from_xml has thrown an exception if there is an error parsing the xml
     node.create_with_history @user
-    render :text => node.id.to_s, :content_type => "text/plain"
+    render :plain => node.id.to_s
   end
 
   # Dump the details on a node given in params[:id]
@@ -29,9 +29,9 @@ class NodeController < ApplicationController
     response.last_modified = node.timestamp
 
     if node.visible
-      render :text => node.to_xml.to_s, :content_type => "text/xml"
+      render :xml => node.to_xml.to_s
     else
-      render :text => "", :status => :gone
+      head :gone
     end
   end
 
@@ -45,7 +45,7 @@ class NodeController < ApplicationController
     end
 
     node.update_from(new_node, @user)
-    render :text => node.version.to_s, :content_type => "text/plain"
+    render :plain => node.version.to_s
   end
 
   # Delete a node. Doesn't actually delete it, but retains its history
@@ -59,7 +59,7 @@ class NodeController < ApplicationController
       raise OSM::APIBadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})")
     end
     node.delete_with_history!(new_node, @user)
-    render :text => node.version.to_s, :content_type => "text/plain"
+    render :plain => node.version.to_s
   end
 
   # Dump the details on many nodes whose ids are given in the "nodes" parameter.
@@ -79,6 +79,6 @@ class NodeController < ApplicationController
       doc.root << node.to_xml_node
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 end
index 2e847fcd5915e9b954c85ae5c87774a55e87e0ff..4bb129ba442c16bf4df6cd1758a866f4f04dcdc6 100644 (file)
@@ -49,7 +49,7 @@ class OauthController < ApplicationController
                        else
                          @token.oob? ? @token.client_application.callback_url : @token.callback_url
                        end
-        @redirect_url = URI.parse(callback_url) unless callback_url.blank?
+        @redirect_url = URI.parse(callback_url) if callback_url.present?
 
         if @redirect_url.to_s.blank?
           render :action => "authorize_success"
index 4869ae3e15da873b14df8e709d1c4243ffec682b..f41a94a33eb9d73f13da2f440899bd778ab88b63 100644 (file)
@@ -33,12 +33,12 @@ class OldController < ApplicationController
       doc.root << element.to_xml_node
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   def version
     if @old_element.redacted? && !show_redactions?
-      render :text => "", :status => :forbidden
+      head :forbidden
 
     else
       response.last_modified = @old_element.timestamp
@@ -46,7 +46,7 @@ class OldController < ApplicationController
       doc = OSM::API.new.get_xml_doc
       doc.root << @old_element.to_xml_node
 
-      render :text => doc.to_s, :content_type => "text/xml"
+      render :xml => doc.to_s
     end
   end
 
@@ -64,7 +64,7 @@ class OldController < ApplicationController
     end
 
     # just return an empty 200 OK for success
-    render :text => ""
+    render :nothing => true
   end
 
   private
index 587cfce8292b6e962d3362d2eac8f18b425bbdb8..846d623f29dc7dd2ed0531280cba4dbc1abc2fb2 100644 (file)
@@ -16,16 +16,16 @@ class RelationController < ApplicationController
 
     # Assume that Relation.from_xml has thrown an exception if there is an error parsing the xml
     relation.create_with_history @user
-    render :text => relation.id.to_s, :content_type => "text/plain"
+    render :plain => relation.id.to_s
   end
 
   def read
     relation = Relation.find(params[:id])
     response.last_modified = relation.timestamp
     if relation.visible
-      render :text => relation.to_xml.to_s, :content_type => "text/xml"
+      render :xml => relation.to_xml.to_s
     else
-      render :text => "", :status => :gone
+      head :gone
     end
   end
 
@@ -40,7 +40,7 @@ class RelationController < ApplicationController
     end
 
     relation.update_from new_relation, @user
-    render :text => relation.version.to_s, :content_type => "text/plain"
+    render :plain => relation.version.to_s
   end
 
   def delete
@@ -48,9 +48,9 @@ class RelationController < ApplicationController
     new_relation = Relation.from_xml(request.raw_post)
     if new_relation && new_relation.id == relation.id
       relation.delete_with_history!(new_relation, @user)
-      render :text => relation.version.to_s, :content_type => "text/plain"
+      render :plain => relation.version.to_s
     else
-      render :text => "", :status => :bad_request
+      head :bad_request
     end
   end
 
@@ -119,10 +119,10 @@ class RelationController < ApplicationController
 
       # finally add self and output
       doc.root << relation.to_xml_node(visible_members, changeset_cache, user_display_name_cache)
-      render :text => doc.to_s, :content_type => "text/xml"
+      render :xml => doc.to_s
 
     else
-      render :text => "", :status => :gone
+      head :gone
     end
   end
 
@@ -143,7 +143,7 @@ class RelationController < ApplicationController
       doc.root << relation.to_xml_node
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   def relations_for_way
@@ -167,6 +167,6 @@ class RelationController < ApplicationController
       doc.root << relation.to_xml_node if relation.visible
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 end
index 8a632e6a2c2cebd9526afec79371a91cddc6e0fb..4b8b2f402509655cb8efd5ed046fa54bc50ba324 100644 (file)
@@ -33,13 +33,13 @@ class SearchController < ApplicationController
 
     if do_nodes
       response.headers["Error"] = "Searching of nodes is currently unavailable"
-      render :text => "", :status => :service_unavailable
+      head :service_unavailable
       return false
     end
 
     unless value
       response.headers["Error"] = "Searching for a key without value is currently unavailable"
-      render :text => "", :status => :service_unavailable
+      head :service_unavailable
       return false
     end
 
@@ -94,6 +94,6 @@ class SearchController < ApplicationController
       doc.root << rel.to_xml_node(nil, changeset_cache, user_display_name_cache)
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 end
index b0552322ed6d808efbf7a82bae2e001eb9b104fc..abd4696e0404606974eeeb4d3ba95119c69f7304 100644 (file)
@@ -69,11 +69,11 @@ class SiteController < ApplicationController
       require_user
     end
 
-    if editor == "potlatch" || editor == "potlatch2"
+    if %w[potlatch potlatch2].include?(editor)
       append_content_security_policy_directives(
-        :object_src => %w(*),
-        :plugin_types => %w(application/x-shockwave-flash),
-        :script_src => %w('unsafe-inline')
+        :object_src => %w[*],
+        :plugin_types => %w[application/x-shockwave-flash],
+        :script_src => %w['unsafe-inline']
       )
     end
 
@@ -115,14 +115,14 @@ class SiteController < ApplicationController
   def offline; end
 
   def preview
-    render :text => RichText.new(params[:format], params[:text]).to_html
+    render :html => RichText.new(params[:format], params[:text]).to_html
   end
 
   def id
     append_content_security_policy_directives(
-      :connect_src => %w(taginfo.openstreetmap.org *.mapillary.com),
-      :img_src => %w(*),
-      :script_src => %w(dev.virtualearth.net)
+      :connect_src => %w[taginfo.openstreetmap.org *.mapillary.com],
+      :img_src => %w[*],
+      :script_src => %w[dev.virtualearth.net]
     )
 
     render "id", :layout => false
index 282f6161325557326e65c2136d8a345e3db30fcb..329de0dfc3e5be59b9273fbfce7680c5e806da62 100644 (file)
@@ -92,7 +92,7 @@ class SwfController < ApplicationController
     m = pack_rect(bounds_left, bounds_right, bounds_bottom, bounds_top) + 0.chr + 12.chr + pack_u16(1) + m
     m = "FWS" + 6.chr + pack_u32(m.length + 8) + m
 
-    render :text => m, :content_type => "application/x-shockwave-flash"
+    render :body => m, :content_type => "application/x-shockwave-flash"
   end
 
   private
index 8d9b670c5eb4b9f8419b3c59e70ac9f6c3bcf9c2..6e502fdc67d0588854ffe3b5048dac93aa545716 100644 (file)
@@ -21,7 +21,7 @@ class TraceController < ApplicationController
   def list
     # from display name, pick up user id if one user's traces only
     display_name = params[:display_name]
-    unless display_name.blank?
+    if display_name.present?
       target_user = User.active.where(:display_name => display_name).first
       if target_user.nil?
         render_unknown_user display_name
@@ -145,7 +145,7 @@ class TraceController < ApplicationController
 
     if trace.visible? && (trace.public? || (@user && @user == trace.user))
       if Acl.no_trace_download(request.remote_ip)
-        render :text => "", :status => :forbidden
+        head :forbidden
       elsif request.format == Mime::XML
         send_file(trace.xml_file, :filename => "#{trace.id}.xml", :type => request.format.to_s, :disposition => "attachment")
       elsif request.format == Mime::GPX
@@ -154,19 +154,19 @@ class TraceController < ApplicationController
         send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
       end
     else
-      render :text => "", :status => :not_found
+      head :not_found
     end
   rescue ActiveRecord::RecordNotFound
-    render :text => "", :status => :not_found
+    head :not_found
   end
 
   def edit
     @trace = Trace.find(params[:id])
 
     if !@trace.visible?
-      render :text => "", :status => :not_found
+      head :not_found
     elsif @user.nil? || @trace.user != @user
-      render :text => "", :status => :forbidden
+      head :forbidden
     else
       @title = t "trace.edit.title", :name => @trace.name
 
@@ -180,16 +180,16 @@ class TraceController < ApplicationController
       end
     end
   rescue ActiveRecord::RecordNotFound
-    render :text => "", :status => :not_found
+    head :not_found
   end
 
   def delete
     trace = Trace.find(params[:id])
 
     if !trace.visible?
-      render :text => "", :status => :not_found
+      head :not_found
     elsif @user.nil? || trace.user != @user
-      render :text => "", :status => :forbidden
+      head :forbidden
     else
       trace.visible = false
       trace.save
@@ -197,7 +197,7 @@ class TraceController < ApplicationController
       redirect_to :action => :list, :display_name => @user.display_name
     end
   rescue ActiveRecord::RecordNotFound
-    render :text => "", :status => :not_found
+    head :not_found
   end
 
   def georss
@@ -221,13 +221,13 @@ class TraceController < ApplicationController
         expires_in 7.days, :private => !trace.public?, :public => trace.public?
         send_file(trace.large_picture_name, :filename => "#{trace.id}.gif", :type => "image/gif", :disposition => "inline")
       else
-        render :text => "", :status => :forbidden
+        head :forbidden
       end
     else
-      render :text => "", :status => :not_found
+      head :not_found
     end
   rescue ActiveRecord::RecordNotFound
-    render :text => "", :status => :not_found
+    head :not_found
   end
 
   def icon
@@ -238,22 +238,22 @@ class TraceController < ApplicationController
         expires_in 7.days, :private => !trace.public?, :public => trace.public?
         send_file(trace.icon_picture_name, :filename => "#{trace.id}_icon.gif", :type => "image/gif", :disposition => "inline")
       else
-        render :text => "", :status => :forbidden
+        head :forbidden
       end
     else
-      render :text => "", :status => :not_found
+      head :not_found
     end
   rescue ActiveRecord::RecordNotFound
-    render :text => "", :status => :not_found
+    head :not_found
   end
 
   def api_read
     trace = Trace.visible.find(params[:id])
 
     if trace.public? || trace.user == @user
-      render :text => trace.to_xml.to_s, :content_type => "text/xml"
+      render :xml => trace.to_xml.to_s
     else
-      render :text => "", :status => :forbidden
+      head :forbidden
     end
   end
 
@@ -272,9 +272,9 @@ class TraceController < ApplicationController
       trace.visibility = new_trace.visibility
       trace.save!
 
-      render :text => "", :status => :ok
+      head :ok
     else
-      render :text => "", :status => :forbidden
+      head :forbidden
     end
   end
 
@@ -285,9 +285,9 @@ class TraceController < ApplicationController
       trace.visible = false
       trace.save!
 
-      render :text => "", :status => :ok
+      head :ok
     else
-      render :text => "", :status => :forbidden
+      head :forbidden
     end
   end
 
@@ -303,7 +303,7 @@ class TraceController < ApplicationController
         send_file(trace.trace_name, :filename => "#{trace.id}#{trace.extension_name}", :type => trace.mime_type, :disposition => "attachment")
       end
     else
-      render :text => "", :status => :forbidden
+      head :forbidden
     end
   end
 
@@ -324,14 +324,14 @@ class TraceController < ApplicationController
       do_create(params[:file], tags, description, visibility)
 
       if @trace.id
-        render :text => @trace.id.to_s, :content_type => "text/plain"
+        render :plain => @trace.id.to_s
       elsif @trace.valid?
-        render :text => "", :status => :internal_server_error
+        head :internal_server_error
       else
-        render :text => "", :status => :bad_request
+        head :bad_request
       end
     else
-      render :text => "", :status => :bad_request
+      head :bad_request
     end
   end
 
index 197b2891404c599046311e3a8ff5e48fd6c77023..430051c1755771f14db594433d1dc3e7b5bd6faa 100644 (file)
@@ -81,7 +81,7 @@ class UserController < ApplicationController
         @user.terms_agreed = Time.now.getutc
         @user.terms_seen = true
 
-        if @user.auth_uid.nil? || @user.auth_uid.empty?
+        if @user.auth_uid.blank?
           @user.auth_provider = nil
           @user.auth_uid = nil
         end
@@ -194,7 +194,7 @@ class UserController < ApplicationController
         redirect_to :action => "lost_password"
       end
     else
-      render :text => "", :status => :bad_request
+      head :bad_request
     end
   end
 
@@ -375,7 +375,7 @@ class UserController < ApplicationController
     if @this_user.visible?
       render :action => :api_read, :content_type => "text/xml"
     else
-      render :text => "", :status => :gone
+      head :gone
     end
   end
 
@@ -389,7 +389,7 @@ class UserController < ApplicationController
     @user.traces.reload.each do |trace|
       doc.root << trace.to_xml_node
     end
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   def view
@@ -437,7 +437,7 @@ class UserController < ApplicationController
     if @friend
       if request.post?
         if @user.is_friends_with?(@friend)
-          Friend.delete_all "user_id = #{@user.id} AND friend_user_id = #{@friend.id}"
+          Friend.where(:user_id => @user.id, :friend_user_id => @friend.id).delete_all
           flash[:notice] = t "user.remove_friend.success", :name => @friend.display_name
         else
           flash[:error] = t "user.remove_friend.not_a_friend", :name => @friend.display_name
@@ -480,9 +480,11 @@ class UserController < ApplicationController
 
       redirect_to url_for(:status => params[:status], :ip => params[:ip], :page => params[:page])
     else
+      @params = params.permit(:status, :ip)
+
       conditions = {}
-      conditions[:status] = params[:status] if params[:status]
-      conditions[:creation_ip] = params[:ip] if params[:ip]
+      conditions[:status] = @params[:status] if @params[:status]
+      conditions[:creation_ip] = @params[:ip] if @params[:ip]
 
       @user_pages, @users = paginate(:users,
                                      :conditions => conditions,
@@ -752,9 +754,7 @@ class UserController < ApplicationController
   ##
   # require that the user in the URL is the logged in user
   def require_self
-    if params[:display_name] != @user.display_name
-      render :text => "", :status => :forbidden
-    end
+    head :forbidden if params[:display_name] != @user.display_name
   end
 
   ##
index bf9bab213296f1ad4bc3324b480ad89f9a4895cd..b5928979238b4618d39ef4b3c22ff1e498368032 100644 (file)
@@ -20,7 +20,7 @@ class UserPreferenceController < ApplicationController
     end
 
     doc.root << el1
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   ##
@@ -28,7 +28,7 @@ class UserPreferenceController < ApplicationController
   def read_one
     pref = UserPreference.find([@user.id, params[:preference_key]])
 
-    render :text => pref.v.to_s, :content_type => "text/plain"
+    render :plain => pref.v.to_s
   end
 
   # update the entire set of preferences
@@ -57,7 +57,7 @@ class UserPreferenceController < ApplicationController
 
     new_preferences.each_value(&:save!)
 
-    render :text => "", :content_type => "text/plain"
+    render :nothing => true, :content_type => "text/plain"
   end
 
   ##
@@ -74,7 +74,7 @@ class UserPreferenceController < ApplicationController
     pref.v = request.raw_post.chomp
     pref.save!
 
-    render :text => "", :content_type => "text/plain"
+    render :nothing => true, :content_type => "text/plain"
   end
 
   ##
@@ -82,6 +82,6 @@ class UserPreferenceController < ApplicationController
   def delete_one
     UserPreference.find([@user.id, params[:preference_key]]).delete
 
-    render :text => "", :content_type => "text/plain"
+    render :nothing => true, :content_type => "text/plain"
   end
 end
index 1cfbaf977b0d5a487f2bba28bd198dc2cfa88c9b..9c0339c7a72c5f50825151df15a9a098512e201d 100644 (file)
@@ -15,7 +15,7 @@ class UserRolesController < ApplicationController
   end
 
   def revoke
-    UserRole.delete_all(:user_id => @this_user.id, :role => @role)
+    UserRole.where(:user_id => @this_user.id, :role => @role).delete_all
     redirect_to :controller => "user", :action => "view", :display_name => @this_user.display_name
   end
 
index c988545c717a00c7258a06c049f6e14ad83379b9..f7f270575024100ef365c1ecf2d152f982957fd8 100644 (file)
@@ -16,7 +16,7 @@ class WayController < ApplicationController
 
     # Assume that Way.from_xml has thrown an exception if there is an error parsing the xml
     way.create_with_history @user
-    render :text => way.id.to_s, :content_type => "text/plain"
+    render :plain => way.id.to_s
   end
 
   def read
@@ -25,9 +25,9 @@ class WayController < ApplicationController
     response.last_modified = way.timestamp
 
     if way.visible
-      render :text => way.to_xml.to_s, :content_type => "text/xml"
+      render :xml => way.to_xml.to_s
     else
-      render :text => "", :status => :gone
+      head :gone
     end
   end
 
@@ -40,7 +40,7 @@ class WayController < ApplicationController
     end
 
     way.update_from(new_way, @user)
-    render :text => way.version.to_s, :content_type => "text/plain"
+    render :plain => way.version.to_s
   end
 
   # This is the API call to delete a way
@@ -50,9 +50,9 @@ class WayController < ApplicationController
 
     if new_way && new_way.id == way.id
       way.delete_with_history!(new_way, @user)
-      render :text => way.version.to_s, :content_type => "text/plain"
+      render :plain => way.version.to_s
     else
-      render :text => "", :status => :bad_request
+      head :bad_request
     end
   end
 
@@ -73,9 +73,9 @@ class WayController < ApplicationController
       end
       doc.root << way.to_xml_node(visible_nodes, changeset_cache, user_display_name_cache)
 
-      render :text => doc.to_s, :content_type => "text/xml"
+      render :xml => doc.to_s
     else
-      render :text => "", :status => :gone
+      head :gone
     end
   end
 
@@ -96,7 +96,7 @@ class WayController < ApplicationController
       doc.root << way.to_xml_node
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 
   ##
@@ -112,6 +112,6 @@ class WayController < ApplicationController
       doc.root << way.to_xml_node if way.visible
     end
 
-    render :text => doc.to_s, :content_type => "text/xml"
+    render :xml => doc.to_s
   end
 end
index ef7b3f554b8ffbb8dafb4eeb25799c6613a2ced1..998ea405fca1f80018ec07a2c294dc2d37076346 100644 (file)
@@ -99,7 +99,7 @@ module BrowseHelper
 
   private
 
-  ICON_TAGS = %w(aeroway amenity barrier building highway historic landuse leisure man_made natural railway shop tourism waterway).freeze
+  ICON_TAGS = %w[aeroway amenity barrier building highway historic landuse leisure man_made natural railway shop tourism waterway].freeze
 
   def icon_tags(object)
     object.tags.find_all { |k, _v| ICON_TAGS.include? k }.sort
index 549600df6d26819bdce4a1aa04fa816ee8227e77..f41ad99551f96ed3c8b5bba53c285231ba30ddef 100644 (file)
@@ -149,7 +149,7 @@ class Changeset < ActiveRecord::Base
       save!
 
       tags = self.tags
-      ChangesetTag.delete_all(:changeset_id => id)
+      ChangesetTag.where(:changeset_id => id).delete_all
 
       tags.each do |k, v|
         tag = ChangesetTag.new
index 152b3912dd24a2c37978d86be1a4e7a532d13b3c..85b6ba68a131664f4fcdb7899bc8c480da5e0bb3 100644 (file)
@@ -75,9 +75,7 @@ class ClientApplication < ActiveRecord::Base
   # this is the set of permissions that the client can ask for. clients
   # have to say up-front what permissions they want and when users sign up they
   # can agree or not agree to each of them.
-  PERMISSIONS = [:allow_read_prefs, :allow_write_prefs, :allow_write_diary,
-                 :allow_write_api, :allow_read_gpx, :allow_write_gpx,
-                 :allow_write_notes].freeze
+  PERMISSIONS = [:allow_read_prefs, :allow_write_prefs, :allow_write_diary, :allow_write_api, :allow_read_gpx, :allow_write_gpx, :allow_write_notes].freeze
 
   def generate_keys
     self.key = OAuth::Helper.generate_key(40)[0, 40]
index e756432fdf4a3b285ec410dfddceb06f50d78442..143ddc1dc0949ad74b451501ae7a20ec8ec38273 100644 (file)
@@ -3,7 +3,7 @@ class DiaryEntry < ActiveRecord::Base
   belongs_to :language, :foreign_key => "language_code"
 
   has_many :comments, -> { order(:id).preload(:user) }, :class_name => "DiaryComment"
-  has_many :visible_comments, -> { joins(:user).where(:visible => true, :users => { :status => %w(active confirmed) }).order(:id) }, :class_name => "DiaryComment"
+  has_many :visible_comments, -> { joins(:user).where(:visible => true, :users => { :status => %w[active confirmed] }).order(:id) }, :class_name => "DiaryComment"
   has_many :subscriptions, :class_name => "DiaryEntrySubscription"
   has_many :subscribers, :through => :subscriptions, :source => :user
 
index 6346907f1ef88354ee098f1ee8c72c774898b1ad..fb9bdf68b0dd700b27c55b39fe4b4885cbced563 100644 (file)
@@ -243,7 +243,7 @@ class Node < ActiveRecord::Base
 
       # Create a NodeTag
       tags = self.tags
-      NodeTag.delete_all(:node_id => id)
+      NodeTag.where(:node_id => id).delete_all
       tags.each do |k, v|
         tag = NodeTag.new
         tag.node_id = id
index 73207af0ff22f4e0a16d26f2b8cfdc3a95df0208..d2c36071da0dfe5b3e8a545446ebe9c0396f6ad6 100644 (file)
@@ -7,7 +7,7 @@ class Note < ActiveRecord::Base
                  :numericality => { :on => :update, :integer_only => true }
   validates :latitude, :longitude, :numericality => { :only_integer => true }
   validates :closed_at, :presence => true, :if => proc { :status == "closed" }
-  validates :status, :inclusion => %w(open closed hidden)
+  validates :status, :inclusion => %w[open closed hidden]
 
   validate :validate_position
 
index 31ee6f99b58de4db11862c9c7a258051da134a5b..aa8635aadde724c6bbb233650460d27a2471b49b 100644 (file)
@@ -7,7 +7,7 @@ class NoteComment < ActiveRecord::Base
   validates :note, :presence => true, :associated => true
   validates :visible, :inclusion => [true, false]
   validates :author, :associated => true
-  validates :event, :inclusion => %w(opened closed reopened commented hidden)
+  validates :event, :inclusion => %w[opened closed reopened commented hidden]
   validates :body, :format => /\A[^\x00-\x08\x0b-\x0c\x0e-\x1f\x7f\ufffe\uffff]*\z/
 
   # Return the comment text
index 49de3177a127af1a0bbe260aaf1feaa15b716109..04f002e3637ccf62c1f808dea10f3b22677e0074 100644 (file)
@@ -15,7 +15,7 @@ class Redaction < ActiveRecord::Base
   has_many :old_relations
 
   validates :description, :presence => true
-  validates :description_format, :inclusion => { :in => %w(text html markdown) }
+  validates :description_format, :inclusion => { :in => %w[text html markdown] }
 
   # this method overrides the AR default to provide the rich
   # text object for the description field.
index b78c95ce4ddc9f9c0c9f99b61a6a683ed627c67c..d2490dbaec0e872080fabec0b2d82a64b1628a32 100644 (file)
@@ -33,7 +33,7 @@ class Relation < ActiveRecord::Base
   scope :ways, ->(*ids) { joins(:relation_members).where(:current_relation_members => { :member_type => "Way", :member_id => ids.flatten }) }
   scope :relations, ->(*ids) { joins(:relation_members).where(:current_relation_members => { :member_type => "Relation", :member_id => ids.flatten }) }
 
-  TYPES = %w(node way relation).freeze
+  TYPES = %w[node way relation].freeze
 
   def self.from_xml(xml, create = false)
     p = XML::Parser.string(xml, :options => XML::Parser::Options::NOERROR)
@@ -317,7 +317,7 @@ class Relation < ActiveRecord::Base
       # if there are left-over tags then they are new and will have to
       # be added.
       tags_changed |= !tags.empty?
-      RelationTag.delete_all(:relation_id => id)
+      RelationTag.where(:relation_id => id).delete_all
       self.tags.each do |k, v|
         tag = RelationTag.new
         tag.relation_id = id
@@ -347,7 +347,7 @@ class Relation < ActiveRecord::Base
       # members may be in a different order and i don't feel like implementing
       # a longest common subsequence algorithm to optimise this.
       members = self.members
-      RelationMember.delete_all(:relation_id => id)
+      RelationMember.where(:relation_id => id).delete_all
       members.each_with_index do |m, i|
         mem = RelationMember.new
         mem.relation_id = id
index 2d055fd28a78e4d1efa7c41b6fb5b1f0f7d3e211..eed09dbe536b3b268067837eb6000fc57711d104 100644 (file)
@@ -7,14 +7,14 @@ class Trace < ActiveRecord::Base
 
   scope :visible, -> { where(:visible => true) }
   scope :visible_to, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
-  scope :visible_to_all, -> { where(:visibility => %w(public identifiable)) }
+  scope :visible_to_all, -> { where(:visibility => %w[public identifiable]) }
   scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
 
   validates :user, :presence => true, :associated => true
   validates :name, :presence => true, :length => 1..255
   validates :description, :presence => { :on => :create }, :length => 1..255
   validates :timestamp, :presence => true
-  validates :visibility, :inclusion => %w(private public trackable identifiable)
+  validates :visibility, :inclusion => %w[private public trackable identifiable]
 
   def destroy
     super
@@ -29,7 +29,7 @@ class Trace < ActiveRecord::Base
 
   def tagstring=(s)
     self.tags = if s.include? ","
-                  s.split(/\s*,\s*/).select { |tag| tag !~ /^\s*$/ }.collect do |tag|
+                  s.split(/\s*,\s*/).reject { |tag| tag =~ /^\s*$/ }.collect do |tag|
                     tt = Tracetag.new
                     tt.tag = tag
                     tt
@@ -261,7 +261,7 @@ class Trace < ActiveRecord::Base
     first = true
 
     # If there are any existing points for this trace then delete them
-    Tracepoint.delete_all(:gpx_id => id)
+    Tracepoint.where(:gpx_id => id).delete_all
 
     gpx.points do |point|
       if first
index 3d5e71ea27de1cd192315570c36488fd5fadd5bc..3ce48e7cd34d021724adf2976ede26326fc82c47 100644 (file)
@@ -9,7 +9,7 @@ class User < ActiveRecord::Base
   has_many :messages, -> { where(:to_user_visible => true).order(:sent_on => :desc).preload(:sender, :recipient) }, :foreign_key => :to_user_id
   has_many :new_messages, -> { where(:to_user_visible => true, :message_read => false).order(:sent_on => :desc) }, :class_name => "Message", :foreign_key => :to_user_id
   has_many :sent_messages, -> { where(:from_user_visible => true).order(:sent_on => :desc).preload(:sender, :recipient) }, :class_name => "Message", :foreign_key => :from_user_id
-  has_many :friends, -> { joins(:befriendee).where(:users => { :status => %w(active confirmed) }) }
+  has_many :friends, -> { joins(:befriendee).where(:users => { :status => %w[active confirmed] }) }
   has_many :friend_users, :through => :friends, :source => :befriendee
   has_many :tokens, :class_name => "UserToken"
   has_many :preferences, :class_name => "UserPreference"
@@ -28,8 +28,8 @@ class User < ActiveRecord::Base
 
   has_many :roles, :class_name => "UserRole"
 
-  scope :visible, -> { where(:status => %w(pending active confirmed)) }
-  scope :active, -> { where(:status => %w(active confirmed)) }
+  scope :visible, -> { where(:status => %w[pending active confirmed]) }
+  scope :active, -> { where(:status => %w[active confirmed]) }
   scope :identifiable, -> { where(:data_public => true) }
 
   has_attached_file :image,
@@ -37,7 +37,7 @@ class User < ActiveRecord::Base
                     :styles => { :large => "100x100>", :small => "50x50>" }
 
   validates :display_name, :presence => true, :allow_nil => true, :length => 3..255,
-                           :exclusion => %w(new terms save confirm confirm-email go_public reset-password forgot-password suspended)
+                           :exclusion => %w[new terms save confirm confirm-email go_public reset-password forgot-password suspended]
   validates :display_name, :if => proc { |u| u.display_name_changed? },
                            :uniqueness => { :case_sensitive => false }
   validates :display_name, :if => proc { |u| u.display_name_changed? },
@@ -161,13 +161,13 @@ class User < ActiveRecord::Base
   ##
   # returns true if a user is visible
   def visible?
-    %w(pending active confirmed).include? status
+    %w[pending active confirmed].include? status
   end
 
   ##
   # returns true if a user is active
   def active?
-    %w(active confirmed).include? status
+    %w[active confirmed].include? status
   end
 
   ##
index 4f80f195279916daac70c8225386c47da0e73d80..967850145f838b4dcff1af82858235dbcecebec7 100644 (file)
@@ -2,7 +2,7 @@ class UserRole < ActiveRecord::Base
   belongs_to :user
   belongs_to :granter, :class_name => "User"
 
-  ALL_ROLES = %w(administrator moderator).freeze
+  ALL_ROLES = %w[administrator moderator].freeze
 
   validates :role, :inclusion => ALL_ROLES, :uniqueness => { :scope => :user_id }
 end
index 9877b8bb8ea2b8dcde7a26c3f93b599fb29f8904..9586094ff10951020aed5f27b2394bf201933303 100644 (file)
@@ -271,7 +271,7 @@ class Way < ActiveRecord::Base
       clone.save!
 
       tags = self.tags
-      WayTag.delete_all(:way_id => id)
+      WayTag.where(:way_id => id).delete_all
       tags.each do |k, v|
         tag = WayTag.new
         tag.way_id = id
@@ -281,7 +281,7 @@ class Way < ActiveRecord::Base
       end
 
       nds = self.nds
-      WayNode.delete_all(:way_id => id)
+      WayNode.where(:way_id => id).delete_all
       sequence = 1
       nds.each do |n|
         nd = WayNode.new
index 68b4a198505b6204af025356f8a964a538097308..0235d182afbea03b092169b1b7be61db27fce942 100644 (file)
@@ -1,6 +1,6 @@
 atom_feed(:language => I18n.locale, :schema_date => 2009,
-          :id => url_for(params.merge(:only_path => false)),
-          :root_url => url_for(params.merge(:action => :list, :format => nil, :only_path => false)),
+          :id => url_for(@params.merge(:only_path => false)),
+          :root_url => url_for(@params.merge(:action => :list, :format => nil, :only_path => false)),
           "xmlns:georss" => "http://www.georss.org/georss") do |feed|
   feed.title changeset_list_title(params, @user)
 
index ac655147a9a4f367df4f18fc1d0f3ed59fc0f395..21484d4c072a76dd48dbff8340cd93e29658647b 100644 (file)
@@ -4,7 +4,7 @@
 </h2>
 <% @sources.each do |source| %>
   <h4 class="inner12"><%= raw(t "geocoder.search.title.#{source}") %></h4>
-  <div class="search_results_entry" data-href="<%= url_for params.merge(:action => "search_#{source}") %>">
+  <div class="search_results_entry" data-href="<%= url_for @params.merge(:action => "search_#{source}") %>">
     <%= image_tag "searching.gif", :class => "loader" %>
   </div>
 <% end %>
index a8811c6c9c39ff27842ba803faef9aa651fb5036..2b7d6313e358b1f9cc760d12141537e0db330bb3 100644 (file)
@@ -57,7 +57,7 @@
     <% if @user && @user.id %>
       <div class='dropdown user-menu logged-in'>
         <a class='dropdown-toggle' data-toggle='dropdown' href="#">
-          <%= user_thumbnail_tiny(@user, :size => 25, :width => 25, :height => 25)
+          <%= user_thumbnail_tiny(@user, :width => 25, :height => 25)
           %><%= render :partial => 'layouts/inbox'
         %><span class="user-button"><span class='username'><%= @user.display_name %></span>
           <b class="caret"></b></span>
index 0c9b622e8e11a393e0e9505156f924dfcc4b3e40..65f429dafcc8a4062fc1ea7922779bd7c824af81 100644 (file)
@@ -16,6 +16,7 @@
   <div class='message-buttons buttons'>
     <%= button_to t('message.read.reply_button'), {:controller => 'message', :action => 'reply', :message_id => @message.id}, :class => 'reply-button' %>
     <%= button_to t('message.read.unread_button'), {:controller => 'message', :action => 'mark', :message_id => @message.id, :mark => 'unread'}, :class => 'mark-unread-button' %>
+    <%= button_to "Delete", {:controller => 'message', :action => 'delete', :message_id => @message.id}, :class => 'delete-button' %>
 
 <% else %>
 
index fcd0c41fcfd7f49a349ecd2f1035f0f24ad804e2..903a51c5bb6bbbb7d308db77247d9ac57f58a981 100644 (file)
@@ -24,7 +24,7 @@
               :count => @user_pages.current_page.last_item - @user_pages.current_page.first_item + 1
           %>
           <% if @user_pages.page_count > 1 %>
-          | <%= raw pagination_links_each(@user_pages, {}) { |n| link_to n, params.merge(:page => n) } %>
+          | <%= raw pagination_links_each(@user_pages, {}) { |n| link_to n, @params.merge(:page => n) } %>
           <% end %>
         </td>
         <td>
index 5ff166beb1ab86812c100eb18d6d376534e857da..ff9ac16027e9ff4dfc1f489066af8f60e639eb21 100644 (file)
@@ -34,7 +34,7 @@ module OpenStreetMap
     config.active_record.raise_in_transactional_callbacks = true unless STATUS == :database_offline
 
     # Custom directories with classes and modules you want to be autoloadable.
-    config.autoload_paths += %W(#{config.root}/lib)
+    config.autoload_paths += %W[#{config.root}/lib]
 
     # Use SQL instead of Active Record's schema dumper when creating the database.
     # This is necessary if your schema can't be completely dumped by the schema dumper,
index 6bb5d10c01bcafcecf142d36fc1c8ce27543d5bd..2bc4f5e59d40d07f552d36417bd3f211eda8d6ee 100644 (file)
@@ -1,21 +1,17 @@
 if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter)
-  module ActiveRecord
-    module ConnectionAdapters
-      class AbstractAdapter
-        protected
-
-        alias old_log log
-
-        def translate_exception_class_with_timeout(e, sql)
+  module OpenStreetMap
+    module AbstractAdapter
+      module PropagateTimeouts
+        def translate_exception_class(e, sql)
           if e.is_a?(Timeout::Error) || e.is_a?(OSM::APITimeoutError)
             e
           else
-            translate_exception_class_without_timeout(e, sql)
+            super(e, sql)
           end
         end
-
-        alias_method_chain :translate_exception_class, :timeout
       end
     end
   end
+
+  ActiveRecord::ConnectionAdaptors::AbstractAdapter.prepend(OpenStreetMap::AbstractAdapter::PropagateTimeouts)
 end
index af446fc1de52112298cff00a787f64e4a1412ee7..687ce3fb11f26f0f3c046164dbc3b40a1873a6ef 100644 (file)
@@ -1,17 +1,2 @@
 # Stop rails from automatically parsing XML in request bodies
 Rails.configuration.middleware.delete ActionDispatch::ParamsParser
-
-# https://github.com/rails/rails/issues/20710
-module ActionDispatch
-  module Assertions
-    def html_document_with_rss
-      @html_document ||= if @response.content_type == Mime::RSS
-                           Nokogiri::XML::Document.parse(@response.body)
-                         else
-                           html_document_without_rss
-                         end
-    end
-
-    alias_method_chain :html_document, :rss
-  end
-end
index b60edd633c25e9748d76655e14824df080ed7f10..f611714505b78d1fd7e595a5e0ce172ff6313c03 100644 (file)
@@ -11,24 +11,24 @@ Rails.application.config.assets.paths << Rails.root.join("config")
 
 # Precompile additional assets.
 # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
-Rails.application.config.assets.precompile += %w(index.js browse.js welcome.js fixthemap.js)
-Rails.application.config.assets.precompile += %w(user.js login.js diary_entry.js edit/*.js)
-Rails.application.config.assets.precompile += %w(screen-ltr.css print-ltr.css)
-Rails.application.config.assets.precompile += %w(screen-rtl.css print-rtl.css)
-Rails.application.config.assets.precompile += %w(leaflet-all.css leaflet.ie.css)
-Rails.application.config.assets.precompile += %w(id.js id.css)
-Rails.application.config.assets.precompile += %w(embed.js embed.css)
-Rails.application.config.assets.precompile += %w(html5shiv.js)
-Rails.application.config.assets.precompile += %w(images/marker-*.png img/*-handle.png)
-Rails.application.config.assets.precompile += %w(swfobject.js expressInstall.swf)
-Rails.application.config.assets.precompile += %w(potlatch2.swf)
-Rails.application.config.assets.precompile += %w(potlatch2/assets.zip)
-Rails.application.config.assets.precompile += %w(potlatch2/FontLibrary.swf)
-Rails.application.config.assets.precompile += %w(potlatch2/locales/*.swf)
-Rails.application.config.assets.precompile += %w(help/introduction.*)
-Rails.application.config.assets.precompile += %w(iD/img/*.svg iD/img/*.png iD/img/*.gif)
-Rails.application.config.assets.precompile += %w(iD/img/pattern/*.png)
-Rails.application.config.assets.precompile += %w(iD/locales/*.json)
-Rails.application.config.assets.precompile += %w(iD/traffico/stylesheets/traffico.css)
-Rails.application.config.assets.precompile += %w(iD/traffico/fonts/traffico_*)
-Rails.application.config.assets.precompile += %w(iD/traffico/string-maps/*.json)
+Rails.application.config.assets.precompile += %w[index.js browse.js welcome.js fixthemap.js]
+Rails.application.config.assets.precompile += %w[user.js login.js diary_entry.js edit/*.js]
+Rails.application.config.assets.precompile += %w[screen-ltr.css print-ltr.css]
+Rails.application.config.assets.precompile += %w[screen-rtl.css print-rtl.css]
+Rails.application.config.assets.precompile += %w[leaflet-all.css leaflet.ie.css]
+Rails.application.config.assets.precompile += %w[id.js id.css]
+Rails.application.config.assets.precompile += %w[embed.js embed.css]
+Rails.application.config.assets.precompile += %w[html5shiv.js]
+Rails.application.config.assets.precompile += %w[images/marker-*.png img/*-handle.png]
+Rails.application.config.assets.precompile += %w[swfobject.js expressInstall.swf]
+Rails.application.config.assets.precompile += %w[potlatch2.swf]
+Rails.application.config.assets.precompile += %w[potlatch2/assets.zip]
+Rails.application.config.assets.precompile += %w[potlatch2/FontLibrary.swf]
+Rails.application.config.assets.precompile += %w[potlatch2/locales/*.swf]
+Rails.application.config.assets.precompile += %w[help/introduction.*]
+Rails.application.config.assets.precompile += %w[iD/img/*.svg iD/img/*.png iD/img/*.gif]
+Rails.application.config.assets.precompile += %w[iD/img/pattern/*.png]
+Rails.application.config.assets.precompile += %w[iD/locales/*.json]
+Rails.application.config.assets.precompile += %w[iD/traffico/stylesheets/traffico.css]
+Rails.application.config.assets.precompile += %w[iD/traffico/fonts/traffico_*]
+Rails.application.config.assets.precompile += %w[iD/traffico/string-maps/*.json]
index a94618c7e3f374f580edd1cf6eca371bb723f452..89ff677fb2c4aeacd53ebf06ae9cca24ffa02bd4 100644 (file)
@@ -8,31 +8,32 @@ module I18n
         ex.entry[:other]
       end
     end
+  end
+end
 
-    class Simple
-      def store_translations_with_normalisation(locale, data, options = {})
-        locale = I18n::Locale::Tag::Rfc4646.tag(locale).to_s
+module OpenStreetMap
+  module I18n
+    module NormaliseLocales
+      def store_translations(locale, data, options = {})
+        locale = ::I18n::Locale::Tag::Rfc4646.tag(locale).to_s
 
-        store_translations_without_normalisation(locale, data, options)
+        super(locale, data, options)
       end
-
-      alias_method_chain :store_translations, :normalisation
     end
-  end
 
-  module JS
-    class FallbackLocales
-      def default_fallbacks_with_validation
-        default_fallbacks_without_validation.select do |locale|
+    module ValidateLocales
+      def default_fallbacks
+        super.select do |locale|
           ::I18n.available_locales.include?(locale)
         end
       end
-
-      alias_method_chain :default_fallbacks, :validation
     end
   end
 end
 
+I18n::Backend::Simple.prepend(OpenStreetMap::I18n::NormaliseLocales)
+I18n::JS::FallbackLocales.prepend(OpenStreetMap::I18n::ValidateLocales)
+
 I18n::Backend::Simple.include(I18n::Backend::PluralizationFallback)
 I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
 
index d117707bef68ca7363c92c030271e1f69d608d5b..180469bfce74309b2f94b2aebeb8a0e41fac947e 100644 (file)
@@ -38,16 +38,3 @@ Rails.application.config.middleware.use OmniAuth::Builder do
   provider :github, GITHUB_AUTH_ID, GITHUB_AUTH_SECRET, github_options if defined?(GITHUB_AUTH_ID)
   provider :mediawiki, WIKIPEDIA_AUTH_ID, WIKIPEDIA_AUTH_SECRET, wikipedia_options if defined?(WIKIPEDIA_AUTH_ID)
 end
-
-# Pending fix for: https://github.com/intridea/omniauth/pull/795
-module OmniAuth
-  module Strategy
-    def mock_callback_call_with_origin
-      @env["omniauth.origin"] = session["omniauth.origin"]
-
-      mock_callback_call_without_origin
-    end
-
-    alias_method_chain :mock_callback_call, :origin
-  end
-end
index 2987e424af8a5f282df92cb6312207e39dd11049..4357a87f25f47ea0cc98c8da6d9f155ed8dad750 100644 (file)
@@ -1,18 +1,14 @@
 # Some versions of ruby seem to accidentally force the encoding
 # as part of normalize_path and some don't
 
-module ActionDispatch
-  module Journey
-    class Router
-      class Utils
-        def self.normalize_path_with_encoding(path)
-          normalize_path_without_encoding(path).force_encoding("UTF-8")
-        end
-
-        class << self
-          alias_method_chain :normalize_path, :encoding
-        end
+module OpenStreetMap
+  module Router
+    module ForceEncoding
+      def normalize_path(path)
+        super(path).force_encoding("UTF-8")
       end
     end
   end
 end
+
+ActionDispatch::Journey::Router::Utils.singleton_class.prepend(OpenStreetMap::Router::ForceEncoding)
index c7be1380f216fbf76b93d172ec2c64df513d18db..240f1e315e404a24665f92d77c5e30e2b78bc195 100644 (file)
@@ -1,5 +1,5 @@
 Sanitize::Config::OSM = Sanitize::Config::RELAXED.dup
 
-Sanitize::Config::OSM[:elements] -= %w(div style)
+Sanitize::Config::OSM[:elements] -= %w[div style]
 Sanitize::Config::OSM[:add_attributes] = { "a" => { "rel" => "nofollow" } }
-Sanitize::Config::OSM[:remove_contents] = %w(script style)
+Sanitize::Config::OSM[:remove_contents] = %w[script style]
index e53ea6cef3d2e222a0d873e2cf2c4be0f53112ee..59fe4225d810443cfe75949cc049a111d36a8736 100644 (file)
@@ -1,17 +1,17 @@
 if defined?(CSP_REPORT_URL)
   policy = {
-    :default_src => %w('self'),
-    :child_src => %w('self'),
-    :connect_src => %w('self'),
-    :font_src => %w('none'),
-    :form_action => %w('self'),
-    :frame_ancestors => %w('self'),
-    :img_src => %w('self' data: www.gravatar.com *.wp.com *.tile.openstreetmap.org *.tile.thunderforest.com *.openstreetmap.fr),
-    :media_src => %w('none'),
-    :object_src => %w('self'),
-    :plugin_types => %w('none'),
-    :script_src => %w('self'),
-    :style_src => %w('self' 'unsafe-inline'),
+    :default_src => %w['self'],
+    :child_src => %w['self'],
+    :connect_src => %w['self'],
+    :font_src => %w['none'],
+    :form_action => %w['self'],
+    :frame_ancestors => %w['self'],
+    :img_src => %w['self' data: www.gravatar.com *.wp.com *.tile.openstreetmap.org *.tile.thunderforest.com *.openstreetmap.fr],
+    :media_src => %w['none'],
+    :object_src => %w['self'],
+    :plugin_types => %w['none'],
+    :script_src => %w['self'],
+    :style_src => %w['self' 'unsafe-inline'],
     :report_uri => [CSP_REPORT_URL]
   }
 
diff --git a/config/initializers/session.rb b/config/initializers/session.rb
deleted file mode 100644 (file)
index 83b2492..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-module ActionDispatch
-  class Request < Rack::Request
-    class Session
-      def clear_with_rescue
-        clear_without_rescue
-      rescue
-        # lets not worry about it...
-      end
-
-      alias_method_chain :clear, :rescue
-    end
-  end
-end
index ddbfe259d613cbec2d589baa3319b8f2127c34a0..3935fb6b0687e1a2644fc3fc893a7551f62b446b 100644 (file)
@@ -13,7 +13,7 @@ class CreateOsmDb < ActiveRecord::Migration
     end
 
     add_index "current_nodes", ["id"], :name => "current_nodes_id_idx"
-    add_index "current_nodes", %w(latitude longitude), :name => "current_nodes_lat_lon_idx"
+    add_index "current_nodes", %w[latitude longitude], :name => "current_nodes_lat_lon_idx"
     add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
 
     create_table "current_segments", :id => false do |t|
@@ -26,7 +26,7 @@ class CreateOsmDb < ActiveRecord::Migration
       t.column "timestamp", :datetime
     end
 
-    add_index "current_segments", %w(id visible), :name => "current_segments_id_visible_idx"
+    add_index "current_segments", %w[id visible], :name => "current_segments_id_visible_idx"
     add_index "current_segments", ["node_a"], :name => "current_segments_a_idx"
     add_index "current_segments", ["node_b"], :name => "current_segments_b_idx"
 
@@ -82,7 +82,7 @@ class CreateOsmDb < ActiveRecord::Migration
       t.column "timestamp", :datetime
     end
 
-    add_index "gps_points", %w(latitude longitude user_id), :name => "points_idx"
+    add_index "gps_points", %w[latitude longitude user_id], :name => "points_idx"
     add_index "gps_points", ["user_id"], :name => "points_uid_idx"
     add_index "gps_points", ["gpx_id"], :name => "points_gpxid_idx"
 
@@ -109,7 +109,7 @@ class CreateOsmDb < ActiveRecord::Migration
     end
 
     add_index "gpx_files", ["timestamp"], :name => "gpx_files_timestamp_idx"
-    add_index "gpx_files", %w(visible public), :name => "gpx_files_visible_public_idx"
+    add_index "gpx_files", %w[visible public], :name => "gpx_files_visible_public_idx"
 
     create_table "gpx_pending_files", :id => false do |t|
       t.column "originalname", :string
@@ -148,7 +148,7 @@ class CreateOsmDb < ActiveRecord::Migration
     end
 
     add_index "nodes", ["id"], :name => "nodes_uid_idx"
-    add_index "nodes", %w(latitude longitude), :name => "nodes_latlon_idx"
+    add_index "nodes", %w[latitude longitude], :name => "nodes_latlon_idx"
 
     create_table "segments", :id => false do |t|
       t.column "id",        :bigint
@@ -193,7 +193,7 @@ class CreateOsmDb < ActiveRecord::Migration
       t.column "sequence_id", :bigint, :null => false
     end
 
-    add_primary_key "way_segments", %w(id version sequence_id)
+    add_primary_key "way_segments", %w[id version sequence_id]
 
     create_table "way_tags", :id => false do |t|
       t.column "id",      :bigint, :default => 0, :null => false
@@ -202,7 +202,7 @@ class CreateOsmDb < ActiveRecord::Migration
       t.column "version", :bigint
     end
 
-    add_index "way_tags", %w(id version), :name => "way_tags_id_version_idx"
+    add_index "way_tags", %w[id version], :name => "way_tags_id_version_idx"
 
     create_table "ways", :id => false do |t|
       t.column "id",        :bigint, :default => 0, :null => false
@@ -212,7 +212,7 @@ class CreateOsmDb < ActiveRecord::Migration
       t.column "visible",   :boolean, :default => true
     end
 
-    add_primary_key "ways", %w(id version)
+    add_primary_key "ways", %w[id version]
     add_index "ways", ["id"], :name => "ways_id_version_idx"
   end
 
index 866b1ae510d3b72848f1ed6b1bb761ed7dfe0fd4..0710417e3f77b88b54d1e843fc2703c7d76d0745 100644 (file)
@@ -21,7 +21,7 @@ class CleanupOsmDb < ActiveRecord::Migration
     change_column "current_way_segments", "id", :bigint, :null => false
     change_column "current_way_segments", "segment_id", :bigint, :null => false
     change_column "current_way_segments", "sequence_id", :bigint, :null => false
-    add_primary_key "current_way_segments", %w(id sequence_id)
+    add_primary_key "current_way_segments", %w[id sequence_id]
     remove_index "current_way_segments", :name => "current_way_segments_id_idx"
 
     change_column "current_way_tags", "id", :bigint, :null => false
@@ -40,7 +40,7 @@ class CleanupOsmDb < ActiveRecord::Migration
     remove_index "gps_points", :name => "points_uid_idx"
     remove_index "gps_points", :name => "points_idx"
     remove_column "gps_points", "user_id"
-    add_index "gps_points", %w(latitude longitude), :name => "points_idx"
+    add_index "gps_points", %w[latitude longitude], :name => "points_idx"
     change_column "gps_points", "trackid", :integer, :null => false
     change_column "gps_points", "latitude", :integer, :null => false
     change_column "gps_points", "longitude", :integer, :null => false
@@ -204,7 +204,7 @@ class CleanupOsmDb < ActiveRecord::Migration
     change_column "current_way_segments", "segment_id", :bigint
     change_column "current_way_segments", "id", :bigint
 
-    add_index "current_segments", %w(id visible), :name => "current_segments_id_visible_idx"
+    add_index "current_segments", %w[id visible], :name => "current_segments_id_visible_idx"
     remove_primary_key "current_segments"
     change_column "current_segments", "timestamp", :datetime
     change_column "current_segments", "visible", :boolean
index 4d53d038296eb5f3351d78dc68b00c600de50eae..f45d441ab196f81e59edd98956d27a70f41d3a7c 100644 (file)
@@ -12,7 +12,7 @@ class UserEnhancements < ActiveRecord::Migration
       t.column "v", :string, :null => false
     end
 
-    add_primary_key "user_preferences", %w(user_id k)
+    add_primary_key "user_preferences", %w[user_id k]
 
     create_table "user_tokens", :id => false do |t|
       t.column "id", :bigserial, :primary_key => true, :null => false
index f77d349591111ed15f6561cd5d6b8d1026d58020..00e5af293ba39f66f71c14d97082f9aa264c8291 100644 (file)
@@ -20,7 +20,7 @@ class TileTracepoints < ActiveRecord::Migration
   def self.down
     Tracepoint.update_all("latitude = latitude / 10, longitude = longitude / 10")
 
-    add_index "gps_points", %w(latitude longitude), :name => "points_idx"
+    add_index "gps_points", %w[latitude longitude], :name => "points_idx"
     remove_index "gps_points", :name => "points_tile_idx"
     remove_column "gps_points", "tile"
   end
index fd9dbfb67b11ad243e199fc692058a79bfef22a8..29200d06a52f29b12f28533003a848e5b77a1a14 100644 (file)
@@ -96,7 +96,7 @@ class TileNodes < ActiveRecord::Migration
       t.column "timestamp", :datetime, :null => false
     end
 
-    add_index "current_nodes", %w(latitude longitude), :name => "current_nodes_lat_lon_idx"
+    add_index "current_nodes", %w[latitude longitude], :name => "current_nodes_lat_lon_idx"
     add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
 
     downgrade_table "current_nodes_v6", "current_nodes"
@@ -116,7 +116,7 @@ class TileNodes < ActiveRecord::Migration
     end
 
     add_index "nodes", ["id"], :name => "nodes_uid_idx"
-    add_index "nodes", %w(latitude longitude), :name => "nodes_latlon_idx"
+    add_index "nodes", %w[latitude longitude], :name => "nodes_latlon_idx"
     add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
 
     downgrade_table "nodes_v6", "nodes"
index 78270f10377f0e7dad73f16ca55f37405ce16b13..12684abc80c737356c9fc243ec82d8f86ff15792 100644 (file)
@@ -3,7 +3,7 @@ require "migrate"
 class AddRelations < ActiveRecord::Migration
   def self.up
     # enums work like strings but are more efficient
-    create_enumeration :nwr_enum, %w(Node Way Relation)
+    create_enumeration :nwr_enum, %w[Node Way Relation]
 
     # a relation can have members much like a way can have nodes.
     # differences:
@@ -16,8 +16,8 @@ class AddRelations < ActiveRecord::Migration
       t.column "member_role", :string
     end
 
-    add_primary_key "current_relation_members", %w(id member_type member_id member_role)
-    add_index "current_relation_members", %w(member_type member_id), :name => "current_relation_members_member_idx"
+    add_primary_key "current_relation_members", %w[id member_type member_id member_role]
+    add_index "current_relation_members", %w[member_type member_id], :name => "current_relation_members_member_idx"
     # the following is obsolete given the primary key, is it not?
     # add_index "current_relation_members", ["id"], :name => "current_relation_members_id_idx"
     create_table "current_relation_tags", :id => false do |t|
@@ -44,8 +44,8 @@ class AddRelations < ActiveRecord::Migration
       t.column "version",     :bigint, :default => 0, :null => false
     end
 
-    add_primary_key "relation_members", %w(id version member_type member_id member_role)
-    add_index "relation_members", %w(member_type member_id), :name => "relation_members_member_idx"
+    add_primary_key "relation_members", %w[id version member_type member_id member_role]
+    add_index "relation_members", %w[member_type member_id], :name => "relation_members_member_idx"
 
     create_table "relation_tags", :id => false do |t|
       t.column "id",      :bigint, :default => 0, :null => false
@@ -54,7 +54,7 @@ class AddRelations < ActiveRecord::Migration
       t.column "version", :bigint, :null => false
     end
 
-    add_index "relation_tags", %w(id version), :name => "relation_tags_id_version_idx"
+    add_index "relation_tags", %w[id version], :name => "relation_tags_id_version_idx"
 
     create_table "relations", :id => false do |t|
       t.column "id",        :bigint, :null => false, :default => 0
@@ -64,7 +64,7 @@ class AddRelations < ActiveRecord::Migration
       t.column "visible",   :boolean, :null => false, :default => true
     end
 
-    add_primary_key "relations", %w(id version)
+    add_primary_key "relations", %w[id version]
     add_index "relations", ["timestamp"], :name => "relations_timestamp_idx"
   end
 
index 8ca894d92b54d61773b9dd5f6b11d9fd6ceba32f..62f618abf5df5e9fd4b2349037d185c69969011a 100644 (file)
@@ -19,7 +19,7 @@ class RemoveSegments < ActiveRecord::Migration
       args = conn_opts.map(&:to_s) + [prefix]
       raise "#{cmd} failed" unless system cmd, *args
 
-      tempfiles = %w(ways way_nodes way_tags relations relation_members relation_tags)
+      tempfiles = %w[ways way_nodes way_tags relations relation_members relation_tags]
                   .map { |base| prefix + base }
       ways, way_nodes, way_tags,
   relations, relation_members, relation_tags = tempfiles
index 4e95b19765141a1f66d5e8f9d8e9f9bc576d045b..ac0f5e23a5ef40d0ba503abee21017d174e7203c 100644 (file)
@@ -11,7 +11,7 @@ class DiaryComments < ActiveRecord::Migration
       t.column "updated_at",     :datetime, :null => false
     end
 
-    add_index "diary_comments", %w(diary_entry_id id), :name => "diary_comments_entry_id_idx", :unique => true
+    add_index "diary_comments", %w[diary_entry_id id], :name => "diary_comments_entry_id_idx", :unique => true
   end
 
   def self.down
index 640019b15a4741a5ae7c3e76dd345d0f3a33b30f..0fd1dc5641fca2082054887bfe73eb077fd91de7 100644 (file)
@@ -18,7 +18,7 @@ class PopulateNodeTagsAndRemove < ActiveRecord::Migration
       args = conn_opts.map(&:to_s) + [prefix]
       raise "#{cmd} failed" unless system cmd, *args
 
-      tempfiles = %w(nodes node_tags current_nodes current_node_tags)
+      tempfiles = %w[nodes node_tags current_nodes current_node_tags]
                   .map { |base| prefix + base }
       nodes, node_tags, current_nodes, current_node_tags = tempfiles
     end
index edfecdfd9a84b19ec742cf62c8c36122a1dd6a50..6ef3587d10055388dc1844bade7c40c5f688a2ce 100644 (file)
@@ -1,9 +1,9 @@
 require "migrate"
 
 class MoveToInnodb < ActiveRecord::Migration
-  @conv_tables = %w(nodes ways way_tags way_nodes current_way_tags relation_members relations relation_tags current_relation_tags)
+  @conv_tables = %w[nodes ways way_tags way_nodes current_way_tags relation_members relations relation_tags current_relation_tags]
 
-  @ver_tbl = %w(nodes ways relations)
+  @ver_tbl = %w[nodes ways relations]
 
   def self.up
     remove_index :current_way_tags, :name => :current_way_tags_v_idx
index 3cf268dd083e37aa9bb66ef4e4f619472a09786e..933a62cd5009a60d3a06375279dd7a652f56f107 100644 (file)
@@ -1,7 +1,7 @@
 require "migrate"
 
 class AddChangesets < ActiveRecord::Migration
-  @conv_user_tables = %w(current_nodes current_relations current_ways nodes relations ways)
+  @conv_user_tables = %w[current_nodes current_relations current_ways nodes relations ways]
 
   def self.up
     create_table "changesets", :id => false do |t|
index b64c9caf0b5f63968fa2840ada70f5201ad791da..8fc9345a37c8fde7707d946cebb68bd93820ad61 100644 (file)
@@ -4,7 +4,7 @@ class AddMoreChangesetIndexes < ActiveRecord::Migration
   def self.up
     add_index "changesets", ["created_at"], :name => "changesets_created_at_idx"
     add_index "changesets", ["closed_at"], :name => "changesets_closed_at_idx"
-    add_index "changesets", %w(min_lat max_lat min_lon max_lon), :name => "changesets_bbox_idx", :using => "GIST"
+    add_index "changesets", %w[min_lat max_lat min_lon max_lon], :name => "changesets_bbox_idx", :using => "GIST"
   end
 
   def self.down
index c1e20ffd78afe4e10b0f7346c33f337cc5388b65..5a905c044e0e3fc210c12be12c7afcee58ab71f9 100644 (file)
@@ -2,7 +2,7 @@ require "migrate"
 
 class AddMoreControlsToGpxFiles < ActiveRecord::Migration
   def self.up
-    create_enumeration :gpx_visibility_enum, %w(private public trackable identifiable)
+    create_enumeration :gpx_visibility_enum, %w[private public trackable identifiable]
     add_column :gpx_files, :visibility, :gpx_visibility_enum, :default => "public", :null => false
     Trace.where(:public => false).update_all(:visibility => "private")
     add_index :gpx_files, [:visible, :visibility], :name => "gpx_files_visible_visibility_idx"
index 598cb3c047afb9aa3458bef0ba47d997f375c570..c37dc2c1b7efc434c49071140042b7e01569f124 100644 (file)
@@ -1,6 +1,5 @@
 class AddFineOAuthPermissions < ActiveRecord::Migration
-  PERMISSIONS = [:allow_read_prefs, :allow_write_prefs, :allow_write_diary,
-                 :allow_write_api, :allow_read_gpx, :allow_write_gpx].freeze
+  PERMISSIONS = [:allow_read_prefs, :allow_write_prefs, :allow_write_diary, :allow_write_api, :allow_read_gpx, :allow_write_gpx].freeze
 
   def self.up
     PERMISSIONS.each do |perm|
index bae5a3cadb62254a9241b1f16f3e3544f141705d..e5cf07cd335a67c48c24f10c0b3fc265a21bfc15 100644 (file)
@@ -2,7 +2,7 @@ require "migrate"
 
 class CreateUserRoles < ActiveRecord::Migration
   def self.up
-    create_enumeration :user_role_enum, %w(administrator moderator)
+    create_enumeration :user_role_enum, %w[administrator moderator]
 
     create_table :user_roles do |t|
       t.column :user_id, :bigint, :null => false
index f98cfd1eb5baac827b9f5652602e85bb946183d8..f3a550c60d3e6e3b47f43b2bac13d5716dd7108c 100644 (file)
@@ -2,7 +2,7 @@ require "migrate"
 
 class AddStatusToUser < ActiveRecord::Migration
   def self.up
-    create_enumeration :user_status_enum, %w(pending active confirmed suspended deleted)
+    create_enumeration :user_status_enum, %w[pending active confirmed suspended deleted]
 
     add_column :users, :status, :user_status_enum, :null => false, :default => "pending"
 
index 52d1904246528870444c2225f3424072344145d5..0ad968d0a414f788090ba501ef5660d98bdff80c 100644 (file)
@@ -2,7 +2,7 @@ require "migrate"
 
 class AddMapBugTables < ActiveRecord::Migration
   def self.up
-    create_enumeration :map_bug_status_enum, %w(open closed hidden)
+    create_enumeration :map_bug_status_enum, %w[open closed hidden]
 
     create_table :map_bugs do |t|
       t.integer :latitude, :null => false
index d5e77f49990c3fe6217e3b39126960d31ddf2ce7..6ba2b5a76c66177fb6ea1118e275e39de6144d66 100644 (file)
@@ -2,7 +2,7 @@ require "migrate"
 
 class AddMapBugCommentEvent < ActiveRecord::Migration
   def self.up
-    create_enumeration :map_bug_event_enum, %w(opened closed reopened commented hidden)
+    create_enumeration :map_bug_event_enum, %w[opened closed reopened commented hidden]
 
     add_column :map_bug_comment, :event, :map_bug_event_enum
   end
index 3f82c3292056d0880dac3f5f836442acfc46adda..165524d2cc501074c8679ba93e4493b743fb672f 100644 (file)
@@ -2,7 +2,7 @@ require "migrate"
 
 class AddTextFormat < ActiveRecord::Migration
   def up
-    create_enumeration :format_enum, %w(html markdown text)
+    create_enumeration :format_enum, %w[html markdown text]
     add_column :users, :description_format, :format_enum, :null => false, :default => "html"
     add_column :user_blocks, :reason_format, :format_enum, :null => false, :default => "html"
     add_column :diary_entries, :body_format, :format_enum, :null => false, :default => "html"
index 21f64622814f93cedd6909eb10a19f2daa8f7ad6..6c04287240641e927943558c4e33bcfe96226fee 100644 (file)
@@ -1,4 +1,4 @@
 module Editors
-  ALL_EDITORS = %w(potlatch potlatch2 id remote).freeze
-  RECOMMENDED_EDITORS = %w(id potlatch2 remote).freeze
+  ALL_EDITORS = %w[potlatch potlatch2 id remote].freeze
+  RECOMMENDED_EDITORS = %w[id potlatch2 remote].freeze
 end
index 21c1b2cf2ab7e8c03f8d2585af3f4ce1432f19e7..182a2a08614485ef690590bcb940e21849ce671a 100644 (file)
@@ -1,50 +1,45 @@
-module ActiveRecord
-  module ConnectionAdapters
-    module SchemaStatements
-      def add_index_options_with_columns(table_name, column_name, options = {})
+module OpenStreetMap
+  module ActiveRecord
+    module AbstractAdapter
+      def add_index_options(table_name, column_name, options = {})
         columns = options.delete(:columns)
-        index_name, index_type, index_columns, index_options, algorithm, using = add_index_options_without_columns(table_name, column_name, options)
+        index_name, index_type, index_columns, index_options, algorithm, using = super(table_name, column_name, options)
         [index_name, index_type, columns || index_columns, index_options, algorithm, using]
       end
-
-      alias_method_chain :add_index_options, :columns
     end
 
-    module PostgreSQL
-      module Quoting
-        def quote_column_name_with_arrays(name)
-          Array(name).map { |n| quote_column_name_without_arrays(n) }.join(", ")
-        end
-
-        alias_method_chain :quote_column_name, :arrays
+    module PostgreSQLAdapter
+      def quote_column_name(name)
+        Array(name).map { |n| super(n) }.join(", ")
       end
 
-      module SchemaStatements
-        def add_primary_key(table_name, column_name, _options = {})
-          execute "ALTER TABLE #{quote_table_name(table_name)} ADD PRIMARY KEY (#{quote_column_name(column_name)})"
-        end
+      def add_primary_key(table_name, column_name, _options = {})
+        execute "ALTER TABLE #{quote_table_name(table_name)} ADD PRIMARY KEY (#{quote_column_name(column_name)})"
+      end
 
-        def remove_primary_key(table_name)
-          execute "ALTER TABLE #{quote_table_name(table_name)} DROP PRIMARY KEY"
-        end
+      def remove_primary_key(table_name)
+        execute "ALTER TABLE #{quote_table_name(table_name)} DROP PRIMARY KEY"
+      end
 
-        def alter_primary_key(table_name, new_columns)
-          execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{quote_table_name(table_name + '_pkey')}"
-          execute "ALTER TABLE #{quote_table_name(table_name)} ADD PRIMARY KEY (#{quote_column_name(new_columns)})"
-        end
+      def alter_primary_key(table_name, new_columns)
+        execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{quote_table_name(table_name + '_pkey')}"
+        execute "ALTER TABLE #{quote_table_name(table_name)} ADD PRIMARY KEY (#{quote_column_name(new_columns)})"
+      end
 
-        def create_enumeration(enumeration_name, values)
-          execute "CREATE TYPE #{enumeration_name} AS ENUM ('#{values.join '\',\''}')"
-        end
+      def create_enumeration(enumeration_name, values)
+        execute "CREATE TYPE #{enumeration_name} AS ENUM ('#{values.join '\',\''}')"
+      end
 
-        def drop_enumeration(enumeration_name)
-          execute "DROP TYPE #{enumeration_name}"
-        end
+      def drop_enumeration(enumeration_name)
+        execute "DROP TYPE #{enumeration_name}"
+      end
 
-        def rename_enumeration(old_name, new_name)
-          execute "ALTER TYPE #{quote_table_name(old_name)} RENAME TO #{quote_table_name(new_name)}"
-        end
+      def rename_enumeration(old_name, new_name)
+        execute "ALTER TYPE #{quote_table_name(old_name)} RENAME TO #{quote_table_name(new_name)}"
       end
     end
   end
 end
+
+ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(OpenStreetMap::ActiveRecord::AbstractAdapter)
+ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(OpenStreetMap::ActiveRecord::PostgreSQLAdapter)
index 347e7a8176b3e1190ed24c9acc716c735cd12db4..931ec04a3c60eae984b0b398be3c6b7eeaa8c17d 100644 (file)
@@ -1,7 +1,7 @@
 module QuadTile
   begin
     require "quad_tile/quad_tile_so"
-  rescue MissingSourceFile
+  rescue LoadError
     def self.tile_for_point(lat, lon)
       x = ((lon.to_f + 180) * 65535 / 360).round
       y = ((lat.to_f + 90) * 65535 / 180).round
index 912302c2ee7bb4bd5d0c921679bb322a2fd475dd..8b79523b728730b3b3b22b562c06556937686683 100755 (executable)
@@ -15,7 +15,7 @@ puts "<h2>OpenStreetMap stats report run at #{start_time}</h2>"
 
 begin
   ActiveRecord::Base.transaction do
-    user_count = User.where(:status => %w(active confirmed suspended)).count
+    user_count = User.where(:status => %w[active confirmed suspended]).count
     tracepoint_count = Tracepoint.count
     node_count = Node.where(:visible => true).count
     way_count = Way.where(:visible => true).count
index 4367fd8daac6f041661fa0c9048c0c83827329c9..f14905b90cae1c183a7d62e8d36c96c307f1def2 100755 (executable)
@@ -5,7 +5,7 @@ require "generator"
 
 addresses = User.count(
   :conditions => {
-    :status => %w(suspended deleted),
+    :status => %w[suspended deleted],
     :creation_time => Time.now - 28.days..Time.now
   },
   :group => :creation_ip
index a57da557dc151926eef6dafc2cd4a1fde7cdd87c..83ef03bbf95cc4fb1d31dc1d2169eb5c6153d1d7 100644 (file)
@@ -3,8 +3,6 @@ require "stringio"
 include Potlatch
 
 class AmfControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -19,8 +17,8 @@ class AmfControllerTest < ActionController::TestCase
   end
 
   def test_getpresets
-    user_en_de = create(:user, :languages => %w(en de))
-    user_de = create(:user, :languages => %w(de))
+    user_en_de = create(:user, :languages => %w[en de])
+    user_de = create(:user, :languages => %w[de])
     [user_en_de, user_de].each do |user|
       amf_content "getpresets", "/1", ["#{user.email}:test", ""]
       post :amf_read
@@ -253,12 +251,15 @@ class AmfControllerTest < ActionController::TestCase
   end
 
   def test_whichways_deleted
-    node = create(:node, :lat => 3.0, :lon => 3.0)
-    way = create(:way)
-    deleted_way = create(:way, :deleted)
+    node = create(:node, :with_history, :lat => 24.0, :lon => 24.0)
+    way = create(:way, :with_history)
+    way_v1 = way.old_ways.find_by(:version => 1)
+    deleted_way = create(:way, :with_history, :deleted)
+    deleted_way_v1 = deleted_way.old_ways.find_by(:version => 1)
     create(:way_node, :way => way, :node => node)
     create(:way_node, :way => deleted_way, :node => node)
-    create(:way_tag, :way => way)
+    create(:old_way_node, :old_way => way_v1, :node => node)
+    create(:old_way_node, :old_way => deleted_way_v1, :node => node)
 
     minlon = node.lon - 0.1
     minlat = node.lat - 0.1
@@ -276,9 +277,9 @@ class AmfControllerTest < ActionController::TestCase
     assert_equal Array, map[2].class, "third map element should be an array"
     # TODO: looks like amf_controller changed since this test was written
     # so someone who knows what they're doing should check this!
-    assert !map[2].include?(current_ways(:used_way).id),
-           "map should not include used way"
-    assert map[2].include?(current_ways(:invisible_way).id),
+    assert !map[2].include?(way.id),
+           "map should not include visible way"
+    assert map[2].include?(deleted_way.id),
            "map should include deleted way"
   end
 
@@ -331,14 +332,16 @@ class AmfControllerTest < ActionController::TestCase
   end
 
   def test_getway_old
+    latest = create(:way, :version => 2)
+    v1 = create(:old_way, :current_way => latest, :version => 1, :timestamp => Time.now.utc - 2.minutes)
+    _v2 = create(:old_way, :current_way => latest, :version => 2, :timestamp => Time.now.utc - 1.minute)
+
     # try to get the last visible version (specified by <0) (should be current version)
-    latest = current_ways(:way_with_versions)
     # NOTE: looks from the API changes that this now expects a timestamp
     # instead of a version number...
     # try to get version 1
-    v1 = ways(:way_with_versions_v2)
     { latest.id => "",
-      v1.way_id => v1.timestamp.strftime("%d %b %Y, %H:%M:%S") }.each do |id, t|
+      v1.way_id => (v1.timestamp + 1).strftime("%d %b %Y, %H:%M:%S") }.each do |id, t|
       amf_content "getway_old", "/1", [id, t]
       post :amf_read
       assert_response :success
@@ -355,7 +358,7 @@ class AmfControllerTest < ActionController::TestCase
   # test that the server doesn't fall over when rubbish is passed
   # into the method args.
   def test_getway_old_invalid
-    way_id = current_ways(:way_with_versions).id
+    way_id = create(:way, :with_history, :version => 2).id
     { "foo"  => "bar",
       way_id => "not a date",
       way_id => "2009-03-25 00:00:00",                   # <- wrong format
@@ -375,7 +378,8 @@ class AmfControllerTest < ActionController::TestCase
 
   def test_getway_old_nonexistent
     # try to get the last version-10 (shoudn't exist)
-    v1 = ways(:way_with_versions_v1)
+    way = create(:way, :with_history, :version => 2)
+    v1 = way.old_ways.find_by(:version => 1)
     # try to get last visible version of non-existent way
     # try to get specific version of non-existent way
     [[0, ""],
@@ -394,7 +398,8 @@ class AmfControllerTest < ActionController::TestCase
   end
 
   def test_getway_old_invisible
-    v1 = ways(:invisible_way)
+    way = create(:way, :deleted, :with_history, :version => 1)
+    v1 = way.old_ways.find_by(:version => 1)
     # try to get deleted version
     [[v1.way_id, (v1.timestamp + 10).strftime("%d %b %Y, %H:%M:%S")]].each do |id, t|
       amf_content "getway_old", "/1", [id, t]
@@ -410,8 +415,9 @@ class AmfControllerTest < ActionController::TestCase
   end
 
   def test_getway_history
-    latest = current_ways(:way_with_versions)
-    oldest = ways(:way_with_versions_v1)
+    latest = create(:way, :version => 2)
+    oldest = create(:old_way, :current_way => latest, :version => 1, :timestamp => latest.timestamp - 2.minutes)
+    create(:old_way, :current_way => latest, :version => 2, :timestamp => latest.timestamp)
 
     amf_content "getway_history", "/1", [latest.id]
     post :amf_read
@@ -529,7 +535,9 @@ class AmfControllerTest < ActionController::TestCase
   end
 
   def test_findgpx_by_name
-    amf_content "findgpx", "/1", ["Trace", "test@example.com:test"]
+    user = create(:user)
+
+    amf_content "findgpx", "/1", ["Trace", "#{user.email}:test"]
     post :amf_read
     assert_response :success
     amf_parse_response
@@ -1310,7 +1318,9 @@ class AmfControllerTest < ActionController::TestCase
 
   # check that we can open a changeset
   def test_startchangeset_valid
-    amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "new" }, nil, "new", 1]
+    user = create(:user)
+
+    amf_content "startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1]
     post :amf_write
     assert_response :success
     amf_parse_response
@@ -1327,7 +1337,7 @@ class AmfControllerTest < ActionController::TestCase
 
     old_cs_id = new_cs_id
 
-    amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "newer" }, old_cs_id, "newer", 1]
+    amf_content "startchangeset", "/1", ["#{user.email}:test", { "source" => "newer" }, old_cs_id, "newer", 1]
     post :amf_write
     assert_response :success
     amf_parse_response
@@ -1350,7 +1360,7 @@ class AmfControllerTest < ActionController::TestCase
 
     old_cs_id = new_cs_id
 
-    amf_content "startchangeset", "/1", ["test@example.com:test", {}, old_cs_id, "", 0]
+    amf_content "startchangeset", "/1", ["#{user.email}:test", {}, old_cs_id, "", 0]
     post :amf_write
     assert_response :success
     amf_parse_response
@@ -1368,7 +1378,10 @@ class AmfControllerTest < ActionController::TestCase
 
   # check that we can't close somebody elses changeset
   def test_startchangeset_invalid_wrong_user
-    amf_content "startchangeset", "/1", ["test@example.com:test", { "source" => "new" }, nil, "new", 1]
+    user = create(:user)
+    user2 = create(:user)
+
+    amf_content "startchangeset", "/1", ["#{user.email}:test", { "source" => "new" }, nil, "new", 1]
     post :amf_write
     assert_response :success
     amf_parse_response
@@ -1383,7 +1396,7 @@ class AmfControllerTest < ActionController::TestCase
     assert_equal true, cs.is_open?
     assert_equal({ "comment" => "new", "source" => "new" }, cs.tags)
 
-    amf_content "startchangeset", "/1", ["test@openstreetmap.org:test", {}, cs_id, "delete", 0]
+    amf_content "startchangeset", "/1", ["#{user2.email}:test", {}, cs_id, "delete", 0]
     post :amf_write
     assert_response :success
     amf_parse_response
@@ -1400,10 +1413,12 @@ class AmfControllerTest < ActionController::TestCase
 
   # check that invalid characters are stripped from changeset tags
   def test_startchangeset_invalid_xmlchar_comment
+    user = create(:user)
+
     invalid = "\035\022"
     comment = "foo#{invalid}bar"
 
-    amf_content "startchangeset", "/1", ["test@example.com:test", {}, nil, comment, 1]
+    amf_content "startchangeset", "/1", ["#{user.email}:test", {}, nil, comment, 1]
     post :amf_write
     assert_response :success
     amf_parse_response
index 0715a64ad0ed470e57a43b9d80ce304769fca579..61763d128d448a099aed5dd7fa4ff73919917f9e 100644 (file)
@@ -2,18 +2,16 @@ require "test_helper"
 require "api_controller"
 
 class ApiControllerTest < ActionController::TestCase
-  api_fixtures
-
   def setup
     super
-    @badbigbbox = %w(-0.1,-0.1,1.1,1.1 10,10,11,11)
-    @badmalformedbbox = %w(-0.1 hello
-                           10N2W10.1N2.1W)
-    @badlatmixedbbox = %w(0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33)
-    @badlonmixedbbox = %w(80,-0.1,70,0.1 54.34,0.24,54.33,0.25)
+    @badbigbbox = %w[-0.1,-0.1,1.1,1.1 10,10,11,11]
+    @badmalformedbbox = %w[-0.1 hello
+                           10N2W10.1N2.1W]
+    @badlatmixedbbox = %w[0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33]
+    @badlonmixedbbox = %w[80,-0.1,70,0.1 54.34,0.24,54.33,0.25]
     # @badlatlonoutboundsbbox = %w{ 191,-0.1,193,0.1  -190.1,89.9,-190,90 }
-    @goodbbox = %w(-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0
-                   -0.1,%20-0.1,%200.1,%200.1 -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1)
+    @goodbbox = %w[-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0
+                   -0.1,%20-0.1,%200.1,%200.1 -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1]
     # That last item in the goodbbox really shouldn't be there, as the API should
     # reall reject it, however this is to test to see if the api changes.
   end
@@ -219,7 +217,7 @@ class ApiControllerTest < ActionController::TestCase
   end
 
   def test_map_without_bbox
-    %w(trackpoints map).each do |tq|
+    %w[trackpoints map].each do |tq|
       get tq
       assert_response :bad_request
       assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "A bbox param was expected"
@@ -240,7 +238,7 @@ class ApiControllerTest < ActionController::TestCase
 
   def test_bbox_too_big
     @badbigbbox.each do |bbox|
-      %w(trackpoints map).each do |tq|
+      %w[trackpoints map].each do |tq|
         get tq, :bbox => bbox
         assert_response :bad_request, "The bbox:#{bbox} was expected to be too big"
         assert_equal "The maximum bbox size is #{MAX_REQUEST_AREA}, and your request was too large. Either request a smaller area, or use planet.osm", @response.body, "bbox: #{bbox}"
@@ -250,7 +248,7 @@ class ApiControllerTest < ActionController::TestCase
 
   def test_bbox_malformed
     @badmalformedbbox.each do |bbox|
-      %w(trackpoints map).each do |tq|
+      %w[trackpoints map].each do |tq|
         get tq, :bbox => bbox
         assert_response :bad_request, "The bbox:#{bbox} was expected to be malformed"
         assert_equal "The parameter bbox is required, and must be of the form min_lon,min_lat,max_lon,max_lat", @response.body, "bbox: #{bbox}"
@@ -260,7 +258,7 @@ class ApiControllerTest < ActionController::TestCase
 
   def test_bbox_lon_mixedup
     @badlonmixedbbox.each do |bbox|
-      %w(trackpoints map).each do |tq|
+      %w[trackpoints map].each do |tq|
         get tq, :bbox => bbox
         assert_response :bad_request, "The bbox:#{bbox} was expected to have the longitude mixed up"
         assert_equal "The minimum longitude must be less than the maximum longitude, but it wasn't", @response.body, "bbox: #{bbox}"
@@ -270,7 +268,7 @@ class ApiControllerTest < ActionController::TestCase
 
   def test_bbox_lat_mixedup
     @badlatmixedbbox.each do |bbox|
-      %w(trackpoints map).each do |tq|
+      %w[trackpoints map].each do |tq|
         get tq, :bbox => bbox
         assert_response :bad_request, "The bbox:#{bbox} was expected to have the latitude mixed up"
         assert_equal "The minimum latitude must be less than the maximum latitude, but it wasn't", @response.body, "bbox: #{bbox}"
@@ -295,12 +293,20 @@ class ApiControllerTest < ActionController::TestCase
   # http://wiki.openstreetmap.org/wiki/Rails#Installing_the_quadtile_functions
   # or by looking at the readme in db/README
   def test_changes_simple
+    # create a selection of nodes
+    (1..5).each do |n|
+      create(:node, :timestamp => Time.utc(2007, 1, 1, 0, 0, 0), :lat => n, :lon => n)
+    end
+    # deleted nodes should also be counted
+    create(:node, :deleted, :timestamp => Time.utc(2007, 1, 1, 0, 0, 0), :lat => 6, :lon => 6)
+    # nodes in the same tile won't change the total
+    create(:node, :timestamp => Time.utc(2007, 1, 1, 0, 0, 0), :lat => 6, :lon => 6)
+    # nodes with a different timestamp should be ignored
+    create(:node, :timestamp => Time.utc(2008, 1, 1, 0, 0, 0), :lat => 7, :lon => 7)
+
     Timecop.freeze(Time.utc(2010, 4, 3, 10, 55, 0))
     get :changes
     assert_response :success
-    # print @response.body
-    # As we have loaded the fixtures, we can assume that there are no
-    # changes at the time we have frozen at
     now = Time.now.getutc
     hourago = now - 1.hour
     assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
@@ -320,14 +326,14 @@ class ApiControllerTest < ActionController::TestCase
     hourago = now - 1.hour
     assert_select "osm[version='#{API_VERSION}'][generator='#{GENERATOR}']", :count => 1 do
       assert_select "changes[starttime='#{hourago.xmlschema}'][endtime='#{now.xmlschema}']", :count => 1 do
-        assert_select "tile", :count => 10
+        assert_select "tile", :count => 6
       end
     end
     Timecop.return
   end
 
   def test_changes_zoom_invalid
-    zoom_to_test = %w(p -1 0 17 one two)
+    zoom_to_test = %w[p -1 0 17 one two]
     zoom_to_test.each do |zoom|
       get :changes, :zoom => zoom
       assert_response :bad_request
@@ -348,7 +354,7 @@ class ApiControllerTest < ActionController::TestCase
   end
 
   def test_changes_hours_invalid
-    invalid = %w(-21 335 -1 0 25 26 100 one two three ping pong :)
+    invalid = %w[-21 335 -1 0 25 26 100 one two three ping pong :]
     invalid.each do |hour|
       get :changes, :hours => hour
       assert_response :bad_request, "Problem with the hour: #{hour}"
index 12262b22403bd73dba6882ec169637e0f08ab40f..abb1ccdfeaf5b1f7a7add3a4b0dc985a2d8b64f0 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "browse_controller"
 
 class BrowseControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -46,19 +44,19 @@ class BrowseControllerTest < ActionController::TestCase
   end
 
   def test_read_relation
-    browse_check "relation", relations(:visible_relation).relation_id, "browse/feature"
+    browse_check "relation", create(:relation).id, "browse/feature"
   end
 
   def test_read_relation_history
-    browse_check "relation_history", relations(:visible_relation).relation_id, "browse/history"
+    browse_check "relation_history", create(:relation, :with_history).id, "browse/history"
   end
 
   def test_read_way
-    browse_check "way", ways(:visible_way).way_id, "browse/feature"
+    browse_check "way", create(:way).id, "browse/feature"
   end
 
   def test_read_way_history
-    browse_check "way_history", ways(:visible_way).way_id, "browse/history"
+    browse_check "way_history", create(:way, :with_history).id, "browse/history"
   end
 
   def test_read_node
@@ -70,8 +68,10 @@ class BrowseControllerTest < ActionController::TestCase
   end
 
   def test_read_changeset
-    browse_check "changeset", changesets(:normal_user_first_change).id, "browse/changeset"
-    browse_check "changeset", changesets(:public_user_first_change).id, "browse/changeset"
+    private_changeset = create(:changeset, :user => create(:user, :data_public => false))
+    changeset = create(:changeset)
+    browse_check "changeset", private_changeset.id, "browse/changeset"
+    browse_check "changeset", changeset.id, "browse/changeset"
   end
 
   def test_read_changeset_hidden_comments
@@ -169,7 +169,13 @@ class BrowseControllerTest < ActionController::TestCase
   end
 
   def test_redacted_way_history
-    get :way_history, :id => ways(:way_with_redacted_versions_v1).way_id
+    way = create(:way, :with_history, :version => 4)
+    way_v1 = way.old_ways.find_by(:version => 1)
+    way_v1.redact!(create(:redaction))
+    way_v3 = way.old_ways.find_by(:version => 3)
+    way_v3.redact!(create(:redaction))
+
+    get :way_history, :id => way.id
     assert_response :success
     assert_template "browse/history"
 
@@ -181,7 +187,13 @@ class BrowseControllerTest < ActionController::TestCase
   end
 
   def test_redacted_relation_history
-    get :relation_history, :id => relations(:relation_with_redacted_versions_v1).relation_id
+    relation = create(:relation, :with_history, :version => 4)
+    relation_v1 = relation.old_relations.find_by(:version => 1)
+    relation_v1.redact!(create(:redaction))
+    relation_v3 = relation.old_relations.find_by(:version => 3)
+    relation_v3.redact!(create(:redaction))
+
+    get :relation_history, :id => relation.id
     assert_response :success
     assert_template "browse/history"
 
index a22ed3912dfd441e5e0a244d7b3344511b71cf88..c12f1d902e7d46f276a28391aac8b61481d8be55 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "changeset_controller"
 
 class ChangesetControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -329,22 +327,22 @@ class ChangesetControllerTest < ActionController::TestCase
 
     # simple diff to change a node, way and relation by removing
     # their tags
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
-  <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
-   <nd ref='#{node.id}'/>
-  </way>
- </modify>
- <modify>
-  <relation id='#{relation.id}' changeset='#{changeset_id}' version='1'>
-   <member type='way' role='some' ref='#{way.id}'/>
-   <member type='node' role='some' ref='#{node.id}'/>
-   <member type='relation' role='some' ref='#{other_relation.id}'/>
-  </relation>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
+        <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
+         <nd ref='#{node.id}'/>
+        </way>
      </modify>
      <modify>
+        <relation id='#{relation.id}' changeset='#{changeset_id}' version='1'>
+         <member type='way' role='some' ref='#{way.id}'/>
+         <member type='node' role='some' ref='#{node.id}'/>
+         <member type='relation' role='some' ref='#{other_relation.id}'/>
+        </relation>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
@@ -359,22 +357,22 @@ EOF
 
     # simple diff to change a node, way and relation by removing
     # their tags
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
-  <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
-   <nd ref='#{node.id}'/>
-  </way>
- </modify>
- <modify>
-  <relation id='#{relation.id}' changeset='#{changeset_id}' version='1'>
-   <member type='way' role='some' ref='#{way.id}'/>
-   <member type='node' role='some' ref='#{node.id}'/>
-   <member type='relation' role='some' ref='#{other_relation.id}'/>
-  </relation>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
+        <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
+         <nd ref='#{node.id}'/>
+        </way>
      </modify>
      <modify>
+        <relation id='#{relation.id}' changeset='#{changeset_id}' version='1'>
+         <member type='way' role='some' ref='#{way.id}'/>
+         <member type='node' role='some' ref='#{node.id}'/>
+         <member type='relation' role='some' ref='#{other_relation.id}'/>
+        </relation>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
@@ -389,22 +387,22 @@ EOF
 
     # simple diff to change a node, way and relation by removing
     # their tags
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
-  <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
-   <nd ref='#{node.id}'/>
-  </way>
- </modify>
- <modify>
-  <relation id='#{relation.id}' changeset='#{changeset_id}' version='1'>
-   <member type='way' role='some' ref='#{way.id}'/>
-   <member type='node' role='some' ref='#{node.id}'/>
-   <member type='relation' role='some' ref='#{other_relation.id}'/>
-  </relation>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
+        <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
+         <nd ref='#{node.id}'/>
+        </way>
      </modify>
      <modify>
+        <relation id='#{relation.id}' changeset='#{changeset_id}' version='1'>
+         <member type='way' role='some' ref='#{way.id}'/>
+         <member type='node' role='some' ref='#{node.id}'/>
+         <member type='relation' role='some' ref='#{other_relation.id}'/>
+        </relation>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
@@ -424,29 +422,32 @@ EOF
   def test_upload_create_valid
     user = create(:user)
     changeset = create(:changeset, :user => user)
+    node = create(:node)
+    way = create(:way_with_nodes, :nodes_count => 2)
+    relation = create(:relation)
 
     basic_authorization user.email, "test"
 
     # simple diff to create a node way and relation using placeholders
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
-   <tag k='foo' v='bar'/>
-   <tag k='baz' v='bat'/>
-  </node>
-  <way id='-1' changeset='#{changeset.id}'>
-   <nd ref='3'/>
-  </way>
- </create>
- <create>
-  <relation id='-1' changeset='#{changeset.id}'>
-   <member type='way' role='some' ref='3'/>
-   <member type='node' role='some' ref='5'/>
-   <member type='relation' role='some' ref='3'/>
-  </relation>
- </create>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <create>
+        <node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
+         <tag k='foo' v='bar'/>
+         <tag k='baz' v='bat'/>
+        </node>
+        <way id='-1' changeset='#{changeset.id}'>
+         <nd ref='#{node.id}'/>
+        </way>
      </create>
      <create>
+        <relation id='-1' changeset='#{changeset.id}'>
+         <member type='way' role='some' ref='#{way.id}'/>
+         <member type='node' role='some' ref='#{node.id}'/>
+         <member type='relation' role='some' ref='#{relation.id}'/>
+        </relation>
      </create>
+      </osmChange>
 EOF
 
     # upload it
@@ -487,28 +488,36 @@ EOF
   # test a complex delete where we delete elements which rely on eachother
   # in the same transaction.
   def test_upload_delete
-    basic_authorization changesets(:public_user_first_change).user.display_name, "test"
+    changeset = create(:changeset)
+    super_relation = create(:relation)
+    used_relation = create(:relation)
+    used_way = create(:way)
+    used_node = create(:node)
+    create(:relation_member, :relation => super_relation, :member => used_relation)
+    create(:relation_member, :relation => super_relation, :member => used_way)
+    create(:relation_member, :relation => super_relation, :member => used_node)
+
+    basic_authorization changeset.user.display_name, "test"
 
     diff = XML::Document.new
     diff.root = XML::Node.new "osmChange"
     delete = XML::Node.new "delete"
     diff.root << delete
-    delete << current_relations(:visible_relation).to_xml_node
-    delete << current_relations(:used_relation).to_xml_node
-    delete << current_ways(:used_way).to_xml_node
-    delete << current_nodes(:node_used_by_relationship).to_xml_node
+    delete << super_relation.to_xml_node
+    delete << used_relation.to_xml_node
+    delete << used_way.to_xml_node
+    delete << used_node.to_xml_node
 
     # update the changeset to one that this user owns
-    changeset_id = changesets(:public_user_first_change).id
-    %w(node way relation).each do |type|
+    %w[node way relation].each do |type|
       delete.find("//osmChange/delete/#{type}").each do |n|
-        n["changeset"] = changeset_id.to_s
+        n["changeset"] = changeset.id.to_s
       end
     end
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't upload a deletion diff to changeset: #{@response.body}"
 
@@ -518,25 +527,25 @@ EOF
     assert_select "diffResult>relation", 2
 
     # check that everything was deleted
-    assert_equal false, Node.find(current_nodes(:node_used_by_relationship).id).visible
-    assert_equal false, Way.find(current_ways(:used_way).id).visible
-    assert_equal false, Relation.find(current_relations(:visible_relation).id).visible
-    assert_equal false, Relation.find(current_relations(:used_relation).id).visible
+    assert_equal false, Node.find(used_node.id).visible
+    assert_equal false, Way.find(used_way.id).visible
+    assert_equal false, Relation.find(super_relation.id).visible
+    assert_equal false, Relation.find(used_relation.id).visible
   end
 
   ##
   # test uploading a delete with no lat/lon, as they are optional in
   # the osmChange spec.
   def test_upload_nolatlon_delete
-    basic_authorization changesets(:public_user_first_change).user.display_name, "test"
+    node = create(:node)
+    changeset = create(:changeset)
 
-    node = current_nodes(:public_visible_node)
-    cs = changesets(:public_user_first_change)
-    diff = "<osmChange><delete><node id='#{node.id}' version='#{node.version}' changeset='#{cs.id}'/></delete></osmChange>"
+    basic_authorization changeset.user.display_name, "test"
+    diff = "<osmChange><delete><node id='#{node.id}' version='#{node.version}' changeset='#{changeset.id}'/></delete></osmChange>"
 
     # upload it
     content diff
-    post :upload, :id => cs.id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't upload a deletion diff to changeset: #{@response.body}"
 
@@ -573,29 +582,29 @@ EOF
 
     # upload some widely-spaced nodes, spiralling positive and negative to cause
     # largest bbox over-expansion possible.
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id='-1' lon='-20' lat='-10' changeset='#{changeset_id}'/>
-  <node id='-10' lon='20'  lat='10' changeset='#{changeset_id}'/>
-  <node id='-2' lon='-40' lat='-20' changeset='#{changeset_id}'/>
-  <node id='-11' lon='40'  lat='20' changeset='#{changeset_id}'/>
-  <node id='-3' lon='-60' lat='-30' changeset='#{changeset_id}'/>
-  <node id='-12' lon='60'  lat='30' changeset='#{changeset_id}'/>
-  <node id='-4' lon='-80' lat='-40' changeset='#{changeset_id}'/>
-  <node id='-13' lon='80'  lat='40' changeset='#{changeset_id}'/>
-  <node id='-5' lon='-100' lat='-50' changeset='#{changeset_id}'/>
-  <node id='-14' lon='100'  lat='50' changeset='#{changeset_id}'/>
-  <node id='-6' lon='-120' lat='-60' changeset='#{changeset_id}'/>
-  <node id='-15' lon='120'  lat='60' changeset='#{changeset_id}'/>
-  <node id='-7' lon='-140' lat='-70' changeset='#{changeset_id}'/>
-  <node id='-16' lon='140'  lat='70' changeset='#{changeset_id}'/>
-  <node id='-8' lon='-160' lat='-80' changeset='#{changeset_id}'/>
-  <node id='-17' lon='160'  lat='80' changeset='#{changeset_id}'/>
-  <node id='-9' lon='-179.9' lat='-89.9' changeset='#{changeset_id}'/>
-  <node id='-18' lon='179.9'  lat='89.9' changeset='#{changeset_id}'/>
- </create>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <create>
+        <node id='-1' lon='-20' lat='-10' changeset='#{changeset_id}'/>
+        <node id='-10' lon='20'  lat='10' changeset='#{changeset_id}'/>
+        <node id='-2' lon='-40' lat='-20' changeset='#{changeset_id}'/>
+        <node id='-11' lon='40'  lat='20' changeset='#{changeset_id}'/>
+        <node id='-3' lon='-60' lat='-30' changeset='#{changeset_id}'/>
+        <node id='-12' lon='60'  lat='30' changeset='#{changeset_id}'/>
+        <node id='-4' lon='-80' lat='-40' changeset='#{changeset_id}'/>
+        <node id='-13' lon='80'  lat='40' changeset='#{changeset_id}'/>
+        <node id='-5' lon='-100' lat='-50' changeset='#{changeset_id}'/>
+        <node id='-14' lon='100'  lat='50' changeset='#{changeset_id}'/>
+        <node id='-6' lon='-120' lat='-60' changeset='#{changeset_id}'/>
+        <node id='-15' lon='120'  lat='60' changeset='#{changeset_id}'/>
+        <node id='-7' lon='-140' lat='-70' changeset='#{changeset_id}'/>
+        <node id='-16' lon='140'  lat='70' changeset='#{changeset_id}'/>
+        <node id='-8' lon='-160' lat='-80' changeset='#{changeset_id}'/>
+        <node id='-17' lon='160'  lat='80' changeset='#{changeset_id}'/>
+        <node id='-9' lon='-179.9' lat='-89.9' changeset='#{changeset_id}'/>
+        <node id='-18' lon='179.9'  lat='89.9' changeset='#{changeset_id}'/>
      </create>
+      </osmChange>
 EOF
 
     # upload it, which used to cause an error like "PGError: ERROR:
@@ -617,48 +626,78 @@ EOF
   # test that deleting stuff in a transaction doesn't bypass the checks
   # to ensure that used elements are not deleted.
   def test_upload_delete_invalid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs = changesets(:public_user_first_change)
+    changeset = create(:changeset)
+    relation = create(:relation)
+    other_relation = create(:relation)
+    used_way = create(:way)
+    used_node = create(:node)
+    create(:relation_member, :relation => relation, :member => used_way)
+    create(:relation_member, :relation => relation, :member => used_node)
+
+    basic_authorization changeset.user.email, "test"
 
     diff = XML::Document.new
     diff.root = XML::Node.new "osmChange"
     delete = XML::Node.new "delete"
     diff.root << delete
-    delete << current_relations(:public_visible_relation).to_xml_node
-    delete << current_ways(:used_way).to_xml_node
-    delete << current_nodes(:node_used_by_relationship).to_xml_node
+    delete << other_relation.to_xml_node
+    delete << used_way.to_xml_node
+    delete << used_node.to_xml_node
+
+    # update the changeset to one that this user owns
+    %w[node way relation].each do |type|
+      delete.find("//osmChange/delete/#{type}").each do |n|
+        n["changeset"] = changeset.id.to_s
+      end
+    end
 
     # upload it
     content diff
-    post :upload, :id => cs.id
+    post :upload, :id => changeset.id
     assert_response :precondition_failed,
                     "shouldn't be able to upload a invalid deletion diff: #{@response.body}"
-    assert_equal "Precondition failed: Way 3 is still used by relations 1.", @response.body
+    assert_equal "Precondition failed: Way #{used_way.id} is still used by relations #{relation.id}.", @response.body
 
     # check that nothing was, in fact, deleted
-    assert_equal true, Node.find(current_nodes(:node_used_by_relationship).id).visible
-    assert_equal true, Way.find(current_ways(:used_way).id).visible
-    assert_equal true, Relation.find(current_relations(:visible_relation).id).visible
+    assert_equal true, Node.find(used_node.id).visible
+    assert_equal true, Way.find(used_way.id).visible
+    assert_equal true, Relation.find(relation.id).visible
+    assert_equal true, Relation.find(other_relation.id).visible
   end
 
   ##
   # test that a conditional delete of an in use object works.
   def test_upload_delete_if_unused
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs = changesets(:public_user_first_change)
+    changeset = create(:changeset)
+    super_relation = create(:relation)
+    used_relation = create(:relation)
+    used_way = create(:way)
+    used_node = create(:node)
+    create(:relation_member, :relation => super_relation, :member => used_relation)
+    create(:relation_member, :relation => super_relation, :member => used_way)
+    create(:relation_member, :relation => super_relation, :member => used_node)
+
+    basic_authorization changeset.user.email, "test"
 
     diff = XML::Document.new
     diff.root = XML::Node.new "osmChange"
     delete = XML::Node.new "delete"
     diff.root << delete
     delete["if-unused"] = ""
-    delete << current_relations(:public_used_relation).to_xml_node
-    delete << current_ways(:used_way).to_xml_node
-    delete << current_nodes(:node_used_by_relationship).to_xml_node
+    delete << used_relation.to_xml_node
+    delete << used_way.to_xml_node
+    delete << used_node.to_xml_node
+
+    # update the changeset to one that this user owns
+    %w[node way relation].each do |type|
+      delete.find("//osmChange/delete/#{type}").each do |n|
+        n["changeset"] = changeset.id.to_s
+      end
+    end
 
     # upload it
     content diff
-    post :upload, :id => cs.id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't do a conditional delete of in use objects: #{@response.body}"
 
@@ -672,46 +711,47 @@ EOF
     doc = XML::Parser.string(@response.body).parse
 
     # check the old IDs are all present and what we expect
-    assert_equal current_nodes(:node_used_by_relationship).id, doc.find("//diffResult/node").first["old_id"].to_i
-    assert_equal current_ways(:used_way).id, doc.find("//diffResult/way").first["old_id"].to_i
-    assert_equal current_relations(:public_used_relation).id, doc.find("//diffResult/relation").first["old_id"].to_i
+    assert_equal used_node.id, doc.find("//diffResult/node").first["old_id"].to_i
+    assert_equal used_way.id, doc.find("//diffResult/way").first["old_id"].to_i
+    assert_equal used_relation.id, doc.find("//diffResult/relation").first["old_id"].to_i
 
     # check the new IDs are all present and unchanged
-    assert_equal current_nodes(:node_used_by_relationship).id, doc.find("//diffResult/node").first["new_id"].to_i
-    assert_equal current_ways(:used_way).id, doc.find("//diffResult/way").first["new_id"].to_i
-    assert_equal current_relations(:public_used_relation).id, doc.find("//diffResult/relation").first["new_id"].to_i
+    assert_equal used_node.id, doc.find("//diffResult/node").first["new_id"].to_i
+    assert_equal used_way.id, doc.find("//diffResult/way").first["new_id"].to_i
+    assert_equal used_relation.id, doc.find("//diffResult/relation").first["new_id"].to_i
 
     # check the new versions are all present and unchanged
-    assert_equal current_nodes(:node_used_by_relationship).version, doc.find("//diffResult/node").first["new_version"].to_i
-    assert_equal current_ways(:used_way).version, doc.find("//diffResult/way").first["new_version"].to_i
-    assert_equal current_relations(:public_used_relation).version, doc.find("//diffResult/relation").first["new_version"].to_i
+    assert_equal used_node.version, doc.find("//diffResult/node").first["new_version"].to_i
+    assert_equal used_way.version, doc.find("//diffResult/way").first["new_version"].to_i
+    assert_equal used_relation.version, doc.find("//diffResult/relation").first["new_version"].to_i
 
     # check that nothing was, in fact, deleted
-    assert_equal true, Node.find(current_nodes(:node_used_by_relationship).id).visible
-    assert_equal true, Way.find(current_ways(:used_way).id).visible
-    assert_equal true, Relation.find(current_relations(:public_used_relation).id).visible
+    assert_equal true, Node.find(used_node.id).visible
+    assert_equal true, Way.find(used_way.id).visible
+    assert_equal true, Relation.find(used_relation.id).visible
   end
 
   ##
   # upload an element with a really long tag value
   def test_upload_invalid_too_long_tag
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
 
     # simple diff to create a node way and relation using placeholders
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id='-1' lon='0' lat='0' changeset='#{cs_id}'>
-   <tag k='foo' v='#{'x' * 256}'/>
-  </node>
- </create>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <create>
+        <node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
+         <tag k='foo' v='#{'x' * 256}'/>
+        </node>
      </create>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shoudln't be able to upload too long a tag to changeset: #{@response.body}"
   end
@@ -720,35 +760,41 @@ EOF
   # upload something which creates new objects and inserts them into
   # existing containers using placeholders.
   def test_upload_complex
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
+    way = create(:way)
+    node = create(:node)
+    relation = create(:relation)
+    create(:way_node, :way => way, :node => node)
+
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
 
     # simple diff to create a node way and relation using placeholders
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id='-1' lon='0' lat='0' changeset='#{cs_id}'>
-   <tag k='foo' v='bar'/>
-   <tag k='baz' v='bat'/>
-  </node>
- </create>
- <modify>
-  <way id='1' changeset='#{cs_id}' version='1'>
-   <nd ref='-1'/>
-   <nd ref='3'/>
-  </way>
-  <relation id='1' changeset='#{cs_id}' version='1'>
-   <member type='way' role='some' ref='3'/>
-   <member type='node' role='some' ref='-1'/>
-   <member type='relation' role='some' ref='3'/>
-  </relation>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <create>
+        <node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
+         <tag k='foo' v='bar'/>
+         <tag k='baz' v='bat'/>
+        </node>
      </create>
      <modify>
+        <way id='#{way.id}' changeset='#{changeset.id}' version='1'>
+         <nd ref='-1'/>
+         <nd ref='#{node.id}'/>
+        </way>
+        <relation id='#{relation.id}' changeset='#{changeset.id}' version='1'>
+         <member type='way' role='some' ref='#{way.id}'/>
+         <member type='node' role='some' ref='-1'/>
+         <member type='relation' role='some' ref='#{relation.id}'/>
+        </relation>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't upload a complex diff to changeset: #{@response.body}"
 
@@ -764,8 +810,8 @@ EOF
 
     # check that the changes made it into the database
     assert_equal 2, Node.find(new_node_id).tags.size, "new node should have two tags"
-    assert_equal [new_node_id, 3], Way.find(1).nds, "way nodes should match"
-    Relation.find(1).members.each do |type, id, _role|
+    assert_equal [new_node_id, node.id], Way.find(way.id).nds, "way nodes should match"
+    Relation.find(relation.id).members.each do |type, id, _role|
       if type == "node"
         assert_equal new_node_id, id, "relation should contain new node"
       end
@@ -776,77 +822,80 @@ EOF
   # create a diff which references several changesets, which should cause
   # a rollback and none of the diff gets committed
   def test_upload_invalid_changesets
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
+    changeset = create(:changeset)
+    other_changeset = create(:changeset, :user => changeset.user)
+    node = create(:node)
+    way = create(:way)
+    relation = create(:relation)
+    other_relation = create(:relation)
+
+    basic_authorization changeset.user.email, "test"
 
     # simple diff to create a node way and relation using placeholders
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='1' lon='0' lat='0' changeset='#{cs_id}' version='1'/>
-  <way id='1' changeset='#{cs_id}' version='1'>
-   <nd ref='3'/>
-  </way>
- </modify>
- <modify>
-  <relation id='1' changeset='#{cs_id}' version='1'>
-   <member type='way' role='some' ref='3'/>
-   <member type='node' role='some' ref='5'/>
-   <member type='relation' role='some' ref='3'/>
-  </relation>
- </modify>
- <create>
-  <node id='-1' lon='0' lat='0' changeset='4'>
-   <tag k='foo' v='bar'/>
-   <tag k='baz' v='bat'/>
-  </node>
- </create>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
+        <way id='#{way.id}' changeset='#{changeset.id}' version='1'>
+         <nd ref='#{node.id}'/>
+        </way>
      </modify>
      <modify>
+        <relation id='#{relation.id}' changeset='#{changeset.id}' version='1'>
+         <member type='way' role='some' ref='#{way.id}'/>
+         <member type='node' role='some' ref='#{node.id}'/>
+         <member type='relation' role='some' ref='#{other_relation.id}'/>
+        </relation>
      </modify>
      <create>
+        <node id='-1' lon='0' lat='0' changeset='#{other_changeset.id}'>
+         <tag k='foo' v='bar'/>
+         <tag k='baz' v='bat'/>
+        </node>
      </create>
+      </osmChange>
 EOF
-    # cache the objects before uploading them
-    node = current_nodes(:visible_node)
-    way = current_ways(:visible_way)
-    rel = current_relations(:visible_relation)
 
     # upload it
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :conflict,
-                    "uploading a diff with multiple changsets should have failed"
+                    "uploading a diff with multiple changesets should have failed"
 
     # check that objects are unmodified
-    assert_nodes_are_equal(node, Node.find(1))
-    assert_ways_are_equal(way, Way.find(1))
-    assert_relations_are_equal(rel, Relation.find(1))
+    assert_nodes_are_equal(node, Node.find(node.id))
+    assert_ways_are_equal(way, Way.find(way.id))
+    assert_relations_are_equal(relation, Relation.find(relation.id))
   end
 
   ##
   # upload multiple versions of the same element in the same diff.
   def test_upload_multiple_valid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
+    node = create(:node)
+    changeset = create(:changeset)
+    basic_authorization changeset.user.email, "test"
 
     # change the location of a node multiple times, each time referencing
     # the last version. doesn't this depend on version numbers being
     # sequential?
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='1' lon='0' lat='0' changeset='#{cs_id}' version='1'/>
-  <node id='1' lon='1' lat='0' changeset='#{cs_id}' version='2'/>
-  <node id='1' lon='1' lat='1' changeset='#{cs_id}' version='3'/>
-  <node id='1' lon='1' lat='2' changeset='#{cs_id}' version='4'/>
-  <node id='1' lon='2' lat='2' changeset='#{cs_id}' version='5'/>
-  <node id='1' lon='3' lat='2' changeset='#{cs_id}' version='6'/>
-  <node id='1' lon='3' lat='3' changeset='#{cs_id}' version='7'/>
-  <node id='1' lon='9' lat='9' changeset='#{cs_id}' version='8'/>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
+        <node id='#{node.id}' lon='1' lat='0' changeset='#{changeset.id}' version='2'/>
+        <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset.id}' version='3'/>
+        <node id='#{node.id}' lon='1' lat='2' changeset='#{changeset.id}' version='4'/>
+        <node id='#{node.id}' lon='2' lat='2' changeset='#{changeset.id}' version='5'/>
+        <node id='#{node.id}' lon='3' lat='2' changeset='#{changeset.id}' version='6'/>
+        <node id='#{node.id}' lon='3' lat='3' changeset='#{changeset.id}' version='7'/>
+        <node id='#{node.id}' lon='9' lat='9' changeset='#{changeset.id}' version='8'/>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't upload multiple versions of an element in a diff: #{@response.body}"
 
@@ -860,21 +909,23 @@ EOF
   # upload multiple versions of the same element in the same diff, but
   # keep the version numbers the same.
   def test_upload_multiple_duplicate
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='1' lon='0' lat='0' changeset='#{cs_id}' version='1'/>
-  <node id='1' lon='1' lat='1' changeset='#{cs_id}' version='1'/>
- </modify>
-</osmChange>
+    node = create(:node)
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
+        <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset.id}' version='1'/>
+       </modify>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :conflict,
                     "shouldn't be able to upload the same element twice in a diff: #{@response.body}"
   end
@@ -882,20 +933,21 @@ EOF
   ##
   # try to upload some elements without specifying the version
   def test_upload_missing_version
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <modify>
- <node id='1' lon='1' lat='1' changeset='cs_id'/>
- </modify>
-</osmChange>
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <modify>
+       <node id='1' lon='1' lat='1' changeset='#{changeset.id}'/>
+       </modify>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shouldn't be able to upload an element without version: #{@response.body}"
   end
@@ -903,18 +955,19 @@ EOF
   ##
   # try to upload with commands other than create, modify, or delete
   def test_action_upload_invalid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
-  <ping>
-   <node id='1' lon='1' lat='1' changeset='#{cs_id}' />
-  </ping>
-</osmChange>
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+        <ping>
+         <node id='1' lon='1' lat='1' changeset='#{changeset.id}' />
+        </ping>
+      </osmChange>
 EOF
     content diff
-    post :upload, :id => cs_id
+    post :upload, :id => changeset.id
     assert_response :bad_request, "Shouldn't be able to upload a diff with the action ping"
     assert_equal @response.body, "Unknown action ping, choices are create, modify, delete"
   end
@@ -923,26 +976,32 @@ EOF
   # upload a valid changeset which has a mixture of whitespace
   # to check a bug reported by ivansanchez (#1565).
   def test_upload_whitespace_valid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    changeset_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <modify><node id='1' lon='0' lat='0' changeset='#{changeset_id}'
-  version='1'></node>
-  <node id='1' lon='1' lat='1' changeset='#{changeset_id}' version='2'><tag k='k' v='v'/></node></modify>
- <modify>
- <relation id='1' changeset='#{changeset_id}' version='1'><member
-   type='way' role='some' ref='3'/><member
-    type='node' role='some' ref='5'/>
-   <member type='relation' role='some' ref='3'/>
-  </relation>
- </modify></osmChange>
+    changeset = create(:changeset)
+    node = create(:node)
+    way = create(:way_with_nodes, :nodes_count => 2)
+    relation = create(:relation)
+    other_relation = create(:relation)
+    create(:relation_tag, :relation => relation)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <modify><node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}'
+        version='1'></node>
+        <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset.id}' version='2'><tag k='k' v='v'/></node></modify>
+       <modify>
+       <relation id='#{relation.id}' changeset='#{changeset.id}' version='1'><member
+         type='way' role='some' ref='#{way.id}'/><member
+          type='node' role='some' ref='#{node.id}'/>
+         <member type='relation' role='some' ref='#{other_relation.id}'/>
+        </relation>
+       </modify></osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't upload a valid diff with whitespace variations to changeset: #{@response.body}"
 
@@ -951,36 +1010,36 @@ EOF
     assert_select "diffResult>relation", 1
 
     # check that the changes made it into the database
-    assert_equal 1, Node.find(1).tags.size, "node 1 should now have one tag"
-    assert_equal 0, Relation.find(1).tags.size, "relation 1 should now have no tags"
+    assert_equal 1, Node.find(node.id).tags.size, "node #{node.id} should now have one tag"
+    assert_equal 0, Relation.find(relation.id).tags.size, "relation #{relation.id} should now have no tags"
   end
 
   ##
-  # upload a valid changeset which has a mixture of whitespace
-  # to check a bug reported by ivansanchez.
+  # test that a placeholder can be reused within the same upload.
   def test_upload_reuse_placeholder_valid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    changeset_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id='-1' lon='0' lat='0' changeset='#{changeset_id}'>
-   <tag k="foo" v="bar"/>
-  </node>
- </create>
- <modify>
-  <node id='-1' lon='1' lat='1' changeset='#{changeset_id}' version='1'/>
- </modify>
- <delete>
-  <node id='-1' lon='2' lat='2' changeset='#{changeset_id}' version='2'/>
- </delete>
-</osmChange>
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <create>
+        <node id='-1' lon='0' lat='0' changeset='#{changeset.id}'>
+         <tag k="foo" v="bar"/>
+        </node>
+       </create>
+       <modify>
+        <node id='-1' lon='1' lat='1' changeset='#{changeset.id}' version='1'/>
+       </modify>
+       <delete>
+        <node id='-1' lon='2' lat='2' changeset='#{changeset.id}' version='2'/>
+       </delete>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "can't upload a valid diff with re-used placeholders to changeset: #{@response.body}"
 
@@ -993,22 +1052,23 @@ EOF
   # test what happens if a diff upload re-uses placeholder IDs in an
   # illegal way.
   def test_upload_placeholder_invalid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    changeset_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id='-1' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
-  <node id='-1' lon='1' lat='1' changeset='#{changeset_id}' version='1'/>
-  <node id='-1' lon='2' lat='2' changeset='#{changeset_id}' version='2'/>
- </create>
-</osmChange>
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <create>
+        <node id='-1' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
+        <node id='-1' lon='1' lat='1' changeset='#{changeset.id}' version='1'/>
+        <node id='-1' lon='2' lat='2' changeset='#{changeset.id}' version='2'/>
+       </create>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shouldn't be able to re-use placeholder IDs"
   end
@@ -1017,110 +1077,114 @@ EOF
   # test that uploading a way referencing invalid placeholders gives a
   # proper error, not a 500.
   def test_upload_placeholder_invalid_way
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    changeset_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id="-1" lon="0" lat="0" changeset="#{changeset_id}" version="1"/>
-  <node id="-2" lon="1" lat="1" changeset="#{changeset_id}" version="1"/>
-  <node id="-3" lon="2" lat="2" changeset="#{changeset_id}" version="1"/>
-  <way id="-1" changeset="#{changeset_id}" version="1">
-   <nd ref="-1"/>
-   <nd ref="-2"/>
-   <nd ref="-3"/>
-   <nd ref="-4"/>
-  </way>
- </create>
-</osmChange>
+    changeset = create(:changeset)
+    way = create(:way)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <create>
+        <node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
+        <node id="-2" lon="1" lat="1" changeset="#{changeset.id}" version="1"/>
+        <node id="-3" lon="2" lat="2" changeset="#{changeset.id}" version="1"/>
+        <way id="-1" changeset="#{changeset.id}" version="1">
+         <nd ref="-1"/>
+         <nd ref="-2"/>
+         <nd ref="-3"/>
+         <nd ref="-4"/>
+        </way>
+       </create>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shouldn't be able to use invalid placeholder IDs"
     assert_equal "Placeholder node not found for reference -4 in way -1", @response.body
 
     # the same again, but this time use an existing way
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id="-1" lon="0" lat="0" changeset="#{changeset_id}" version="1"/>
-  <node id="-2" lon="1" lat="1" changeset="#{changeset_id}" version="1"/>
-  <node id="-3" lon="2" lat="2" changeset="#{changeset_id}" version="1"/>
-  <way id="1" changeset="#{changeset_id}" version="1">
-   <nd ref="-1"/>
-   <nd ref="-2"/>
-   <nd ref="-3"/>
-   <nd ref="-4"/>
-  </way>
- </create>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <create>
+        <node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
+        <node id="-2" lon="1" lat="1" changeset="#{changeset.id}" version="1"/>
+        <node id="-3" lon="2" lat="2" changeset="#{changeset.id}" version="1"/>
+        <way id="#{way.id}" changeset="#{changeset.id}" version="1">
+         <nd ref="-1"/>
+         <nd ref="-2"/>
+         <nd ref="-3"/>
+         <nd ref="-4"/>
+        </way>
      </create>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shouldn't be able to use invalid placeholder IDs"
-    assert_equal "Placeholder node not found for reference -4 in way 1", @response.body
+    assert_equal "Placeholder node not found for reference -4 in way #{way.id}", @response.body
   end
 
   ##
   # test that uploading a relation referencing invalid placeholders gives a
   # proper error, not a 500.
   def test_upload_placeholder_invalid_relation
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    changeset_id = changesets(:public_user_first_change).id
-
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id="-1" lon="0" lat="0" changeset="#{changeset_id}" version="1"/>
-  <node id="-2" lon="1" lat="1" changeset="#{changeset_id}" version="1"/>
-  <node id="-3" lon="2" lat="2" changeset="#{changeset_id}" version="1"/>
-  <relation id="-1" changeset="#{changeset_id}" version="1">
-   <member type="node" role="foo" ref="-1"/>
-   <member type="node" role="foo" ref="-2"/>
-   <member type="node" role="foo" ref="-3"/>
-   <member type="node" role="foo" ref="-4"/>
-  </relation>
- </create>
-</osmChange>
+    changeset = create(:changeset)
+    relation = create(:relation)
+
+    basic_authorization changeset.user.email, "test"
+
+    diff = <<EOF.strip_heredoc
+      <osmChange>
+       <create>
+        <node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
+        <node id="-2" lon="1" lat="1" changeset="#{changeset.id}" version="1"/>
+        <node id="-3" lon="2" lat="2" changeset="#{changeset.id}" version="1"/>
+        <relation id="-1" changeset="#{changeset.id}" version="1">
+         <member type="node" role="foo" ref="-1"/>
+         <member type="node" role="foo" ref="-2"/>
+         <member type="node" role="foo" ref="-3"/>
+         <member type="node" role="foo" ref="-4"/>
+        </relation>
+       </create>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shouldn't be able to use invalid placeholder IDs"
     assert_equal "Placeholder Node not found for reference -4 in relation -1.", @response.body
 
-    # the same again, but this time use an existing way
-    diff = <<EOF
-<osmChange>
- <create>
-  <node id="-1" lon="0" lat="0" changeset="#{changeset_id}" version="1"/>
-  <node id="-2" lon="1" lat="1" changeset="#{changeset_id}" version="1"/>
-  <node id="-3" lon="2" lat="2" changeset="#{changeset_id}" version="1"/>
-  <relation id="1" changeset="#{changeset_id}" version="1">
-   <member type="node" role="foo" ref="-1"/>
-   <member type="node" role="foo" ref="-2"/>
-   <member type="node" role="foo" ref="-3"/>
-   <member type="way" role="bar" ref="-1"/>
-  </relation>
- </create>
-</osmChange>
+    # the same again, but this time use an existing relation
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <create>
+        <node id="-1" lon="0" lat="0" changeset="#{changeset.id}" version="1"/>
+        <node id="-2" lon="1" lat="1" changeset="#{changeset.id}" version="1"/>
+        <node id="-3" lon="2" lat="2" changeset="#{changeset.id}" version="1"/>
+        <relation id="#{relation.id}" changeset="#{changeset.id}" version="1">
+         <member type="node" role="foo" ref="-1"/>
+         <member type="node" role="foo" ref="-2"/>
+         <member type="node" role="foo" ref="-3"/>
+         <member type="way" role="bar" ref="-1"/>
+        </relation>
      </create>
+      </osmChange>
 EOF
 
     # upload it
     content diff
-    post :upload, :id => changeset_id
+    post :upload, :id => changeset.id
     assert_response :bad_request,
                     "shouldn't be able to use invalid placeholder IDs"
-    assert_equal "Placeholder Way not found for reference -1 in relation 1.", @response.body
+    assert_equal "Placeholder Way not found for reference -1 in relation #{relation.id}.", @response.body
   end
 
   ##
@@ -1136,7 +1200,7 @@ EOF
     assert_response :success
     changeset_id = @response.body.to_i
 
-    old_node = current_nodes(:visible_node)
+    old_node = create(:node, :lat => 1, :lon => 1)
 
     diff = XML::Document.new
     diff.root = XML::Node.new "osmChange"
@@ -1174,14 +1238,15 @@ EOF
     assert_response :success
     changeset_id = @response.body.to_i
 
-    old_way = current_ways(:visible_way)
+    old_way = create(:way)
+    create(:way_node, :way => old_way, :node => create(:node, :lat => 1, :lon => 1))
 
     diff = XML::Document.new
     diff.root = XML::Node.new "osmChange"
     modify = XML::Node.new "modify"
     xml_old_way = old_way.to_xml_node
     nd_ref = XML::Node.new "nd"
-    nd_ref["ref"] = current_nodes(:visible_node).id.to_s
+    nd_ref["ref"] = create(:node, :lat => 3, :lon => 3).id.to_s
     xml_old_way << nd_ref
     xml_old_way["changeset"] = changeset_id.to_s
     modify << xml_old_way
@@ -1204,7 +1269,9 @@ EOF
   ##
   # test for more issues in #1568
   def test_upload_empty_invalid
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
+    changeset = create(:changeset)
+
+    basic_authorization changeset.user.email, "test"
 
     ["<osmChange/>",
      "<osmChange></osmChange>",
@@ -1212,7 +1279,7 @@ EOF
      "<osmChange><modify></modify></osmChange>"].each do |diff|
       # upload it
       content diff
-      post :upload, :id => changesets(:public_user_first_change).id
+      post :upload, :id => changeset.id
       assert_response(:success, "should be able to upload " +
                       "empty changeset: " + diff)
     end
@@ -1221,20 +1288,23 @@ EOF
   ##
   # test that the X-Error-Format header works to request XML errors
   def test_upload_xml_errors
-    basic_authorization changesets(:public_user_first_change).user.email, "test"
-    cs = changesets(:public_user_first_change)
+    changeset = create(:changeset)
+    node = create(:node)
+    create(:relation_member, :member => node)
+
+    basic_authorization changeset.user.email, "test"
 
     # try and delete a node that is in use
     diff = XML::Document.new
     diff.root = XML::Node.new "osmChange"
     delete = XML::Node.new "delete"
     diff.root << delete
-    delete << current_nodes(:node_used_by_relationship).to_xml_node
+    delete << node.to_xml_node
 
     # upload it
     content diff
     error_format "xml"
-    post :upload, :id => cs.id
+    post :upload, :id => changeset.id
     assert_response :success,
                     "failed to return error in XML format"
 
@@ -1248,6 +1318,8 @@ EOF
   # when we make some simple changes we get the same changes back from the
   # diff download.
   def test_diff_download_simple
+    node = create(:node)
+
     ## First try with a non-public user, which should get a forbidden
     basic_authorization(create(:user, :data_public => false).email, "test")
 
@@ -1270,19 +1342,19 @@ EOF
     changeset_id = @response.body.to_i
 
     # add a diff to it
-    diff = <<EOF
-<osmChange>
- <modify>
-  <node id='1' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
-  <node id='1' lon='1' lat='0' changeset='#{changeset_id}' version='2'/>
-  <node id='1' lon='1' lat='1' changeset='#{changeset_id}' version='3'/>
-  <node id='1' lon='1' lat='2' changeset='#{changeset_id}' version='4'/>
-  <node id='1' lon='2' lat='2' changeset='#{changeset_id}' version='5'/>
-  <node id='1' lon='3' lat='2' changeset='#{changeset_id}' version='6'/>
-  <node id='1' lon='3' lat='3' changeset='#{changeset_id}' version='7'/>
-  <node id='1' lon='9' lat='9' changeset='#{changeset_id}' version='8'/>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <modify>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
+        <node id='#{node.id}' lon='1' lat='0' changeset='#{changeset_id}' version='2'/>
+        <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset_id}' version='3'/>
+        <node id='#{node.id}' lon='1' lat='2' changeset='#{changeset_id}' version='4'/>
+        <node id='#{node.id}' lon='2' lat='2' changeset='#{changeset_id}' version='5'/>
+        <node id='#{node.id}' lon='3' lat='2' changeset='#{changeset_id}' version='6'/>
+        <node id='#{node.id}' lon='3' lat='3' changeset='#{changeset_id}' version='7'/>
+        <node id='#{node.id}' lon='9' lat='9' changeset='#{changeset_id}' version='8'/>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
@@ -1315,33 +1387,33 @@ EOF
     assert_response :success
     changeset_id = @response.body.to_i
 
-    diff = <<OSMFILE
-<osmChange version="0.6" generator="JOSM">
-<create version="0.6" generator="JOSM">
-  <node id='-1' visible='true' changeset='#{changeset_id}' lat='51.49619982187321' lon='-0.18722061869438314' />
-  <node id='-2' visible='true' changeset='#{changeset_id}' lat='51.496359883909605' lon='-0.18653093576241928' />
-  <node id='-3' visible='true' changeset='#{changeset_id}' lat='51.49598132358285' lon='-0.18719613290981638' />
-  <node id='-4' visible='true' changeset='#{changeset_id}' lat='51.4961591711078' lon='-0.18629015888084607' />
-  <node id='-5' visible='true' changeset='#{changeset_id}' lat='51.49582126021711' lon='-0.18708186591517145' />
-  <node id='-6' visible='true' changeset='#{changeset_id}' lat='51.49591018437858' lon='-0.1861432441734455' />
-  <node id='-7' visible='true' changeset='#{changeset_id}' lat='51.49560784152179' lon='-0.18694719410005425' />
-  <node id='-8' visible='true' changeset='#{changeset_id}' lat='51.49567389979617' lon='-0.1860289771788006' />
-  <node id='-9' visible='true' changeset='#{changeset_id}' lat='51.49543761398892' lon='-0.186820684213126' />
-  <way id='-10' action='modiy' visible='true' changeset='#{changeset_id}'>
-    <nd ref='-1' />
-    <nd ref='-2' />
-    <nd ref='-3' />
-    <nd ref='-4' />
-    <nd ref='-5' />
-    <nd ref='-6' />
-    <nd ref='-7' />
-    <nd ref='-8' />
-    <nd ref='-9' />
-    <tag k='highway' v='residential' />
-    <tag k='name' v='Foobar Street' />
-  </way>
-</create>
-</osmChange>
+    diff = <<OSMFILE.strip_heredoc
+      <osmChange version="0.6" generator="JOSM">
+      <create version="0.6" generator="JOSM">
+        <node id='-1' visible='true' changeset='#{changeset_id}' lat='51.49619982187321' lon='-0.18722061869438314' />
+        <node id='-2' visible='true' changeset='#{changeset_id}' lat='51.496359883909605' lon='-0.18653093576241928' />
+        <node id='-3' visible='true' changeset='#{changeset_id}' lat='51.49598132358285' lon='-0.18719613290981638' />
+        <node id='-4' visible='true' changeset='#{changeset_id}' lat='51.4961591711078' lon='-0.18629015888084607' />
+        <node id='-5' visible='true' changeset='#{changeset_id}' lat='51.49582126021711' lon='-0.18708186591517145' />
+        <node id='-6' visible='true' changeset='#{changeset_id}' lat='51.49591018437858' lon='-0.1861432441734455' />
+        <node id='-7' visible='true' changeset='#{changeset_id}' lat='51.49560784152179' lon='-0.18694719410005425' />
+        <node id='-8' visible='true' changeset='#{changeset_id}' lat='51.49567389979617' lon='-0.1860289771788006' />
+        <node id='-9' visible='true' changeset='#{changeset_id}' lat='51.49543761398892' lon='-0.186820684213126' />
+        <way id='-10' action='modiy' visible='true' changeset='#{changeset_id}'>
+          <nd ref='-1' />
+          <nd ref='-2' />
+          <nd ref='-3' />
+          <nd ref='-4' />
+          <nd ref='-5' />
+          <nd ref='-6' />
+          <nd ref='-7' />
+          <nd ref='-8' />
+          <nd ref='-9' />
+          <tag k='highway' v='residential' />
+          <tag k='name' v='Foobar Street' />
+        </way>
+      </create>
+      </osmChange>
 OSMFILE
 
     # upload it
@@ -1364,6 +1436,9 @@ OSMFILE
   # when we make some complex changes we get the same changes back from the
   # diff download.
   def test_diff_download_complex
+    node = create(:node)
+    node2 = create(:node)
+    way = create(:way)
     basic_authorization(create(:user).email, "test")
 
     # create a temporary changeset
@@ -1375,26 +1450,26 @@ OSMFILE
     changeset_id = @response.body.to_i
 
     # add a diff to it
-    diff = <<EOF
-<osmChange>
- <delete>
-  <node id='1' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
- </delete>
- <create>
-  <node id='-1' lon='9' lat='9' changeset='#{changeset_id}' version='0'/>
-  <node id='-2' lon='8' lat='9' changeset='#{changeset_id}' version='0'/>
-  <node id='-3' lon='7' lat='9' changeset='#{changeset_id}' version='0'/>
- </create>
- <modify>
-  <node id='3' lon='20' lat='15' changeset='#{changeset_id}' version='1'/>
-  <way id='1' changeset='#{changeset_id}' version='1'>
-   <nd ref='3'/>
-   <nd ref='-1'/>
-   <nd ref='-2'/>
-   <nd ref='-3'/>
-  </way>
- </modify>
-</osmChange>
+    diff = <<EOF.strip_heredoc
+      <osmChange>
      <delete>
+        <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
      </delete>
      <create>
+        <node id='-1' lon='9' lat='9' changeset='#{changeset_id}' version='0'/>
+        <node id='-2' lon='8' lat='9' changeset='#{changeset_id}' version='0'/>
+        <node id='-3' lon='7' lat='9' changeset='#{changeset_id}' version='0'/>
      </create>
      <modify>
+        <node id='#{node2.id}' lon='20' lat='15' changeset='#{changeset_id}' version='1'/>
+        <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
+         <nd ref='#{node2.id}'/>
+         <nd ref='-1'/>
+         <nd ref='-2'/>
+         <nd ref='-3'/>
+        </way>
      </modify>
+      </osmChange>
 EOF
 
     # upload it
@@ -1417,9 +1492,15 @@ EOF
   end
 
   def test_changeset_download
-    tag = create(:old_node_tag, :old_node => nodes(:used_node_2))
+    changeset = create(:changeset)
+    node = create(:node, :with_history, :version => 1, :changeset => changeset)
+    tag = create(:old_node_tag, :old_node => node.old_nodes.find_by(:version => 1))
+    node2 = create(:node, :with_history, :version => 1, :changeset => changeset)
+    _node3 = create(:node, :with_history, :deleted, :version => 1, :changeset => changeset)
+    _relation = create(:relation, :with_history, :version => 1, :changeset => changeset)
+    _relation2 = create(:relation, :with_history, :deleted, :version => 1, :changeset => changeset)
 
-    get :download, :id => changesets(:normal_user_first_change).id
+    get :download, :id => changeset.id
 
     assert_response :success
     assert_template nil
@@ -1427,10 +1508,10 @@ EOF
     # FIXME: needs more assert_select tests
     assert_select "osmChange[version='#{API_VERSION}'][generator='#{GENERATOR}']" do
       assert_select "create", :count => 5
-      assert_select "create>node[id='#{nodes(:used_node_2).node_id}'][visible='#{nodes(:used_node_2).visible?}'][version='#{nodes(:used_node_2).version}']" do
+      assert_select "create>node[id='#{node.id}'][visible='#{node.visible?}'][version='#{node.version}']" do
         assert_select "tag[k='#{tag.k}'][v='#{tag.v}']"
       end
-      assert_select "create>node[id='#{nodes(:visible_node).node_id}']"
+      assert_select "create>node[id='#{node2.id}']"
     end
   end
 
@@ -1438,6 +1519,9 @@ EOF
   # check that the bounding box of a changeset gets updated correctly
   # FIXME: This should really be moded to a integration test due to the with_controller
   def test_changeset_bbox
+    way = create(:way)
+    create(:way_node, :way => way, :node => create(:node, :lat => 3, :lon => 3))
+
     basic_authorization create(:user).email, "test"
 
     # create a new changeset
@@ -1478,9 +1562,8 @@ EOF
 
     # add (delete) a way to it, which contains a point at (3,3)
     with_controller(WayController.new) do
-      content update_changeset(current_ways(:visible_way).to_xml,
-                               changeset_id)
-      put :delete, :id => current_ways(:visible_way).id
+      content update_changeset(way.to_xml, changeset_id)
+      put :delete, :id => way.id
       assert_response :success, "Couldn't delete a way."
     end
 
@@ -1555,14 +1638,16 @@ EOF
     user = create(:user)
     changeset = create(:changeset, :user => user)
     closed_changeset = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
+    changeset2 = create(:changeset, :min_lat => 5 * GeoRecord::SCALE, :min_lon => 5 * GeoRecord::SCALE, :max_lat => 15 * GeoRecord::SCALE, :max_lon => 15 * GeoRecord::SCALE)
+    changeset3 = create(:changeset, :min_lat => 4.5 * GeoRecord::SCALE, :min_lon => 4.5 * GeoRecord::SCALE, :max_lat => 5 * GeoRecord::SCALE, :max_lon => 5 * GeoRecord::SCALE)
 
     get :query, :bbox => "-10,-10, 10, 10"
     assert_response :success, "can't get changesets in bbox"
-    assert_changesets [1, 4, 6]
+    assert_changesets [changeset2, changeset3]
 
     get :query, :bbox => "4.5,4.5,4.6,4.6"
     assert_response :success, "can't get changesets in bbox"
-    assert_changesets [1]
+    assert_changesets [changeset3]
 
     # not found when looking for changesets of non-existing users
     get :query, :user => User.maximum(:id) + 1
@@ -1580,11 +1665,11 @@ EOF
     basic_authorization private_user.email, "test"
     get :query, :user => private_user.id
     assert_response :success, "can't get changesets by user ID"
-    assert_changesets [private_user_changeset.id, private_user_closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset]
 
     get :query, :display_name => private_user.display_name
     assert_response :success, "can't get changesets by user name"
-    assert_changesets [private_user_changeset.id, private_user_closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset]
 
     # check that the correct error is given when we provide both UID and name
     get :query, :user => private_user.id, :display_name => private_user.display_name
@@ -1592,39 +1677,39 @@ EOF
 
     get :query, :user => private_user.id, :open => true
     assert_response :success, "can't get changesets by user and open"
-    assert_changesets [private_user_changeset.id]
+    assert_changesets [private_user_changeset]
 
     get :query, :time => "2007-12-31"
     assert_response :success, "can't get changesets by time-since"
-    assert_changesets [1, 2, 4, 5, 6, private_user_changeset.id, private_user_closed_changeset.id, changeset.id, closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3]
 
     get :query, :time => "2008-01-01T12:34Z"
     assert_response :success, "can't get changesets by time-since with hour"
-    assert_changesets [1, 2, 4, 5, 6, private_user_changeset.id, private_user_closed_changeset.id, changeset.id, closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3]
 
     get :query, :time => "2007-12-31T23:59Z,2008-01-02T00:01Z"
     assert_response :success, "can't get changesets by time-range"
-    assert_changesets [1, 5, 6, closed_changeset.id]
+    assert_changesets [closed_changeset]
 
     get :query, :open => "true"
     assert_response :success, "can't get changesets by open-ness"
-    assert_changesets [1, 2, 4, private_user_changeset.id, changeset.id]
+    assert_changesets [private_user_changeset, changeset, changeset2, changeset3]
 
     get :query, :closed => "true"
     assert_response :success, "can't get changesets by closed-ness"
-    assert_changesets [3, 5, 6, 7, 8, 9, private_user_closed_changeset.id, closed_changeset.id]
+    assert_changesets [private_user_closed_changeset, closed_changeset]
 
     get :query, :closed => "true", :user => private_user.id
     assert_response :success, "can't get changesets by closed-ness and user"
-    assert_changesets [private_user_closed_changeset.id]
+    assert_changesets [private_user_closed_changeset]
 
     get :query, :closed => "true", :user => user.id
     assert_response :success, "can't get changesets by closed-ness and user"
-    assert_changesets [closed_changeset.id]
+    assert_changesets [closed_changeset]
 
     get :query, :changesets => "#{private_user_changeset.id},#{changeset.id},#{closed_changeset.id}"
     assert_response :success, "can't get changesets by id (as comma-separated string)"
-    assert_changesets [private_user_changeset.id, changeset.id, closed_changeset.id]
+    assert_changesets [private_user_changeset, changeset, closed_changeset]
 
     get :query, :changesets => ""
     assert_response :bad_request, "should be a bad request since changesets is empty"
@@ -1662,9 +1747,13 @@ EOF
   ##
   # check updating tags on a changeset
   def test_changeset_update
+    private_user = create(:user, :data_public => false)
+    private_changeset = create(:changeset, :user => private_user)
+    user = create(:user)
+    changeset = create(:changeset, :user => user)
+
     ## First try with a non-public user
-    changeset = changesets(:normal_user_first_change)
-    new_changeset = changeset.to_xml
+    new_changeset = private_changeset.to_xml
     new_tag = XML::Node.new "tag"
     new_tag["k"] = "tagtesting"
     new_tag["v"] = "valuetesting"
@@ -1672,21 +1761,20 @@ EOF
     content new_changeset
 
     # try without any authorization
-    put :update, :id => changeset.id
+    put :update, :id => private_changeset.id
     assert_response :unauthorized
 
     # try with the wrong authorization
     basic_authorization create(:user).email, "test"
-    put :update, :id => changeset.id
+    put :update, :id => private_changeset.id
     assert_response :conflict
 
     # now this should get an unauthorized
-    basic_authorization changeset.user.email, "test"
-    put :update, :id => changeset.id
+    basic_authorization private_user.email, "test"
+    put :update, :id => private_changeset.id
     assert_require_public_data "user with their data non-public, shouldn't be able to edit their changeset"
 
     ## Now try with the public user
-    changeset = changesets(:public_user_first_change)
     create(:changeset_tag, :changeset => changeset)
     new_changeset = changeset.to_xml
     new_tag = XML::Node.new "tag"
@@ -1706,7 +1794,7 @@ EOF
     assert_response :conflict
 
     # now this should work...
-    basic_authorization changeset.user.email, "test"
+    basic_authorization user.email, "test"
     put :update, :id => changeset.id
     assert_response :success
 
@@ -1721,7 +1809,7 @@ EOF
   def test_changeset_update_invalid
     basic_authorization create(:user).email, "test"
 
-    changeset = changesets(:normal_user_first_change)
+    changeset = create(:changeset)
     new_changeset = changeset.to_xml
     new_tag = XML::Node.new "tag"
     new_tag["k"] = "testing"
@@ -1956,39 +2044,49 @@ EOF
   end
 
   ##
-  # This should display the last 20 changesets closed
+  # This should display the last 20 non-empty changesets
   def test_feed
+    changeset = create(:changeset, :num_changes => 1)
+    closed_changeset = create(:changeset, :closed, :num_changes => 1)
+    _empty_changeset = create(:changeset, :num_changes => 0)
+
     get :feed, :format => :atom
     assert_response :success
     assert_template "list"
     assert_equal "application/atom+xml", response.content_type
 
-    check_feed_result(Changeset.all)
+    check_feed_result([changeset, closed_changeset])
   end
 
   ##
   # This should display the last 20 changesets closed in a specific area
   def test_feed_bbox
+    changeset = create(:changeset, :num_changes => 1, :min_lat => 5 * GeoRecord::SCALE, :min_lon => 5 * GeoRecord::SCALE, :max_lat => 5 * GeoRecord::SCALE, :max_lon => 5 * GeoRecord::SCALE)
+    closed_changeset = create(:changeset, :closed, :num_changes => 1, :min_lat => 5 * GeoRecord::SCALE, :min_lon => 5 * GeoRecord::SCALE, :max_lat => 5 * GeoRecord::SCALE, :max_lon => 5 * GeoRecord::SCALE)
+    _elsewhere_changeset = create(:changeset, :num_changes => 1, :min_lat => -5 * GeoRecord::SCALE, :min_lon => -5 * GeoRecord::SCALE, :max_lat => -5 * GeoRecord::SCALE, :max_lon => -5 * GeoRecord::SCALE)
+    _empty_changeset = create(:changeset, :num_changes => 0, :min_lat => -5 * GeoRecord::SCALE, :min_lon => -5 * GeoRecord::SCALE, :max_lat => -5 * GeoRecord::SCALE, :max_lon => -5 * GeoRecord::SCALE)
+
     get :feed, :format => :atom, :bbox => "4.5,4.5,5.5,5.5"
     assert_response :success
     assert_template "list"
     assert_equal "application/atom+xml", response.content_type
 
-    check_feed_result(Changeset.where("min_lon < 55000000 and max_lon > 45000000 and min_lat < 55000000 and max_lat > 45000000"))
+    check_feed_result([changeset, closed_changeset])
   end
 
   ##
   # Checks the display of the user changesets feed
   def test_feed_user
     user = create(:user)
-    create_list(:changeset, 3, :user => user, :num_changes => 4)
+    changesets = create_list(:changeset, 3, :user => user, :num_changes => 4)
+    _other_changeset = create(:changeset)
 
     get :feed, :format => :atom, :display_name => user.display_name
     assert_response :success
     assert_template "list"
     assert_equal "application/atom+xml", response.content_type
 
-    check_feed_result(user.changesets)
+    check_feed_result(changesets)
   end
 
   ##
@@ -2010,16 +2108,19 @@ EOF
   # check that the changeset download for a changeset with a redacted
   # element in it doesn't contain that element.
   def test_diff_download_redacted
-    changeset_id = changesets(:public_user_first_change).id
+    changeset = create(:changeset)
+    node = create(:node, :with_history, :version => 2, :changeset => changeset)
+    node_v1 = node.old_nodes.find_by(:version => 1)
+    node_v1.redact!(create(:redaction))
 
-    get :download, :id => changeset_id
+    get :download, :id => changeset.id
     assert_response :success
 
     assert_select "osmChange", 1
-    # this changeset contains node 17 in versions 1 & 2, but 1 should
+    # this changeset contains the node in versions 1 & 2, but 1 should
     # be hidden.
-    assert_select "osmChange node[id='17']", 1
-    assert_select "osmChange node[id='17'][version='1']", 0
+    assert_select "osmChange node[id='#{node.id}']", 1
+    assert_select "osmChange node[id='#{node.id}'][version='1']", 0
   end
 
   ##
@@ -2087,7 +2188,7 @@ EOF
   # create comment fail
   def test_create_comment_fail
     # unauthorized
-    post :comment, :id => changesets(:normal_user_closed_change).id, :text => "This is a comment"
+    post :comment, :id => create(:changeset, :closed).id, :text => "This is a comment"
     assert_response :unauthorized
 
     basic_authorization(create(:user).email, "test")
@@ -2100,19 +2201,19 @@ EOF
 
     # not closed changeset
     assert_no_difference "ChangesetComment.count" do
-      post :comment, :id => changesets(:normal_user_first_change).id, :text => "This is a comment"
+      post :comment, :id => create(:changeset).id, :text => "This is a comment"
     end
     assert_response :conflict
 
     # no text
     assert_no_difference "ChangesetComment.count" do
-      post :comment, :id => changesets(:normal_user_closed_change).id
+      post :comment, :id => create(:changeset, :closed).id
     end
     assert_response :bad_request
 
     # empty text
     assert_no_difference "ChangesetComment.count" do
-      post :comment, :id => changesets(:normal_user_closed_change).id, :text => ""
+      post :comment, :id => create(:changeset, :closed).id, :text => ""
     end
     assert_response :bad_request
   end
@@ -2121,7 +2222,7 @@ EOF
   # test subscribe success
   def test_subscribe_success
     basic_authorization(create(:user).email, "test")
-    changeset = changesets(:normal_user_closed_change)
+    changeset = create(:changeset, :closed)
 
     assert_difference "changeset.subscribers.count", 1 do
       post :subscribe, :id => changeset.id
@@ -2135,7 +2236,7 @@ EOF
     user = create(:user)
 
     # unauthorized
-    changeset = changesets(:normal_user_closed_change)
+    changeset = create(:changeset, :closed)
     assert_no_difference "changeset.subscribers.count" do
       post :subscribe, :id => changeset.id
     end
@@ -2150,14 +2251,14 @@ EOF
     assert_response :not_found
 
     # not closed changeset
-    changeset = changesets(:normal_user_first_change)
+    changeset = create(:changeset)
     assert_no_difference "changeset.subscribers.count" do
       post :subscribe, :id => changeset.id
     end
     assert_response :conflict
 
     # trying to subscribe when already subscribed
-    changeset = changesets(:normal_user_subscribed_change)
+    changeset = create(:changeset, :closed)
     changeset.subscribers.push(user)
     assert_no_difference "changeset.subscribers.count" do
       post :subscribe, :id => changeset.id
@@ -2170,7 +2271,7 @@ EOF
   def test_unsubscribe_success
     user = create(:user)
     basic_authorization(user.email, "test")
-    changeset = changesets(:normal_user_subscribed_change)
+    changeset = create(:changeset, :closed)
     changeset.subscribers.push(user)
 
     assert_difference "changeset.subscribers.count", -1 do
@@ -2183,7 +2284,7 @@ EOF
   # test unsubscribe fail
   def test_unsubscribe_fail
     # unauthorized
-    changeset = changesets(:normal_user_closed_change)
+    changeset = create(:changeset, :closed)
     assert_no_difference "changeset.subscribers.count" do
       post :unsubscribe, :id => changeset.id
     end
@@ -2198,14 +2299,14 @@ EOF
     assert_response :not_found
 
     # not closed changeset
-    changeset = changesets(:normal_user_first_change)
+    changeset = create(:changeset)
     assert_no_difference "changeset.subscribers.count" do
       post :unsubscribe, :id => changeset.id
     end
     assert_response :conflict
 
     # trying to unsubscribe when not subscribed
-    changeset = changesets(:normal_user_closed_change)
+    changeset = create(:changeset, :closed)
     assert_no_difference "changeset.subscribers.count" do
       post :unsubscribe, :id => changeset.id
     end
@@ -2293,7 +2394,8 @@ EOF
   ##
   # test comments feed
   def test_comments_feed
-    create_list(:changeset_comment, 3, :changeset_id => changesets(:normal_user_closed_change).id)
+    changeset = create(:changeset, :closed)
+    create_list(:changeset_comment, 3, :changeset => changeset)
 
     get :comments_feed, :format => "rss"
     assert_response :success
@@ -2313,7 +2415,7 @@ EOF
       end
     end
 
-    get :comments_feed, :id => changesets(:normal_user_closed_change), :format => "rss"
+    get :comments_feed, :id => changeset.id, :format => "rss"
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
     assert_select "rss", :count => 1 do
@@ -2338,10 +2440,10 @@ EOF
   ##
   # boilerplate for checking that certain changesets exist in the
   # output.
-  def assert_changesets(ids)
-    assert_select "osm>changeset", ids.size
-    ids.each do |id|
-      assert_select "osm>changeset[id='#{id}']", 1
+  def assert_changesets(changesets)
+    assert_select "osm>changeset", changesets.size
+    changesets.each do |changeset|
+      assert_select "osm>changeset[id='#{changeset.id}']", 1
     end
   end
 
@@ -2398,9 +2500,6 @@ EOF
   ##
   # check the result of a feed
   def check_feed_result(changesets)
-    changesets = changesets.where("num_changes > 0")
-                           .order(:created_at => :desc)
-                           .limit(20)
     assert changesets.size <= 20
 
     assert_select "feed", :count => [changesets.size, 1].min do
index 57d5a10f179b1d01f3e6ce36b5f614a2521b89c5..c64efa4e5177019301f93c4af02b2670f574f95a 100644 (file)
@@ -253,7 +253,7 @@ class GeocoderControllerTest < ActionController::TestCase
     ].each do |code|
       post :search, :query => code
       assert_response :success
-      assert_equal %w(us_postcode osm_nominatim), assigns(:sources)
+      assert_equal %w[us_postcode osm_nominatim], assigns(:sources)
     end
   end
 
@@ -269,20 +269,20 @@ class GeocoderControllerTest < ActionController::TestCase
       "CR2 6XH",
       "DN55 1PT"
     ].each do |code|
-      search_check code, %w(uk_postcode osm_nominatim)
+      search_check code, %w[uk_postcode osm_nominatim]
     end
   end
 
   ##
   # Test identification of Canadian postcodes
   def test_identify_ca_postcode
-    search_check "A1B 2C3", %w(ca_postcode osm_nominatim)
+    search_check "A1B 2C3", %w[ca_postcode osm_nominatim]
   end
 
   ##
   # Test identification fall through to the default case
   def test_identify_default
-    search_check "foo bar baz", %w(osm_nominatim geonames)
+    search_check "foo bar baz", %w[osm_nominatim geonames]
   end
 
   ##
@@ -467,7 +467,7 @@ class GeocoderControllerTest < ActionController::TestCase
     assert_response :success
     assert_template :search
     assert_template :layout => "map"
-    assert_equal %w(latlon osm_nominatim_reverse geonames_reverse), assigns(:sources)
+    assert_equal %w[latlon osm_nominatim_reverse geonames_reverse], assigns(:sources)
     assert_nil @controller.params[:query]
     assert_in_delta lat, @controller.params[:lat]
     assert_in_delta lon, @controller.params[:lon]
@@ -476,7 +476,7 @@ class GeocoderControllerTest < ActionController::TestCase
     assert_response :success
     assert_template :search
     assert_template :layout => "xhr"
-    assert_equal %w(latlon osm_nominatim_reverse geonames_reverse), assigns(:sources)
+    assert_equal %w[latlon osm_nominatim_reverse geonames_reverse], assigns(:sources)
     assert_nil @controller.params[:query]
     assert_in_delta lat, @controller.params[:lat]
     assert_in_delta lon, @controller.params[:lon]
index 75e5f8e9670cc4efd30b0fc2a6e024a64b4806ed..ce1e26fb0135ec26b9a74622cc881802d4a5ec11 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class NodeControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -430,6 +428,12 @@ class NodeControllerTest < ActionController::TestCase
   ##
   # test fetching multiple nodes
   def test_nodes
+    node1 = create(:node)
+    node2 = create(:node, :deleted)
+    node3 = create(:node)
+    node4 = create(:node, :with_history, :version => 2)
+    node5 = create(:node, :deleted, :with_history, :version => 2)
+
     # check error when no parameter provided
     get :nodes
     assert_response :bad_request
@@ -439,19 +443,19 @@ class NodeControllerTest < ActionController::TestCase
     assert_response :bad_request
 
     # test a working call
-    get :nodes, :nodes => "1,2,4,15,17"
+    get :nodes, :nodes => "#{node1.id},#{node2.id},#{node3.id},#{node4.id},#{node5.id}"
     assert_response :success
     assert_select "osm" do
       assert_select "node", :count => 5
-      assert_select "node[id='1'][visible='true']", :count => 1
-      assert_select "node[id='2'][visible='false']", :count => 1
-      assert_select "node[id='4'][visible='true']", :count => 1
-      assert_select "node[id='15'][visible='true']", :count => 1
-      assert_select "node[id='17'][visible='false']", :count => 1
+      assert_select "node[id='#{node1.id}'][visible='true']", :count => 1
+      assert_select "node[id='#{node2.id}'][visible='false']", :count => 1
+      assert_select "node[id='#{node3.id}'][visible='true']", :count => 1
+      assert_select "node[id='#{node4.id}'][visible='true']", :count => 1
+      assert_select "node[id='#{node5.id}'][visible='false']", :count => 1
     end
 
     # check error when a non-existent node is included
-    get :nodes, :nodes => "1,2,4,15,17,400"
+    get :nodes, :nodes => "#{node1.id},#{node2.id},#{node3.id},#{node4.id},#{node5.id},400"
     assert_response :not_found
   end
 
index 0fcc46310808b261bac2330373f2ea94818d2a14..e6276cc059c44892181ae9143aece2d818e8bd54 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "old_node_controller"
 
 class OldNodeControllerTest < ActionController::TestCase
-  api_fixtures
-
   #
   # TODO: test history
   #
index f15acf8492807fe8ef407ed6b75ad8e3f9c96edb..36b35ec38504db62703b233f06fa060357df0660 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "old_relation_controller"
 
 class OldRelationControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
index eae9d8a2eda1bea4fd8d71323728f64fff693d19..dd971a67784a47ff64733021d79ade97b190ec1d 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "old_way_controller"
 
 class OldWayControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
index 5a72830e4805c85ff39f03aefaad4e5be4ce2cfa..750f7c9d143212a993b5ff20ef4c3f8a1edfe8cc 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "redactions_controller"
 
 class RedactionsControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -38,6 +36,8 @@ class RedactionsControllerTest < ActionController::TestCase
   end
 
   def test_index
+    create(:redaction)
+
     get :index
     assert_response :success
     assert_template :index
index 5f7516fd24eecea90e365c21b1de5f7b09378b31..6aafa3aab3d091253765a2cb88238a7277322064 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "relation_controller"
 
 class RelationControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -52,11 +50,11 @@ class RelationControllerTest < ActionController::TestCase
 
   def test_read
     # check that a visible relation is returned properly
-    get :read, :id => current_relations(:visible_relation).id
+    get :read, :id => create(:relation).id
     assert_response :success
 
     # check that an invisible relation is not returned
-    get :read, :id => current_relations(:invisible_relation).id
+    get :read, :id => create(:relation, :deleted).id
     assert_response :gone
 
     # check chat a non-existent relation is not returned
@@ -153,10 +151,10 @@ class RelationControllerTest < ActionController::TestCase
     get :full, :id => 999999
     assert_response :not_found
 
-    get :full, :id => current_relations(:invisible_relation).id
+    get :full, :id => create(:relation, :deleted).id
     assert_response :gone
 
-    get :full, :id => current_relations(:visible_relation).id
+    get :full, :id => create(:relation).id
     assert_response :success
     # FIXME: check whether this contains the stuff we want!
   end
@@ -164,6 +162,12 @@ class RelationControllerTest < ActionController::TestCase
   ##
   # test fetching multiple relations
   def test_relations
+    relation1 = create(:relation)
+    relation2 = create(:relation, :deleted)
+    relation3 = create(:relation, :with_history, :version => 2)
+    relation4 = create(:relation, :with_history, :version => 2)
+    relation4.old_relations.find_by(:version => 1).redact!(create(:redaction))
+
     # check error when no parameter provided
     get :relations
     assert_response :bad_request
@@ -173,18 +177,18 @@ class RelationControllerTest < ActionController::TestCase
     assert_response :bad_request
 
     # test a working call
-    get :relations, :relations => "1,2,4,7"
+    get :relations, :relations => "#{relation1.id},#{relation2.id},#{relation3.id},#{relation4.id}"
     assert_response :success
     assert_select "osm" do
       assert_select "relation", :count => 4
-      assert_select "relation[id='1'][visible='true']", :count => 1
-      assert_select "relation[id='2'][visible='false']", :count => 1
-      assert_select "relation[id='4'][visible='true']", :count => 1
-      assert_select "relation[id='7'][visible='true']", :count => 1
+      assert_select "relation[id='#{relation1.id}'][visible='true']", :count => 1
+      assert_select "relation[id='#{relation2.id}'][visible='false']", :count => 1
+      assert_select "relation[id='#{relation3.id}'][visible='true']", :count => 1
+      assert_select "relation[id='#{relation4.id}'][visible='true']", :count => 1
     end
 
     # check error when a non-existent relation is included
-    get :relations, :relations => "1,2,4,7,400"
+    get :relations, :relations => "#{relation1.id},#{relation2.id},#{relation3.id},#{relation4.id},400"
     assert_response :not_found
   end
 
@@ -373,16 +377,18 @@ class RelationControllerTest < ActionController::TestCase
   # josm-dev.
   ## FIXME Move this to an integration test
   def test_update_relation_tags
-    basic_authorization "test@example.com", "test"
-    rel_id = current_relations(:multi_tag_relation).id
-    create_list(:relation_tag, 4, :relation => current_relations(:multi_tag_relation))
-    cs_id = changesets(:public_user_first_change).id
+    user = create(:user)
+    changeset = create(:changeset, :user => user)
+    relation = create(:relation)
+    create_list(:relation_tag, 4, :relation => relation)
 
-    with_relation(rel_id) do |rel|
+    basic_authorization user.email, "test"
+
+    with_relation(relation.id) do |rel|
       # alter one of the tags
       tag = rel.find("//osm/relation/tag").first
       tag["v"] = "some changed value"
-      update_changeset(rel, cs_id)
+      update_changeset(rel, changeset.id)
 
       # check that the downloaded tags are the same as the uploaded tags...
       new_version = with_update(rel) do |new_rel|
@@ -390,10 +396,10 @@ class RelationControllerTest < ActionController::TestCase
       end
 
       # check the original one in the current_* table again
-      with_relation(rel_id) { |r| assert_tags_equal rel, r }
+      with_relation(relation.id) { |r| assert_tags_equal rel, r }
 
       # now check the version in the history
-      with_relation(rel_id, new_version) { |r| assert_tags_equal rel, r }
+      with_relation(relation.id, new_version) { |r| assert_tags_equal rel, r }
     end
   end
 
@@ -627,11 +633,18 @@ class RelationControllerTest < ActionController::TestCase
   # when a relation's tag is modified then it should put the bounding
   # box of all its members into the changeset.
   def test_tag_modify_bounding_box
-    # in current fixtures, relation 5 contains nodes 3 and 5 (node 3
-    # indirectly via way 3), so the bbox should be [3,3,5,5].
+    relation = create(:relation)
+    node1 = create(:node, :lat => 3, :lon => 3)
+    node2 = create(:node, :lat => 5, :lon => 5)
+    way = create(:way)
+    create(:way_node, :way => way, :node => node1)
+    create(:relation_member, :relation => relation, :member => way)
+    create(:relation_member, :relation => relation, :member => node2)
+    # the relation contains nodes1 and node2 (node1
+    # indirectly via the way), so the bbox should be [3,3,5,5].
     check_changeset_modify(BoundingBox.new(3, 3, 5, 5)) do |changeset_id|
       # add a tag to an existing relation
-      relation_xml = current_relations(:visible_relation).to_xml
+      relation_xml = relation.to_xml
       relation_element = relation_xml.find("//osm/relation").first
       new_tag = XML::Node.new("tag")
       new_tag["k"] = "some_new_tag"
@@ -643,7 +656,7 @@ class RelationControllerTest < ActionController::TestCase
 
       # upload the change
       content relation_xml
-      put :update, :id => current_relations(:visible_relation).id
+      put :update, :id => relation.id
       assert_response :success, "can't update relation for tag/bbox test"
     end
   end
@@ -652,15 +665,19 @@ class RelationControllerTest < ActionController::TestCase
   # add a member to a relation and check the bounding box is only that
   # element.
   def test_add_member_bounding_box
-    relation_id = current_relations(:visible_relation).id
-
-    [current_nodes(:used_node_1),
-     current_nodes(:used_node_2),
-     current_ways(:used_way),
-     current_ways(:way_with_versions)].each_with_index do |element, _version|
+    relation = create(:relation)
+    node1 = create(:node, :lat => 4, :lon => 4)
+    node2 = create(:node, :lat => 7, :lon => 7)
+    way1 = create(:way)
+    create(:way_node, :way => way1, :node => create(:node, :lat => 8, :lon => 8))
+    way2 = create(:way)
+    create(:way_node, :way => way2, :node => create(:node, :lat => 9, :lon => 9), :sequence_id => 1)
+    create(:way_node, :way => way2, :node => create(:node, :lat => 10, :lon => 10), :sequence_id => 2)
+
+    [node1, node2, way1, way2].each do |element|
       bbox = element.bbox.to_unscaled
       check_changeset_modify(bbox) do |changeset_id|
-        relation_xml = Relation.find(relation_id).to_xml
+        relation_xml = Relation.find(relation.id).to_xml
         relation_element = relation_xml.find("//osm/relation").first
         new_member = XML::Node.new("member")
         new_member["ref"] = element.id.to_s
@@ -673,11 +690,11 @@ class RelationControllerTest < ActionController::TestCase
 
         # upload the change
         content relation_xml
-        put :update, :id => current_relations(:visible_relation).id
+        put :update, :id => relation.id
         assert_response :success, "can't update relation for add #{element.class}/bbox test: #{@response.body}"
 
         # get it back and check the ordering
-        get :read, :id => relation_id
+        get :read, :id => relation.id
         assert_response :success, "can't read back the relation: #{@response.body}"
         check_ordering(relation_xml, @response.body)
       end
@@ -688,11 +705,17 @@ class RelationControllerTest < ActionController::TestCase
   # remove a member from a relation and check the bounding box is
   # only that element.
   def test_remove_member_bounding_box
+    relation = create(:relation)
+    node1 = create(:node, :lat => 3, :lon => 3)
+    node2 = create(:node, :lat => 5, :lon => 5)
+    create(:relation_member, :relation => relation, :member => node1)
+    create(:relation_member, :relation => relation, :member => node2)
+
     check_changeset_modify(BoundingBox.new(5, 5, 5, 5)) do |changeset_id|
       # remove node 5 (5,5) from an existing relation
-      relation_xml = current_relations(:visible_relation).to_xml
+      relation_xml = relation.to_xml
       relation_xml
-        .find("//osm/relation/member[@type='node'][@ref='5']")
+        .find("//osm/relation/member[@type='node'][@ref='#{node2.id}']")
         .first.remove!
 
       # update changeset ID to point to new changeset
@@ -700,7 +723,7 @@ class RelationControllerTest < ActionController::TestCase
 
       # upload the change
       content relation_xml
-      put :update, :id => current_relations(:visible_relation).id
+      put :update, :id => relation.id
       assert_response :success, "can't update relation for remove node/bbox test"
     end
   end
@@ -718,15 +741,15 @@ class RelationControllerTest < ActionController::TestCase
 
     basic_authorization(user.email, "test")
 
-    doc_str = <<OSM
-<osm>
- <relation changeset='#{changeset.id}'>
-  <member ref='#{node1.id}' type='node' role='first'/>
-  <member ref='#{node2.id}' type='node' role='second'/>
-  <member ref='#{way1.id}' type='way' role='third'/>
-  <member ref='#{way2.id}' type='way' role='fourth'/>
- </relation>
-</osm>
+    doc_str = <<OSM.strip_heredoc
+      <osm>
      <relation changeset='#{changeset.id}'>
+        <member ref='#{node1.id}' type='node' role='first'/>
+        <member ref='#{node2.id}' type='node' role='second'/>
+        <member ref='#{way1.id}' type='way' role='third'/>
+        <member ref='#{way2.id}' type='way' role='fourth'/>
      </relation>
+      </osm>
 OSM
     doc = XML::Parser.string(doc_str).parse
 
@@ -778,15 +801,15 @@ OSM
     node1 = create(:node)
     node2 = create(:node)
 
-    doc_str = <<OSM
-<osm>
- <relation changeset='#{changeset.id}'>
-  <member ref='#{node1.id}' type='node' role='forward'/>
-  <member ref='#{node2.id}' type='node' role='forward'/>
-  <member ref='#{node1.id}' type='node' role='forward'/>
-  <member ref='#{node2.id}' type='node' role='forward'/>
- </relation>
-</osm>
+    doc_str = <<OSM.strip_heredoc
+      <osm>
      <relation changeset='#{changeset.id}'>
+        <member ref='#{node1.id}' type='node' role='forward'/>
+        <member ref='#{node2.id}' type='node' role='forward'/>
+        <member ref='#{node1.id}' type='node' role='forward'/>
+        <member ref='#{node2.id}' type='node' role='forward'/>
      </relation>
+      </osm>
 OSM
     doc = XML::Parser.string(doc_str).parse
 
@@ -821,15 +844,15 @@ OSM
     node3 = create(:node)
     node4 = create(:node)
 
-    doc_str = <<OSM
-<osm>
- <relation changeset='#{changeset.id}'>
-  <member ref='#{node1.id}' type='node' role='forward'/>
-  <member ref='#{node4.id}' type='node' role='forward'/>
-  <member ref='#{node3.id}' type='node' role='forward'/>
-  <member ref='#{node2.id}' type='node' role='forward'/>
- </relation>
-</osm>
+    doc_str = <<OSM.strip_heredoc
+      <osm>
      <relation changeset='#{changeset.id}'>
+        <member ref='#{node1.id}' type='node' role='forward'/>
+        <member ref='#{node4.id}' type='node' role='forward'/>
+        <member ref='#{node3.id}' type='node' role='forward'/>
+        <member ref='#{node2.id}' type='node' role='forward'/>
      </relation>
+      </osm>
 OSM
     doc = XML::Parser.string(doc_str).parse
     basic_authorization(user.email, "test")
@@ -856,8 +879,16 @@ OSM
   # remove all the members from a relation. the result is pretty useless, but
   # still technically valid.
   def test_remove_all_members
+    relation = create(:relation)
+    node1 = create(:node, :lat => 3, :lon => 3)
+    node2 = create(:node, :lat => 5, :lon => 5)
+    way = create(:way)
+    create(:way_node, :way => way, :node => node1)
+    create(:relation_member, :relation => relation, :member => way)
+    create(:relation_member, :relation => relation, :member => node2)
+
     check_changeset_modify(BoundingBox.new(3, 3, 5, 5)) do |changeset_id|
-      relation_xml = current_relations(:visible_relation).to_xml
+      relation_xml = relation.to_xml
       relation_xml
         .find("//osm/relation/member")
         .each(&:remove!)
@@ -867,9 +898,9 @@ OSM
 
       # upload the change
       content relation_xml
-      put :update, :id => current_relations(:visible_relation).id
+      put :update, :id => relation.id
       assert_response :success, "can't update relation for remove all members test"
-      checkrelation = Relation.find(current_relations(:visible_relation).id)
+      checkrelation = Relation.find(relation.id)
       assert_not_nil(checkrelation,
                      "uploaded relation not found in database after upload")
       assert_equal(0, checkrelation.members.length,
@@ -905,7 +936,7 @@ OSM
   # that the changeset bounding box is +bbox+.
   def check_changeset_modify(bbox)
     ## First test with the private user to check that you get a forbidden
-    basic_authorization(users(:normal_user).email, "test")
+    basic_authorization(create(:user, :data_public => false).email, "test")
 
     # create a new changeset for this operation, so we are assured
     # that the bounding box will be newly-generated.
@@ -916,7 +947,7 @@ OSM
     end
 
     ## Now do the whole thing with the public user
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     # create a new changeset for this operation, so we are assured
     # that the bounding box will be newly-generated.
index 2e835a58758dbb88a995e85f698da6370ab4d7de..5b27666d9ffc5db4c7d95b65dd6681640cf914f6 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class SearchControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -43,10 +41,14 @@ class SearchControllerTest < ActionController::TestCase
   ##
   # test searching ways
   def test_search_ways
-    [:visible_way, :invisible_way, :used_way].each do |way|
-      create(:way_tag, :way => current_ways(way), :k => "test", :v => "yes")
+    first_way = create(:way_with_nodes, :nodes_count => 2)
+    deleted_way = create(:way_with_nodes, :deleted, :nodes_count => 2)
+    third_way = create(:way_with_nodes, :nodes_count => 2)
+
+    [first_way, deleted_way, third_way].each do |way|
+      create(:way_tag, :way => way, :k => "test", :v => "yes")
     end
-    create(:way_tag, :way => current_ways(:used_way), :k => "name", :v => "Test Way")
+    create(:way_tag, :way => third_way, :k => "name", :v => "Test Way")
 
     get :search_ways, :type => "test"
     assert_response :service_unavailable
@@ -64,10 +66,14 @@ class SearchControllerTest < ActionController::TestCase
   ##
   # test searching relations
   def test_search_relations
-    [:visible_relation, :invisible_relation, :used_relation].each do |relation|
-      create(:relation_tag, :relation => current_relations(relation), :k => "test", :v => "yes")
+    first_relation = create(:relation)
+    deleted_relation = create(:relation)
+    third_relation = create(:relation)
+
+    [first_relation, deleted_relation, third_relation].each do |relation|
+      create(:relation_tag, :relation => relation, :k => "test", :v => "yes")
     end
-    create(:relation_tag, :relation => current_relations(:used_relation), :k => "name", :v => "Test Relation")
+    create(:relation_tag, :relation => third_relation, :k => "name", :v => "Test Relation")
 
     get :search_relations, :type => "test"
     assert_response :service_unavailable
index a4388ef6c1d50c1c08100b6b85f4cd36ff1c9658..26d936e1bf1fa860b23860b46a7e716e04176650 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class SiteControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # setup oauth keys
   def setup
@@ -254,7 +252,9 @@ class SiteControllerTest < ActionController::TestCase
   # Test editing a specific way
   def test_edit_with_way
     user = create(:user)
-    way  = current_ways(:visible_way)
+    node = create(:node, :lat => 3, :lon => 3)
+    way  = create(:way)
+    create(:way_node, :node => node, :way => way)
 
     get :edit, { :way => way.id }, { :user => user }
     assert_response :success
index e293bc41b2185b34dc7314d641eba65db1827647..953bf33ab0fd17b160236b82fe203f4a0b29d3de 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class SwfControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
index 9821352e18e2256b5f46b7c8b44f618e1cffb708..bac53e74c6f765225d1f69e769a63c9e859ba33e 100644 (file)
@@ -539,7 +539,7 @@ class TraceControllerTest < ActionController::TestCase
     trace = Trace.order(:id => :desc).first
     assert_equal "a.gpx", trace.name
     assert_equal "New Trace", trace.description
-    assert_equal %w(new trace), trace.tags.order(:tag).collect(&:tag)
+    assert_equal %w[new trace], trace.tags.order(:tag).collect(&:tag)
     assert_equal "trackable", trace.visibility
     assert_equal false, trace.inserted
     assert_equal File.new(fixture).read, File.new(trace.trace_name).read
@@ -817,7 +817,7 @@ class TraceControllerTest < ActionController::TestCase
     trace = Trace.find(response.body.to_i)
     assert_equal "a.gpx", trace.name
     assert_equal "New Trace", trace.description
-    assert_equal %w(new trace), trace.tags.order(:tag).collect(&:tag)
+    assert_equal %w[new trace], trace.tags.order(:tag).collect(&:tag)
     assert_equal "trackable", trace.visibility
     assert_equal false, trace.inserted
     assert_equal File.new(fixture).read, File.new(trace.trace_name).read
@@ -835,7 +835,7 @@ class TraceControllerTest < ActionController::TestCase
     trace = Trace.find(response.body.to_i)
     assert_equal "a.gpx", trace.name
     assert_equal "New Trace", trace.description
-    assert_equal %w(new trace), trace.tags.order(:tag).collect(&:tag)
+    assert_equal %w[new trace], trace.tags.order(:tag).collect(&:tag)
     assert_equal "public", trace.visibility
     assert_equal false, trace.inserted
     assert_equal File.new(fixture).read, File.new(trace.trace_name).read
@@ -854,7 +854,7 @@ class TraceControllerTest < ActionController::TestCase
     trace = Trace.find(response.body.to_i)
     assert_equal "a.gpx", trace.name
     assert_equal "New Trace", trace.description
-    assert_equal %w(new trace), trace.tags.order(:tag).collect(&:tag)
+    assert_equal %w[new trace], trace.tags.order(:tag).collect(&:tag)
     assert_equal "private", trace.visibility
     assert_equal false, trace.inserted
     assert_equal File.new(fixture).read, File.new(trace.trace_name).read
index a88570c6b9cbe4684d6b2d397b3becaaf75e71bc..c821ea39e52a4f856ab07ec461ccd6e691a40012 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class UserBlocksControllerTest < ActionController::TestCase
-  fixtures :users, :user_roles
-
   ##
   # test all routes which lead to this controller
   def test_routes
index 3232b9e2ed50e293ff6ba9b1274c214b252e7505..51f8dfd400113c5a3c1cc67b386713b45d4fc973 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class UserControllerTest < ActionController::TestCase
-  api_fixtures
-
   def setup
     stub_hostip_requests
   end
@@ -1124,7 +1122,7 @@ class UserControllerTest < ActionController::TestCase
     basic_authorization(user.email, "test")
     get :api_gpx_files
     assert_response :success
-    assert_equal "text/xml", response.content_type
+    assert_equal "application/xml", response.content_type
 
     # check the data that is returned
     assert_select "gpx_file[id='#{trace1.id}']", 1 do
@@ -1348,44 +1346,55 @@ class UserControllerTest < ActionController::TestCase
   end
 
   def test_list_get
+    user = create(:user)
+    moderator_user = create(:moderator_user)
+    administrator_user = create(:administrator_user)
+    _suspended_user = create(:user, :suspended)
+    _ip_user = create(:user, :creation_ip => "1.2.3.4")
+
+    # There are now 7 users - the five above, plus two extra "granters" for the
+    # moderator_user and administrator_user
+    assert_equal 7, User.count
+
     # Shouldn't work when not logged in
     get :list
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
 
-    session[:user] = create(:user).id
+    session[:user] = user.id
 
     # Shouldn't work when logged in as a normal user
     get :list
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
 
-    session[:user] = create(:moderator_user).id
+    session[:user] = moderator_user.id
 
     # Shouldn't work when logged in as a moderator
     get :list
     assert_response :redirect
     assert_redirected_to :action => :login, :referer => users_path
 
-    session[:user] = create(:administrator_user).id
+    session[:user] = administrator_user.id
 
+    # Note there is a header row, so all row counts are users + 1
     # Should work when logged in as an administrator
     get :list
     assert_response :success
     assert_template :list
-    assert_select "table#user_list tr", :count => User.count + 1
+    assert_select "table#user_list tr", :count => 7 + 1
 
     # Should be able to limit by status
     get :list, :status => "suspended"
     assert_response :success
     assert_template :list
-    assert_select "table#user_list tr", :count => User.where(:status => "suspended").count + 1
+    assert_select "table#user_list tr", :count => 1 + 1
 
     # Should be able to limit by IP address
     get :list, :ip => "1.2.3.4"
     assert_response :success
     assert_template :list
-    assert_select "table#user_list tr", :count => User.where(:creation_ip => "1.2.3.4").count + 1
+    assert_select "table#user_list tr", :count => 1 + 1
   end
 
   def test_list_get_paginated
@@ -1397,6 +1406,9 @@ class UserControllerTest < ActionController::TestCase
 
     session[:user] = create(:administrator_user).id
 
+    # 100 examples, an administrator, and a granter for the admin.
+    assert_equal 102, User.count
+
     get :list
     assert_response :success
     assert_template :list
@@ -1410,7 +1422,7 @@ class UserControllerTest < ActionController::TestCase
     get :list, :page => 3
     assert_response :success
     assert_template :list
-    assert_select "table#user_list tr", :count => 28
+    assert_select "table#user_list tr", :count => 3
   end
 
   def test_list_post_confirm
index fac864ae9e6d63d46735edd359ac85020b914f24..ff6e19c38540b41df6fe66c88b4eaa57f38ff146 100644 (file)
@@ -53,7 +53,7 @@ class UserPreferenceControllerTest < ActionController::TestCase
     # try the read again
     get :read
     assert_response :success
-    assert_equal "text/xml", @response.content_type
+    assert_equal "application/xml", @response.content_type
     assert_select "osm" do
       assert_select "preferences", :count => 1 do
         assert_select "preference", :count => 2
index 93994aa694997b195126dd283c69ef2ec2baf64f..99a45adefc42a3944c50df44e0c3b6afbffa5e85 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "way_controller"
 
 class WayControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -82,6 +80,11 @@ class WayControllerTest < ActionController::TestCase
   ##
   # test fetching multiple ways
   def test_ways
+    way1 = create(:way)
+    way2 = create(:way, :deleted)
+    way3 = create(:way)
+    way4 = create(:way)
+
     # check error when no parameter provided
     get :ways
     assert_response :bad_request
@@ -91,18 +94,18 @@ class WayControllerTest < ActionController::TestCase
     assert_response :bad_request
 
     # test a working call
-    get :ways, :ways => "1,2,4,6"
+    get :ways, :ways => "#{way1.id},#{way2.id},#{way3.id},#{way4.id}"
     assert_response :success
     assert_select "osm" do
       assert_select "way", :count => 4
-      assert_select "way[id='1'][visible='true']", :count => 1
-      assert_select "way[id='2'][visible='false']", :count => 1
-      assert_select "way[id='4'][visible='true']", :count => 1
-      assert_select "way[id='6'][visible='true']", :count => 1
+      assert_select "way[id='#{way1.id}'][visible='true']", :count => 1
+      assert_select "way[id='#{way2.id}'][visible='false']", :count => 1
+      assert_select "way[id='#{way3.id}'][visible='true']", :count => 1
+      assert_select "way[id='#{way4.id}'][visible='true']", :count => 1
     end
 
     # check error when a non-existent way is included
-    get :ways, :ways => "1,2,4,6,400"
+    get :ways, :ways => "#{way1.id},#{way2.id},#{way3.id},#{way4.id},400"
     assert_response :not_found
   end
 
@@ -406,7 +409,7 @@ class WayControllerTest < ActionController::TestCase
 
     # try and update in a closed changeset
     content update_changeset(private_way.to_xml,
-                             create(:changeset, :closed, :user => private_user))
+                             create(:changeset, :closed, :user => private_user).id)
     put :update, :id => private_way.id
     assert_require_public_data "update with closed changeset should be forbidden, when data isn't public"
 
@@ -444,7 +447,7 @@ class WayControllerTest < ActionController::TestCase
 
     # try and update in a closed changeset
     content update_changeset(way.to_xml,
-                             changesets(:normal_user_closed_change).id)
+                             create(:changeset, :closed, :user => user).id)
     put :update, :id => way.id
     assert_response :conflict, "update with closed changeset should be rejected"
 
diff --git a/test/fixtures/changesets.yml b/test/fixtures/changesets.yml
deleted file mode 100644 (file)
index 2d5ce4e..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# FIXME! all of these changesets need their bounding boxes set correctly!
-#
-<% SCALE = 10000000 unless defined?(SCALE) %>
-
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-normal_user_first_change:
-  id: 1
-  user_id: 1
-  created_at: "2007-01-01 00:00:00"
-  closed_at: <%= Time.now.utc + 86400 %>
-  min_lon: <%= 1 * SCALE %>
-  min_lat: <%= 1 * SCALE %>
-  max_lon: <%= 5 * SCALE %>
-  max_lat: <%= 5 * SCALE %>
-  num_changes: 11
-
-public_user_first_change:
-  id: 2
-  user_id: 2
-  created_at: <%= Time.now.utc %>
-  closed_at: <%= Time.now.utc + 86400 %>
-  num_changes: 0
-
-deleted_user_first_change:
-  id: 9
-  user_id: 11
-  created_at: "2007-01-01 00:00:00"
-  closed_at: "2007-01-02 00:00:00"
-  num_changes: 0
-
-normal_user_closed_change:
-  id: 3
-  user_id: 1
-  created_at: "2007-01-01 00:00:00"
-  closed_at: "2007-01-02 00:00:00"
-  num_changes: 0
-
-public_user_closed_change:
-  id: 7
-  user_id: 2
-  created_at: "2007-01-01 00:00:00"
-  closed_at: "2007-01-02 00:00:00"
-  num_changes: 0
-
-public_user_version_change:
-  id: 4
-  user_id: 2
-  created_at: <%= Time.now.utc %>
-  closed_at: <%= Time.now.utc + 86400 %>
-  min_lon: <%= 1 * SCALE %>
-  min_lat: <%= 1 * SCALE %>
-  max_lon: <%= 4 * SCALE %>
-  max_lat: <%= 4 * SCALE %>
-  num_changes: 8
-
-# changeset to contain all the invalid stuff that is in the
-# fixtures (nodes outside the world, etc...), but needs to have
-# a valid user...
-invalid_changeset:
-  id: 5
-  user_id: 3
-  created_at: "2008-01-01 00:00:00"
-  closed_at: "2008-01-02 00:00:00"
-  num_changes: 9
-
-# changeset which still has time remaining, but has been closed
-# by containing too many elements.
-too_many_elements_changeset:
-  id: 6
-  user_id: 1
-  created_at: "2008-01-01 00:00:00"
-  closed_at: <%= Time.now.utc + 86400 %>
-  min_lon: <%= 1 * SCALE %>
-  min_lat: <%= 1 * SCALE %>
-  max_lon: <%= 4 * SCALE %>
-  max_lat: <%= 4 * SCALE %>
-  num_changes: <%= Changeset::MAX_ELEMENTS + 1 %>
-
-normal_user_subscribed_change:
-  id: 8
-  user_id: 1
-  created_at: "2007-01-01 00:00:00"
-  closed_at: "2007-01-02 00:00:00"
-  num_changes: 0
diff --git a/test/fixtures/current_nodes.yml b/test/fixtures/current_nodes.yml
deleted file mode 100644 (file)
index 8389f67..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-<% SCALE = 10000000 unless defined?(SCALE) %>
-
-visible_node:
-  id: 1
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 1
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-invisible_node:
-  id: 2
-  latitude: <%= 2*SCALE %>
-  longitude: <%= 2*SCALE %>
-  changeset_id: 1
-  visible: false
-  version: 1
-  tile: <%= QuadTile.tile_for_point(2,2) %>
-  timestamp: 2007-01-01 00:00:00
-
-used_node_1:
-  id: 3
-  latitude: <%= 3*SCALE %>
-  longitude: <%= 3*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(3,3) %>
-  timestamp: 2007-01-01 00:00:00
-
-used_node_2:
-  id: 4
-  latitude: <%= 4*SCALE %>
-  longitude: <%= 4*SCALE %>
-  changeset_id: 1
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(4,4) %>
-  timestamp: 2007-01-01 00:00:00
-
-node_used_by_relationship:
-  id: 5
-  latitude: <%= 5*SCALE %>
-  longitude: <%= 5*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(5,5) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_too_far_north:
-  id: 6
-  latitude: <%= 90.01*SCALE %>
-  longitude: <%= 6*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(90.01,6) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_north_limit:
-  id: 11
-  latitude: <%= 90*SCALE %>
-  longitude: <%= 11*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(90,11) %>
-  timestamp: 2008-07-08 14:50:00
-  
-node_too_far_south:
-  id: 7
-  latitude: <%= -90.01*SCALE %>
-  longitude: <%= 7*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(-90.01,7) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_south_limit:
-  id: 12
-  latitude: <%= -90*SCALE %>
-  longitude: <%= 12*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(-90,12) %>
-  timestamp: 2008-07-08 15:02:18
-  
-node_too_far_west:
-  id: 8
-  latitude: <%= 8*SCALE %>
-  longitude: <%= -180.01*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(8,-180.01) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_west_limit:
-  id: 13
-  latitude: <%= 13*SCALE %>
-  longitude: <%= -180*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(13,-180) %>
-  timestamp: 2008-07-08 15:17:37
-  
-node_too_far_east:
-  id: 9
-  latitude: <%= 9*SCALE %>
-  longitude: <%= 180.01*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(9,180.01) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_east_limit:
-  id: 14
-  latitude: <%= 14*SCALE %>
-  longitude: <%= 180*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(14,180) %>
-  timestamp: 2008-07-08 15:46:16
-  
-node_totally_wrong:
-  id: 10
-  latitude: <%= 200*SCALE %>
-  longitude: <%= 200*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(200,200) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_with_versions:
-  id: 15
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 4
-  visible: true
-  version: 4
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2008-01-01 00:04:00
-  
-public_visible_node:
-  id: 16
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-redacted_node:
-  id: 17
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: false
-  version: 2
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-node_with_name:
-  id: 18
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 2
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-node_with_ref_without_name:
-  id: 19
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
diff --git a/test/fixtures/current_relation_members.yml b/test/fixtures/current_relation_members.yml
deleted file mode 100644 (file)
index 67911b8..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-t1:
-  relation_id: 1
-  sequence_id: 1
-  member_role: "some"
-  member_type: "Way"
-  member_id: 3
-
-t2:
-  relation_id: 1
-  sequence_id: 2
-  member_role: "some"
-  member_type: "Node"
-  member_id: 5
-
-t3:
-  relation_id: 1
-  sequence_id: 3
-  member_role: "some"
-  member_type: "Relation"
-  member_id: 3
-
-t4:
-  relation_id: 3
-  sequence_id: 1
-  member_role: "some"
-  member_type: "Node"
-  member_id: 5
-
-t5:
-  relation_id: 2
-  sequence_id: 1
-  member_role: "some"
-  member_type: "Node"
-  member_id: 5
-  
-public_used:
-  relation_id: 6
-  member_role: "used by other relation"
-  member_type: "Relation"
-  member_id: 5
-
-r8_m1:
-  relation_id: 8
-  sequence_id: 1
-  member_role: "some node"
-  member_type: "Node"
-  member_id: 15
-
-r8_m2:
-  relation_id: 8
-  sequence_id: 2
-  member_role: "some way"
-  member_type: "Way"
-  member_id: 4
-
-r8_m3:
-  relation_id: 8
-  sequence_id: 3
-  member_role: "some relation"
-  member_type: "Relation"
-  member_id: 7
diff --git a/test/fixtures/current_relations.yml b/test/fixtures/current_relations.yml
deleted file mode 100644 (file)
index fd95f60..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-visible_relation:
-  id: 1
-  changeset_id: 1
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-invisible_relation:
-  id: 2
-  changeset_id: 3
-  timestamp: 2007-01-01 00:00:00
-  visible: false
-  version: 1
-
-used_relation:
-  id: 3
-  changeset_id: 1
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-  
-multi_tag_relation:
-  id: 4
-  changeset_id: 4
-  timestamp: 2009-04-21 09:50:57
-  visible: true
-  version: 1
-  
-public_used_relation:
-  id: 5
-  changeset_id: 2
-  timestamp: 2009-04-22 00:30:33
-  visible: true
-  version: 1
-  
-public_visible_relation:
-  id: 6
-  changeset_id: 2
-  timestamp: 2009-04-22 00:34:12
-  visible: true
-  version: 1
-
-relation_with_redacted_versions:
-  id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:13
-  visible: true
-  version: 4
-
-relation_with_versions:
-  id: 8
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:00
-  visible: true
-  version: 4
diff --git a/test/fixtures/current_way_nodes.yml b/test/fixtures/current_way_nodes.yml
deleted file mode 100644 (file)
index fa7fb32..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-t1:
-  way_id: 1
-  node_id: 3
-  sequence_id: 1
-
-t2:
-  way_id: 2
-  node_id: 3
-  sequence_id: 1
-
-t3:
-  way_id: 3
-  node_id: 3
-  sequence_id: 1
-
-t4:
-  way_id: 4
-  node_id: 15
-  sequence_id: 1
-
-w5_n1:
-  way_id: 5
-  node_id: 4
-  sequence_id: 1
-
-w5_n2:
-  way_id: 5
-  node_id: 4
-  sequence_id: 2
-
-w7_n1:
-  way_id: 7
-  node_id: 4
-  sequence_id: 1
-
-w7_n2:
-  way_id: 7
-  node_id: 15
-  sequence_id: 2
-
-w7_n3:
-  way_id: 7
-  node_id: 11
-  sequence_id: 3
diff --git a/test/fixtures/current_ways.yml b/test/fixtures/current_ways.yml
deleted file mode 100644 (file)
index e6e5d84..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-visible_way:
-  id: 1
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-invisible_way:
-  id: 2
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: false
-  version: 1
-
-used_way:
-  id: 3
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-way_with_versions:
-  id: 4
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:00
-  visible: true
-  version: 4
-
-way_with_duplicate_nodes:
-  id: 5
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-way_with_redacted_versions:
-  id: 6
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:13
-  visible: true
-  version: 4
-
-way_with_multiple_nodes:
-  id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:00:00
-  visible: true
-  version: 2
diff --git a/test/fixtures/nodes.yml b/test/fixtures/nodes.yml
deleted file mode 100644 (file)
index 7841c6e..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-<% SCALE = 10000000 unless defined?(SCALE) %>
-
-visible_node:
-  node_id: 1
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 1
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-invisible_node:
-  node_id: 2
-  latitude: <%= 2*SCALE %>
-  longitude: <%= 2*SCALE %>
-  changeset_id: 1
-  visible: false
-  version: 1
-  tile: <%= QuadTile.tile_for_point(2,2) %>
-  timestamp: 2007-01-01 00:00:00
-
-used_node_1:
-  node_id: 3
-  latitude: <%= 3*SCALE %>
-  longitude: <%= 3*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(3,3) %>
-  timestamp: 2007-01-01 00:00:00
-
-used_node_2:
-  node_id: 4
-  latitude: <%= 4*SCALE %>
-  longitude: <%= 4*SCALE %>
-  changeset_id: 1
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(4,4) %>
-  timestamp: 2007-01-01 00:00:00
-
-node_used_by_relationship:
-  node_id: 5
-  latitude: <%= 5*SCALE %>
-  longitude: <%= 5*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(5,5) %>
-  timestamp: 2007-01-01 00:00:00
-
-node_too_far_north:
-  node_id: 6
-  latitude: <%= 90.01*SCALE %>
-  longitude: <%= 6*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(90.01,6) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_north_limit:
-  node_id: 11
-  latitude: <%= 90*SCALE %>
-  longitude: <%= 11*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(90,11) %>
-  timestamp: 2008-07-08 14:50:00
-  
-node_too_far_south:
-  node_id: 7
-  latitude: <%= -90.01*SCALE %>
-  longitude: <%= 7*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(-90.01,7) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_south_limit:
-  node_id: 12
-  latitude: <%= -90*SCALE %>
-  longitude: <%= 12*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(-90,12) %>
-  timestamp: 2008-07-08 15:02:18
-  
-node_too_far_west:
-  node_id: 8
-  latitude: <%= 8*SCALE %>
-  longitude: <%= -180.01*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(8,-180.01) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_west_limit:
-  node_id: 13
-  latitude: <%= 13*SCALE %>
-  longitude: <%= -180*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(13,-180) %>
-  timestamp: 2008-07-08 15:17:37
-  
-node_too_far_east:
-  node_id: 9
-  latitude: <%= 9*SCALE %>
-  longitude: <%= 180.01*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(9,180.01) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_east_limit:
-  node_id: 14
-  latitude: <%= 14*SCALE %>
-  longitude: <%= 180*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(14,180) %>
-  timestamp: 2008-07-08 15:46:16
-
-node_totally_wrong:
-  node_id: 10
-  latitude: <%= 200*SCALE %>
-  longitude: <%= 200*SCALE %>
-  changeset_id: 5
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(200,200) %>
-  timestamp: 2007-01-01 00:00:00
-  
-node_with_versions_v1:
-  node_id: 15
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 4
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2008-01-01 00:01:00
-
-node_with_versions_v2:
-  node_id: 15
-  latitude: <%= 2*SCALE %>
-  longitude: <%= 2*SCALE %>
-  changeset_id: 4
-  visible: true
-  version: 2
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2008-01-01 00:02:00
-
-node_with_versions_v3:
-  node_id: 15
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 4
-  visible: true
-  version: 3
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2008-01-01 00:03:00
-
-node_with_versions_v4:
-  node_id: 15
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 4
-  visible: true
-  version: 4
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2008-01-01 00:04:00
-  
-public_visible_node:
-  node_id: 16
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-redacted_node_redacted_version:
-  node_id: 17
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-  redaction_id: 1
-
-redacted_node_current_version:
-  node_id: 17
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: false
-  version: 2
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-
-node_with_name_redacted_version:
-  node_id: 18
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 1
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
-  redaction_id: 1
-
-node_with_name_current_version:
-  node_id: 18
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  changeset_id: 2
-  visible: true
-  version: 2
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  timestamp: 2007-01-01 00:00:00
diff --git a/test/fixtures/redactions.yml b/test/fixtures/redactions.yml
deleted file mode 100644 (file)
index c6e8569..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
-
-example:
-  id: 1
-  user_id: 5 # the moderator user
-  title: Example redaction
-  description: Usually some text would go here to say something about why the redaction happened.
diff --git a/test/fixtures/relation_members.yml b/test/fixtures/relation_members.yml
deleted file mode 100644 (file)
index a5f04f1..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-t1:
-  relation_id: 1
-  sequence_id: 1
-  member_role: "some"
-  member_type: "Way"
-  member_id: 3
-  version: 1
-
-t2:
-  relation_id: 1
-  sequence_id: 2
-  member_role: "some"
-  member_type: "Node"
-  member_id: 5
-  version: 1
-
-t3:
-  relation_id: 1
-  sequence_id: 3
-  member_role: "some"
-  member_type: "Relation"
-  member_id: 3
-  version: 1
-
-t4:
-  relation_id: 3
-  sequence_id: 1
-  member_role: "some"
-  member_type: "Node"
-  member_id: 5
-  version: 1
-
-t5:
-  relation_id: 2
-  sequence_id: 1
-  member_role: "some"
-  member_type: "Node"
-  member_id: 5
-  version: 1
-  
-public_used:
-  relation_id: 6
-  sequence_id: 1
-  member_role: "used by other relation"
-  member_type: "Relation"
-  member_id: 5
-  version: 1
-
-r8_v1_m1:
-  relation_id: 8
-  sequence_id: 1
-  member_role: "some node"
-  member_type: "Node"
-  member_id: 15
-  version: 1
-
-r8_v2_m1:
-  relation_id: 8
-  sequence_id: 1
-  member_role: "some changed node"
-  member_type: "Node"
-  member_id: 15
-  version: 2
-
-r8_v3_m1:
-  relation_id: 8
-  sequence_id: 1
-  member_role: "some changed node"
-  member_type: "Node"
-  member_id: 15
-  version: 3
-
-r8_v3_m3:
-  relation_id: 8
-  sequence_id: 2
-  member_role: "some relation"
-  member_type: "Relation"
-  member_id: 7
-  version: 3
-
-r8_v4_m1:
-  relation_id: 8
-  sequence_id: 1
-  member_role: "some node"
-  member_type: "Node"
-  member_id: 15
-  version: 4
-
-r8_v4_m2:
-  relation_id: 8
-  sequence_id: 2
-  member_role: "some way"
-  member_type: "Way"
-  member_id: 4
-  version: 4
-
-r8_v4_m3:
-  relation_id: 8
-  sequence_id: 3
-  member_role: "some relation"
-  member_type: "Relation"
-  member_id: 7
-  version: 4
diff --git a/test/fixtures/relations.yml b/test/fixtures/relations.yml
deleted file mode 100644 (file)
index 0640bf2..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-visible_relation:
-  relation_id: 1
-  changeset_id: 1
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-invisible_relation:
-  relation_id: 2
-  changeset_id: 3
-  timestamp: 2007-01-01 00:00:00
-  visible: false
-  version: 1
-
-used_relation:
-  relation_id: 3
-  changeset_id: 1
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-  
-multi_tag_relation:
-  relation_id: 4
-  changeset_id: 4
-  timestamp: 2009-04-21 09:50:57
-  visible: true
-  version: 1
-  
-public_used_relation:
-  relation_id: 5
-  changeset_id: 2
-  timestamp: 2009-04-22 00:30:03
-  visible: true
-  version: 1
-  
-public_visible_relation:
-  relation_id: 6
-  changeset_id: 2
-  timestamp: 2009-04-22 00:34:12
-  visible: true
-  version: 1
-
-relation_with_redacted_versions_v1:
-  relation_id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:10
-  visible: true
-  version: 1
-
-relation_with_redacted_versions_v2:
-  relation_id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:11
-  visible: true
-  version: 2
-  redaction_id: 1
-
-relation_with_redacted_versions_v3:
-  relation_id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:12
-  visible: true
-  version: 3
-  redaction_id: 1
-
-relation_with_redacted_versions_v4:
-  relation_id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:13
-  visible: true
-  version: 4
-
-relation_with_versions_v1:
-  relation_id: 8
-  changeset_id: 4
-  timestamp: 2008-01-01 00:01:00
-  visible: true
-  version: 1
-
-relation_with_versions_v2:
-  relation_id: 8
-  changeset_id: 4
-  timestamp: 2008-01-01 00:02:00
-  visible: true
-  version: 2
-
-relation_with_versions_v3:
-  relation_id: 8
-  changeset_id: 4
-  timestamp: 2008-01-01 00:03:00
-  visible: true
-  version: 3
-
-relation_with_versions_v4:
-  relation_id: 8
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:00
-  visible: true
-  version: 4
diff --git a/test/fixtures/user_roles.yml b/test/fixtures/user_roles.yml
deleted file mode 100644 (file)
index 980d5e8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-administrator:
-  user_id: 6
-  role: administrator
-  granter_id: 6
-
-moderator:
-  user_id: 5
-  role: moderator
-  granter_id: 6
-
-second_moderator:
-  user_id: 15
-  role: moderator
-  granter_id: 6
-
-super_moderator:
-  user_id: 16
-  role: moderator
-  granter_id: 6
-
-super_administrator:
-  user_id: 16
-  role: administrator
-  granter_id: 6
diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml
deleted file mode 100644 (file)
index 18b33f6..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-normal_user:
-  id: 1
-  email: test@openstreetmap.org
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: test
-  data_public: false
-  description: test
-  home_lat: 12.1
-  home_lon: 12.1
-  home_zoom: 3
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-  creation_ip: "1.2.3.4"
-
-public_user:
-  id: 2
-  email: test@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: test2
-  data_public: true
-  description: some test description
-  home_lat: 12
-  home_lon: 12
-  home_zoom: 12
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: "en de"
-  creation_ip: "4.5.6.7"
-
-inactive_user:
-  id: 3
-  email: inactive@openstreetmap.org
-  status: pending
-  pass_crypt: <%= Digest::MD5::hexdigest('test2') %>
-  creation_time: "2008-07-01 02:23:45"
-  display_name: Inactive User
-  data_public: true
-  description: description
-  home_lat: 123.4
-  home_lon: 12.34
-  home_zoom: 15
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-  email_valid: false
-
-second_public_user:
-  id: 4
-  email: public@OpenStreetMap.org
-  new_email: new_public@OpenStreetMap.org
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: pulibc_test2
-  data_public: true
-  description: some test description
-  home_lat: 89
-  home_lon: 87
-  home_zoom: 12
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  creation_ip: "1.2.3.4"
-
-moderator_user:
-  id: 5
-  email: moderator@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: moderator
-  data_public: true
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-  image_use_gravatar: false
-
-administrator_user:
-  id: 6
-  email: administrator@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: administrator
-  data_public: true
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-terms_not_seen_user:
-  id: 7
-  email: not_agreed@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2011-03-22 00:23:45"
-  display_name: not_agreed
-  data_public: true
-  terms_seen: false
-  languages: en
-
-openid_user:
-  id: 8
-  email: openid-user@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: openIDuser
-  data_public: true
-  auth_provider: openid
-  auth_uid: http://localhost:1123/john.doe
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-uppercase_user:
-  id: 9
-  email: TEST@OPENSTREETMAP.ORG
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: TEST
-  data_public: true
-  description: test
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-suspended_user:
-  id: 10
-  email: suspended@openstreetmap.org
-  status: suspended
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: suspended user
-  data_public: true
-  description: test
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-deleted_user:
-  id: 11
-  email: deleted@openstreetmap.org
-  status: deleted
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: deleted
-  data_public: true
-  description: test
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-confirmed_user:
-  id: 12
-  email: confirmed@openstreetmap.org
-  status: confirmed
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: confirmed
-  data_public: true
-  description: test
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-blocked_user:
-  id: 13
-  email: blocked@openstreetmap.org
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: blocked
-  data_public: true
-  description: test
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-unblocked_user:
-  id: 14
-  email: unblocked@openstreetmap.org
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2007-01-01 00:00:00"
-  display_name: unblocked
-  data_public: true
-  description: test
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-second_moderator_user:
-  id: 15
-  email: second_moderator@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: second_moderator
-  data_public: true
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-super_user:
-  id: 16
-  email: super@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: super
-  data_public: true
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-north_pole_user:
-  id: 17
-  email: santa@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: santa
-  data_public: true
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-  home_lat: 89.9
-  home_lon: 146.8
-
-german_user:
-  id: 18
-  email: german@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: germanuser
-  data_public: true
-  description: deutsch sprechen
-  home_lat: 11.9
-  home_lon: 12.1
-  home_zoom: 12
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: de
-
-google_user:
-  id: 19
-  email: google-user@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: googleuser
-  data_public: true
-  auth_provider: google
-  auth_uid: 123456789
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-facebook_user:
-  id: 20
-  email: facebook-user@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: facebookuser
-  data_public: true
-  auth_provider: facebook
-  auth_uid: 123456789
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-windowslive_user:
-  id: 21
-  email: windowslive-user@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: windowsliveuser
-  data_public: true
-  auth_provider: windowslive
-  auth_uid: 123456789
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-github_user:
-  id: 22
-  email: github-user@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: githubuser
-  data_public: true
-  auth_provider: github
-  auth_uid: 123456789
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
-
-first_gravatar_user:
-  id: 23
-  email: g1@OpenStreetMap.org
-  new_email: new_g1@OpenStreetMap.org
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: gravatar1
-  data_public: true
-  description: some test description
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  creation_ip: "1.2.3.4"
-
-second_gravatar_user:
-  id: 24
-  email: g2@OpenStreetMap.org
-  new_email: new_g2@OpenStreetMap.org
-  image_use_gravatar: true
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: gravatar2
-  data_public: true
-  description: some test description
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  creation_ip: "1.2.3.4"
-
-wikipedia_user:
-  id: 25
-  email: wikipedia-user@example.com
-  status: active
-  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
-  creation_time: "2008-05-01 01:23:45"
-  display_name: wikipediauser
-  data_public: true
-  auth_provider: wikipedia
-  auth_uid: 123456789
-  terms_agreed: "2010-01-01 11:22:33"
-  terms_seen: true
-  languages: en
diff --git a/test/fixtures/way_nodes.yml b/test/fixtures/way_nodes.yml
deleted file mode 100644 (file)
index 51bf4b8..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-t1a:
-  way_id: 1
-  node_id: 3
-  sequence_id: 1
-  version: 1
-  
-t2:
-  way_id: 2
-  node_id: 3
-  sequence_id: 1
-  version: 1
-
-t3:
-  way_id: 3
-  node_id: 3
-  sequence_id: 1
-  version: 1
-
-w4_v1_n1:
-  way_id: 4
-  node_id: 3
-  sequence_id: 1
-  version: 1
-
-w4_v1_n2:
-  way_id: 4
-  node_id: 4
-  sequence_id: 2
-  version: 1
-
-w4_v2_n1:
-  way_id: 4
-  node_id: 15
-  sequence_id: 1
-  version: 2
-
-w4_v2_n2:
-  way_id: 4
-  node_id: 3
-  sequence_id: 2
-  version: 2
-
-w4_v2_n3:
-  way_id: 4
-  node_id: 4
-  sequence_id: 3
-  version: 2
-
-w4_v3_n1:
-  way_id: 4
-  node_id: 15
-  sequence_id: 1
-  version: 3
-
-w4_v3_n2:
-  way_id: 4
-  node_id: 3
-  sequence_id: 2
-  version: 3
-
-w4_v4_n1:
-  way_id: 4
-  node_id: 15
-  sequence_id: 1
-  version: 4
-
-w5_n1:
-  way_id: 5
-  node_id: 4
-  sequence_id: 1
-  version: 1
-
-w5_n2:
-  way_id: 5
-  node_id: 4
-  sequence_id: 2
-  version: 1
-
-w6_v1_n1:
-  way_id: 6
-  node_id: 3
-  sequence_id: 1
-  version: 1
-
-w6_v1_n2:
-  way_id: 6
-  node_id: 2
-  sequence_id: 2
-  version: 1
-
-w6_v2_n1:
-  way_id: 6
-  node_id: 3
-  sequence_id: 1
-  version: 2
-
-w6_v2_n2:
-  way_id: 6
-  node_id: 2
-  sequence_id: 2
-  version: 2
-
-w6_v3_n1:
-  way_id: 6
-  node_id: 3
-  sequence_id: 1
-  version: 3
-
-w6_v3_n2:
-  way_id: 6
-  node_id: 2
-  sequence_id: 2
-  version: 3
-
-w6_v4_n1:
-  way_id: 6
-  node_id: 3
-  sequence_id: 1
-  version: 4
-
-w6_v4_n2:
-  way_id: 6
-  node_id: 2
-  sequence_id: 2
-  version: 4
-
-w6_v4_n3:
-  way_id: 6
-  node_id: 4
-  sequence_id: 3
-  version: 4
-
-w7_v1_n1:
-  way_id: 7
-  node_id: 2
-  sequence_id: 1
-  version: 1
-
-w7_v1_n2:
-  way_id: 7
-  node_id: 6
-  sequence_id: 2
-  version: 1
-
-w7_v2_n1:
-  way_id: 7
-  node_id: 4
-  sequence_id: 1
-  version: 2
-
-w7_v2_n2:
-  way_id: 7
-  node_id: 15
-  sequence_id: 2
-  version: 2
-
-w7_v2_n3:
-  way_id: 7
-  node_id: 6
-  sequence_id: 3
-  version: 2
diff --git a/test/fixtures/ways.yml b/test/fixtures/ways.yml
deleted file mode 100644 (file)
index 94fd5ae..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-visible_way:
-  way_id: 1
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-invisible_way:
-  way_id: 2
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: false
-  version: 1
-
-used_way:
-  way_id: 3
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-way_with_versions_v1:
-  way_id: 4
-  changeset_id: 4
-  timestamp: 2008-01-01 00:01:00
-  visible: true
-  version: 1
-
-way_with_versions_v2:
-  way_id: 4
-  changeset_id: 4
-  timestamp: 2008-01-01 00:02:00
-  visible: true
-  version: 2
-
-way_with_versions_v3:
-  way_id: 4
-  changeset_id: 4
-  timestamp: 2008-01-01 00:03:00
-  visible: true
-  version: 3
-
-way_with_versions_v4:
-  way_id: 4
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:00
-  visible: true
-  version: 4
-
-way_with_duplicate_nodes:
-  way_id: 5
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-way_with_redacted_versions_v1:
-  way_id: 6
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:10
-  visible: true
-  version: 1
-
-way_with_redacted_versions_v2:
-  way_id: 6
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:11
-  visible: true
-  version: 2
-  redaction_id: 1
-
-way_with_redacted_versions_v3:
-  way_id: 6
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:12
-  visible: true
-  version: 3
-  redaction_id: 1
-
-way_with_redacted_versions_v4:
-  way_id: 6
-  changeset_id: 4
-  timestamp: 2008-01-01 00:04:13
-  visible: true
-  version: 4
-
-way_with_multiple_nodes_v1:
-  way_id: 7
-  changeset_id: 2
-  timestamp: 2007-01-01 00:00:00
-  visible: true
-  version: 1
-
-way_with_multiple_nodes_v2:
-  way_id: 7
-  changeset_id: 4
-  timestamp: 2008-01-01 00:00:00
-  visible: true
-  version: 2
index 0cb1b5ad908fd2f367e462f936d39a8860032b83..720113e65d7310081febc35fcf182ba2e3163c64 100644 (file)
@@ -10,7 +10,7 @@ class ApplicationHelperTest < ActionView::TestCase
   end
 
   def test_linkify
-    %w(http://example.com/test ftp://example.com/test https://example.com/test).each do |link|
+    %w[http://example.com/test ftp://example.com/test https://example.com/test].each do |link|
       text = "Test #{link} is made into a link"
 
       html = linkify(text)
@@ -22,7 +22,7 @@ class ApplicationHelperTest < ActionView::TestCase
       assert_dom_equal "Test <a href=\"#{link}\" rel=\"nofollow\">#{link}</a> is made into a link", html
     end
 
-    %w(test@example.com mailto:test@example.com).each do |link|
+    %w[test@example.com mailto:test@example.com].each do |link|
       text = "Test #{link} is not made into a link"
 
       html = linkify(text)
index 62aa73f94833489d458547c54e874c545fd4eb87..277433356a0622786e2c3ed3bb8ec1f741507dbd 100644 (file)
@@ -6,8 +6,6 @@ class BrowseHelperTest < ActionView::TestCase
   include ERB::Util
   include ApplicationHelper
 
-  api_fixtures
-
   def setup
     I18n.locale = "en"
   end
@@ -147,24 +145,24 @@ class BrowseHelperTest < ActionView::TestCase
 
     tags = icon_tags(node)
     assert_equal 3, tags.count
-    assert tags.include?(%w(building yes))
-    assert tags.include?(%w(tourism museum))
-    assert tags.include?(%w(shop gift))
+    assert tags.include?(%w[building yes])
+    assert tags.include?(%w[tourism museum])
+    assert tags.include?(%w[shop gift])
 
     add_old_tags_selection(node_v2)
     add_old_tags_selection(node_v1)
 
     tags = icon_tags(node_v2)
     assert_equal 3, tags.count
-    assert tags.include?(%w(building yes))
-    assert tags.include?(%w(tourism museum))
-    assert tags.include?(%w(shop gift))
+    assert tags.include?(%w[building yes])
+    assert tags.include?(%w[tourism museum])
+    assert tags.include?(%w[shop gift])
 
     tags = icon_tags(node_v1)
     assert_equal 3, tags.count
-    assert tags.include?(%w(building yes))
-    assert tags.include?(%w(tourism museum))
-    assert tags.include?(%w(shop gift))
+    assert tags.include?(%w[building yes])
+    assert tags.include?(%w[tourism museum])
+    assert tags.include?(%w[shop gift])
   end
 
   def test_wiki_link
index 523313eaf64f36e71fc2b38f54f6dc7772f472a8..7d83554303e5f5e856c9b841be83ee4ee9118896 100644 (file)
@@ -1,4 +1,5 @@
 # coding: utf-8
+
 require "test_helper"
 
 class TitleHelperTest < ActionView::TestCase
index f5d235d95d03ab03c0fdda4b7bee22f5f03af848..83325657caeec88ee914378d391ad9fc30232ddf 100644 (file)
@@ -1,46 +1,46 @@
 require "test_helper"
 
 class ClientApplicationsTest < ActionDispatch::IntegrationTest
-  fixtures :users
-
   ##
   # run through the procedure of creating a client application and checking
   # that it shows up on the user's account page.
   def test_create_application
+    user = create(:user)
+
     get "/login"
     assert_response :redirect
     assert_redirected_to "controller" => "user", "action" => "login", "cookie_test" => "true"
     follow_redirect!
     assert_response :success
-    post "/login", "username" => "test@example.com", "password" => "test", :referer => "/user/test2"
+    post "/login", "username" => user.email, "password" => "test", :referer => "/user/#{URI.encode(user.display_name)}"
     assert_response :redirect
     follow_redirect!
     assert_response :success
     assert_template "user/view"
-    get "/user/test2/account"
+    get "/user/#{URI.encode(user.display_name)}/account"
     assert_response :success
     assert_template "user/account"
 
     # check that the form to allow new client application creations exists
     assert_in_heading do
-      assert_select "ul.secondary-actions li a[href='/user/test2/oauth_clients']"
+      assert_select "ul.secondary-actions li a[href='/user/#{URI.encode(user.display_name)}/oauth_clients']"
     end
 
     # now we follow the link to the oauth client list
-    get "/user/test2/oauth_clients"
+    get "/user/#{URI.encode(user.display_name)}/oauth_clients"
     assert_response :success
     assert_in_body do
-      assert_select "a[href='/user/test2/oauth_clients/new']"
+      assert_select "a[href='/user/#{URI.encode(user.display_name)}/oauth_clients/new']"
     end
 
     # now we follow the link to the new oauth client page
-    get "/user/test2/oauth_clients/new"
+    get "/user/#{URI.encode(user.display_name)}/oauth_clients/new"
     assert_response :success
     assert_in_heading do
       assert_select "h1", "Register a new application"
     end
     assert_in_body do
-      assert_select "form[action='/user/test2/oauth_clients']" do
+      assert_select "form[action='/user/#{URI.encode(user.display_name)}/oauth_clients']" do
         [:name, :url, :callback_url, :support_url].each do |inp|
           assert_select "input[name=?]", "client_application[#{inp}]"
         end
@@ -50,10 +50,10 @@ class ClientApplicationsTest < ActionDispatch::IntegrationTest
       end
     end
 
-    post "/user/test2/oauth_clients",       "client_application[name]" => "My New App",
-                                            "client_application[url]" => "http://my.new.app.org/",
-                                            "client_application[callback_url]" => "http://my.new.app.org/callback",
-                                            "client_application[support_url]" => "http://my.new.app.org/support"
+    post "/user/#{URI.encode(user.display_name)}/oauth_clients", "client_application[name]" => "My New App",
+                                                                 "client_application[url]" => "http://my.new.app.org/",
+                                                                 "client_application[callback_url]" => "http://my.new.app.org/callback",
+                                                                 "client_application[support_url]" => "http://my.new.app.org/support"
     assert_response :redirect
     follow_redirect!
     assert_response :success
@@ -61,7 +61,7 @@ class ClientApplicationsTest < ActionDispatch::IntegrationTest
     assert_equal "Registered the information successfully", flash[:notice]
 
     # now go back to the account page and check its listed under this user
-    get "/user/test2/oauth_clients"
+    get "/user/#{URI.encode(user.display_name)}/oauth_clients"
     assert_response :success
     assert_template "oauth_clients/index"
     assert_in_body { assert_select "div>a", "My New App" }
index fffe83accdd191cc6a929d20e9ced9209ed2a313..c5e0d0ae3d0be8388704b1634822137eb9946a1d 100644 (file)
@@ -20,7 +20,7 @@ class PageLocaleTest < ActionDispatch::IntegrationTest
     assert_select "html[lang=?]", "en"
 
     get "/diary/new", {}, { "HTTP_ACCEPT_LANGUAGE" => "fr, en" }
-    assert_equal %w(fr en), User.find(user.id).languages
+    assert_equal %w[fr en], User.find(user.id).languages
     assert_select "html[lang=?]", "fr"
   end
 
index 5dbcaa0b413bea1ce52f5a94a10dfef7cc8c5162..bedb1c69f39a398313d08a4c1fcb3eccc7249088 100644 (file)
@@ -1,11 +1,11 @@
 require "test_helper"
 
 class UserChangesetCommentsTest < ActionDispatch::IntegrationTest
-  fixtures :users, :changesets
-
   # Test 'log in to comment' message for nonlogged in user
   def test_log_in_message
-    get "/changeset/#{changesets(:normal_user_closed_change).id}"
+    changeset = create(:changeset, :closed)
+
+    get "/changeset/#{changeset.id}"
     assert_response :success
 
     assert_select "div#content" do
@@ -21,15 +21,18 @@ class UserChangesetCommentsTest < ActionDispatch::IntegrationTest
 
   # Test if the form is shown
   def test_displaying_form
+    user = create(:user)
+    changeset = create(:changeset, :closed)
+
     get_via_redirect "/login"
     # We should now be at the login page
     assert_response :success
     assert_template "user/login"
     # We can now login
-    post "/login", "username" => "test@openstreetmap.org", "password" => "test"
+    post "/login", "username" => user.email, "password" => "test"
     assert_response :redirect
 
-    get "/changeset/#{changesets(:normal_user_closed_change).id}"
+    get "/changeset/#{changeset.id}"
 
     assert_response :success
     assert_template "browse/changeset"
index 93e55939cc140fb024a33d3f2851e1b68e21c0c2..600c65a5483c2f796c13cb28b03ddc5588e6dd11 100644 (file)
@@ -626,7 +626,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
         follow_redirect!
         assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "github", :origin => "/user/new")
+        assert_redirected_to auth_success_path(:provider => "github")
         follow_redirect!
         assert_response :redirect
         assert_redirected_to "/user/terms"
@@ -657,7 +657,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
         follow_redirect!
         assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "github", :origin => "/user/new")
+        assert_redirected_to auth_success_path(:provider => "github")
         follow_redirect!
         assert_response :redirect
         assert_redirected_to auth_failure_path(:strategy => "github", :message => "connection_failed", :origin => "/user/new")
@@ -687,7 +687,7 @@ class UserCreationTest < ActionDispatch::IntegrationTest
         assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
         follow_redirect!
         assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "github", :origin => "/user/new")
+        assert_redirected_to auth_success_path(:provider => "github")
         follow_redirect!
         assert_response :redirect
         assert_redirected_to "/user/terms"
index 55e3bce017844c79c76c3a6e09fc759276a97cb0..e6d4327fd08c0ee0054963ac128786d336fef67b 100644 (file)
@@ -1,17 +1,17 @@
 require "test_helper"
 
 class UserDiariesTest < ActionDispatch::IntegrationTest
-  fixtures :users
-
   # Test the creation of a diary entry, making sure that you are redirected to
   # login page when not logged in
   def test_showing_create_diary_entry
+    user = create(:user)
+
     get_via_redirect "/diary/new"
     # We should now be at the login page
     assert_response :success
     assert_template "user/login"
     # We can now login
-    post "/login", "username" => "test@openstreetmap.org", "password" => "test", :referer => "/diary/new"
+    post "/login", "username" => user.email, "password" => "test", :referer => "/diary/new"
     assert_response :redirect
     # print @response.body
     # Check that there is some payload alerting the user to the redirect
index 0470ad8424965ad683f79f4f1cb8c6898b4a7629..337e59059b019443b62fa11f31f72d4637bbfd20 100644 (file)
@@ -775,7 +775,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest
     assert_template "user/login"
     get auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
     assert_response :redirect
-    assert_redirected_to auth_success_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
+    assert_redirected_to auth_success_path(:provider => "github")
     follow_redirect!
     assert_response :redirect
     follow_redirect!
@@ -795,7 +795,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest
     assert_template "user/login"
     get auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
     assert_response :redirect
-    assert_redirected_to auth_success_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
+    assert_redirected_to auth_success_path(:provider => "github")
     follow_redirect!
     assert_response :redirect
     assert_redirected_to auth_failure_path(:strategy => "github", :message => "connection_failed", :origin => "/login?referer=%2Fhistory")
@@ -819,7 +819,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest
     assert_template "user/login"
     get auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
     assert_response :redirect
-    assert_redirected_to auth_success_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
+    assert_redirected_to auth_success_path(:provider => "github")
     follow_redirect!
     assert_response :redirect
     assert_redirected_to auth_failure_path(:strategy => "github", :message => "invalid_credentials", :origin => "/login?referer=%2Fhistory")
@@ -843,7 +843,7 @@ class UserLoginTest < ActionDispatch::IntegrationTest
     assert_template "user/login"
     get auth_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
     assert_response :redirect
-    assert_redirected_to auth_success_path(:provider => "github", :origin => "/login?referer=%2Fhistory", :referer => "/history")
+    assert_redirected_to auth_success_path(:provider => "github")
     follow_redirect!
     assert_response :redirect
     follow_redirect!
index dc62531f532414ec885c9d72e8a3d5efc1b80716..52d0b83886f66164b88158394c0186658b180679 100644 (file)
@@ -19,20 +19,20 @@ class BoundingBoxTest < ActiveSupport::TestCase
     @max_lon = 3.0
     @max_lat = 4.0
 
-    @bad_positive_boundary_bbox  = %w(181,91,0,0 0,0,181,91)
-    @bad_negative_boundary_bbox  = %w(-181,-91,0,0 0,0,-181,-91)
-    @bad_big_bbox       = %w(-0.1,-0.1,1.1,1.1 10,10,11,11)
-    @bad_malformed_bbox = %w(-0.1 hello 10N2W10.1N2.1W)
-    @bad_lat_mixed_bbox  = %w(0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33)
-    @bad_lon_mixed_bbox  = %w(80,-0.1,70,0.1 54.34,0.24,54.33,0.25)
-    @bad_limit_bbox = %w(-180.1,-90,180,90 -180,-90.1,180,90 -180,-90,180.1,90 -180,-90,180,90.1)
-    @good_bbox = %w(-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0 -0.1,%20-0.1,%200.1,%200.1
-                    -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1)
-
-    @expand_min_lon_array = %w(2,10,10,10 1,10,10,10 0,10,10,10 -1,10,10,10 -2,10,10,10 -8,10,10,10)
-    @expand_min_lat_array = %w(10,2,10,10 10,1,10,10 10,0,10,10 10,-1,10,10 10,-2,10,10 10,-8,10,10)
-    @expand_max_lon_array = %w(-2,-2,-1,-2 -2,-2,0,-2 -2,-2,1,-2 -2,-2,2,-2)
-    @expand_max_lat_array = %w(-2,-2,-2,-1 -2,-2,-2,0 -2,-2,-2,1 -2,-2,-2,2)
+    @bad_positive_boundary_bbox  = %w[181,91,0,0 0,0,181,91]
+    @bad_negative_boundary_bbox  = %w[-181,-91,0,0 0,0,-181,-91]
+    @bad_big_bbox       = %w[-0.1,-0.1,1.1,1.1 10,10,11,11]
+    @bad_malformed_bbox = %w[-0.1 hello 10N2W10.1N2.1W]
+    @bad_lat_mixed_bbox  = %w[0,0.1,0.1,0 -0.1,80,0.1,70 0.24,54.34,0.25,54.33]
+    @bad_lon_mixed_bbox  = %w[80,-0.1,70,0.1 54.34,0.24,54.33,0.25]
+    @bad_limit_bbox = %w[-180.1,-90,180,90 -180,-90.1,180,90 -180,-90,180.1,90 -180,-90,180,90.1]
+    @good_bbox = %w[-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0 -0.1,%20-0.1,%200.1,%200.1
+                    -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1]
+
+    @expand_min_lon_array = %w[2,10,10,10 1,10,10,10 0,10,10,10 -1,10,10,10 -2,10,10,10 -8,10,10,10]
+    @expand_min_lat_array = %w[10,2,10,10 10,1,10,10 10,0,10,10 10,-1,10,10 10,-2,10,10 10,-8,10,10]
+    @expand_max_lon_array = %w[-2,-2,-1,-2 -2,-2,0,-2 -2,-2,1,-2 -2,-2,2,-2]
+    @expand_max_lat_array = %w[-2,-2,-2,-1 -2,-2,-2,0 -2,-2,-2,1 -2,-2,-2,2]
     @expand_min_lon_margin_response = [[2, 10, 10, 10], [-7, 10, 10, 10], [-7, 10, 10, 10], [-7, 10, 10, 10], [-7, 10, 10, 10], [-25, 10, 10, 10]]
     @expand_min_lat_margin_response = [[10, 2, 10, 10], [10, -7, 10, 10], [10, -7, 10, 10], [10, -7, 10, 10], [10, -7, 10, 10], [10, -25, 10, 10]]
     @expand_max_lon_margin_response = [[-2, -2, -1, -2], [-2, -2, 1, -2], [-2, -2, 1, -2], [-2, -2, 5, -2]]
@@ -151,7 +151,7 @@ class BoundingBoxTest < ActiveSupport::TestCase
 
   def test_good_bbox_boundaries
     @good_bbox.each do |bbox_string|
-      assert_nothing_raised(OSM::APIBadBoundingBox) { BoundingBox.from_s(bbox_string).check_boundaries }
+      assert_nothing_raised { BoundingBox.from_s(bbox_string).check_boundaries }
     end
   end
 
@@ -196,14 +196,14 @@ class BoundingBoxTest < ActiveSupport::TestCase
 
   def test_good_bbox_size
     @good_bbox.each do |bbox_string|
-      assert_nothing_raised(OSM::APIBadBoundingBox) { BoundingBox.from_s(bbox_string).check_size }
+      assert_nothing_raised { BoundingBox.from_s(bbox_string).check_size }
     end
   end
 
   def test_size_to_big
     @bad_big_bbox.each do |bbox_string|
       bbox = nil
-      assert_nothing_raised(OSM::APIBadBoundingBox) { bbox = BoundingBox.from_bbox_params(:bbox => bbox_string).check_boundaries }
+      assert_nothing_raised { bbox = BoundingBox.from_bbox_params(:bbox => bbox_string).check_boundaries }
       exception = assert_raise(OSM::APIBadBoundingBox) { bbox.check_size }
       assert_equal(@size_error_message, exception.message)
     end
index c18c2f3468537ad2d539adb78fe51cb1a05ff5bc..3ead036ebc9a56401b7c4d4dfbe330e775afdd26 100644 (file)
@@ -49,7 +49,7 @@ class I18nTest < ActiveSupport::TestCase
         end
       end
 
-      assert %w(ltr rtl).include?(I18n.t("html.dir", :locale => locale)), "html.dir must be ltr or rtl"
+      assert %w[ltr rtl].include?(I18n.t("html.dir", :locale => locale)), "html.dir must be ltr or rtl"
     end
   end
 
index 5ef0c1d93ee9de6fca964fdc5e383fff0dd13a00..a7eafbef53abae1d6d50f6425f62269ae93cca78 100644 (file)
@@ -2,8 +2,6 @@
 require "test_helper"
 
 class ChangesetCommentTest < ActiveSupport::TestCase
-  fixtures :changesets, :users
-
   # validations
   def test_does_not_accept_invalid_author
     comment = create(:changeset_comment)
@@ -39,8 +37,8 @@ class ChangesetCommentTest < ActiveSupport::TestCase
   end
 
   def test_body_valid
-    ok = %W(Name vergrößern foo\nbar
-            ルシステムにも対応します 輕觸搖晃的遊戲)
+    ok = %W[Name vergrößern foo\nbar
+            ルシステムにも対応します 輕觸搖晃的遊戲]
     bad = ["foo\x00bar", "foo\x08bar", "foo\x1fbar", "foo\x7fbar",
            "foo\ufffebar", "foo\uffffbar"]
 
index 90a8518b431bf1befe77dae90d260f9fe483e150..030614a1eeebe3e4e63e4e004b2524f5e6666811 100644 (file)
@@ -1,13 +1,13 @@
 require "test_helper"
 
 class ChangesetTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
+    changeset = create(:changeset)
+
     key = "k"
     (0..255).each do |i|
       tag = ChangesetTag.new
-      tag.changeset_id = 1
+      tag.changeset_id = changeset.id
       tag.k = key * i
       tag.v = "v"
       assert tag.valid?
@@ -15,10 +15,12 @@ class ChangesetTagTest < ActiveSupport::TestCase
   end
 
   def test_length_value_valid
+    changeset = create(:changeset)
+
     val = "v"
     (0..255).each do |i|
       tag = ChangesetTag.new
-      tag.changeset_id = 1
+      tag.changeset_id = changeset.id
       tag.k = "k"
       tag.v = val * i
       assert tag.valid?
index a5176fa8bf7a351d5cd2ce70cb6b9f1582637a4e..cdb1a8e85c409edab877b94ed42d9f5591be03a2 100644 (file)
@@ -64,10 +64,10 @@ class ChangesetTest < ActiveSupport::TestCase
   def test_from_xml_valid
     # Example taken from the Update section on the API_v0.6 docs on the wiki
     xml = "<osm><changeset><tag k=\"comment\" v=\"Just adding some streetnames and a restaurant\"/></changeset></osm>"
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Changeset.from_xml(xml, false)
     end
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Changeset.from_xml(xml, true)
     end
   end
index 08eeeeb17a3b3c7839245431a021469d1c7af962..b60b72ad18e6f0a3ccca2123e3d071ec742b2a33 100644 (file)
@@ -1,10 +1,4 @@
 require "test_helper"
 
 class FriendTest < ActiveSupport::TestCase
-  api_fixtures
-
-  def test_friend_count
-    create(:friend)
-    assert_equal 1, Friend.count
-  end
 end
index 9b2ef72c19125914afe87d0ea8f618df70a4ec5b..f6a6e3234c58e904f21ea7b8d0defbd1a99d78e8 100644 (file)
@@ -1,4 +1,5 @@
 # coding: utf-8
+
 require "test_helper"
 
 class LanguageTest < ActiveSupport::TestCase
index e2d87136e7ee419478ab2a5c4eb4dbb0db7783b1..0c0f0e3eb2b31e5e2eb09dd1090de5434055d911 100644 (file)
@@ -2,8 +2,6 @@
 require "test_helper"
 
 class MessageTest < ActiveSupport::TestCase
-  api_fixtures
-
   EURO = "\xe2\x82\xac".freeze # euro symbol
 
   def test_check_empty_message_fails
@@ -67,10 +65,8 @@ class MessageTest < ActiveSupport::TestCase
         # its OK to accept invalid UTF-8 as long as we return it unmodified.
         db_msg = msg.class.find(msg.id)
         assert_equal char, db_msg.title, "Database silently truncated message title"
-
       rescue ArgumentError => ex
         assert_equal ex.to_s, "invalid byte sequence in UTF-8"
-
       end
     end
   end
index f1d8750a0efa2cedd077ec000d122b9d426c7105..29eda2bffbd61a6217cd6854a128dca147d90573 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class NodeTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
     tag = create(:node_tag)
     (0..255).each do |i|
index cf60c84ec96afa42ade1affc6d15cc6d5a08548c..a68be4aa9a30283da86cd8f987748828699c96f8 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class NodeTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_node_too_far_north
     node = build(:node, :latitude => 90.01 * OldNode::SCALE)
     assert_equal false, node.valid?
@@ -168,7 +166,7 @@ class NodeTest < ActiveSupport::TestCase
     version = 1
     noid = "<osm><node lat='#{lat}' lon='#{lon}' changeset='#{changeset}' version='#{version}' /></osm>"
     # First try a create which doesn't need the id
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Node.from_xml(noid, true)
     end
     # Now try an update with no id, and make sure that it gives the appropriate exception
@@ -216,7 +214,7 @@ class NodeTest < ActiveSupport::TestCase
 
   def test_from_xml_no_version
     no_version = "<osm><node id='123' lat='23' lon='23' changeset='23' /></osm>"
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Node.from_xml(no_version, true)
     end
     message_update = assert_raise(OSM::APIBadXMLError) do
@@ -241,7 +239,7 @@ class NodeTest < ActiveSupport::TestCase
     id_list = ["", "0", "00", "0.0", "a"]
     id_list.each do |id|
       zero_id = "<osm><node id='#{id}' lat='12.3' lon='12.3' changeset='33' version='23' /></osm>"
-      assert_nothing_raised(OSM::APIBadUserInput) do
+      assert_nothing_raised do
         Node.from_xml(zero_id, true)
       end
       message_update = assert_raise(OSM::APIBadUserInput) do
index 2375ba9d4de2f08c0799be9785a35b41eae2c86d..6bda0ee7d363fb3cf7c74241399b376c36e5eb53 100644 (file)
@@ -2,11 +2,9 @@
 require "test_helper"
 
 class NoteCommentTest < ActiveSupport::TestCase
-  fixtures :users
-
   def test_event_valid
-    ok = %w(opened closed reopened commented hidden)
-    bad = %w(expropriated fubared)
+    ok = %w[opened closed reopened commented hidden]
+    bad = %w[expropriated fubared]
 
     ok.each do |event|
       note_comment = create(:note_comment)
@@ -22,8 +20,8 @@ class NoteCommentTest < ActiveSupport::TestCase
   end
 
   def test_body_valid
-    ok = %W(Name vergrößern foo\nbar
-            ルシステムにも対応します 輕觸搖晃的遊戲)
+    ok = %W[Name vergrößern foo\nbar
+            ルシステムにも対応します 輕觸搖晃的遊戲]
     bad = ["foo\x00bar", "foo\x08bar", "foo\x1fbar", "foo\x7fbar",
            "foo\ufffebar", "foo\uffffbar"]
 
index e3831b2c022fd4d8b9f70163cda58cca0ec44df5..0abd0136ee68760fc8aa72071ccb0d5e8c29c226 100644 (file)
@@ -2,11 +2,9 @@
 require "test_helper"
 
 class NoteTest < ActiveSupport::TestCase
-  fixtures :users
-
   def test_status_valid
-    ok = %w(open closed hidden)
-    bad = %w(expropriated fubared)
+    ok = %w[open closed hidden]
+    bad = %w[expropriated fubared]
 
     ok.each do |status|
       note = create(:note)
index 341019cca0d31f038ca2d4ce7f8a05076eb55b03..dd97278c132415ad50040705191d90dd87685161 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class OauthNonceTest < ActiveSupport::TestCase
-  api_fixtures
-
   ##
   # the nonce has only one property, that it is a unique pair of
   # string and timestamp.
index f49be9256660d94a7dad0392ab101b459bab9f2d..3f0867a8772cd9813b8c84a07b193a2da1aff91b 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class OldNodeTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
     tag = create(:old_node_tag)
     (0..255).each do |i|
index 5c27ef3ea57f63db34280dc52fa8585b546e81e8..58c70cc9c5fcba90aefe8b3316843a13c45452a0 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class OldRelationTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
     tag = create(:old_relation_tag)
     (0..255).each do |i|
index 3858fd1ac4b0a3a0672779156f57c76b0be1705f..62f5e720ba22383307dd1b8cbfa6e955cc6e1f0c 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class OldRelationTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_relation_tags
     old_relation_v1 = create(:old_relation, :version => 1)
     old_relation_v2 = create(:old_relation, :current_relation => old_relation_v1.current_relation, :version => 2)
index 9a258ffb91f76fbab187dba69a71d2649b3025a0..057bdf4f0dca4650a9f71d4be10081aa477c3029 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class OldWayTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
     tag = create(:old_way_tag)
     (0..255).each do |i|
index 16b5d336336e2e1d5d108b1de24cc00e7d04403f..c8f4a4480b0a70f59f611f42da9bde6004976668 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class OldWayTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_old_nodes
     old_way_v1 = create(:old_way, :version => 1)
     old_way_v2 = create(:old_way, :current_way => old_way_v1.current_way, :version => 2)
index 2e629867b6996e8ce960fdbd905fd3df68a06d9c..4196dea154d242cd675150748907f0f3c9786c30 100644 (file)
@@ -28,7 +28,7 @@ class RedactionTest < ActiveSupport::TestCase
     r = create(:redaction)
 
     assert_equal(false, node_v1.redacted?, "Expected node to not be redacted already.")
-    assert_nothing_raised(OSM::APICannotRedactError) do
+    assert_nothing_raised do
       node_v1.redact!(r)
     end
     assert_equal(true, node_v1.redacted?, "Expected node version 1 to be redacted after redact! call.")
index 2c03bc17ed71288eebe02d2fb6ff1826faad68bb..170b1977c423445aadc8eba97644848b30b9059d 100644 (file)
@@ -1,9 +1,4 @@
 require "test_helper"
 
 class RelationMemberTest < ActiveSupport::TestCase
-  api_fixtures
-
-  def test_relation_member_count
-    assert_equal 9, RelationMember.count
-  end
 end
index f221f78cc9fac44c112b82f03f904e8503104e17..3b4d2cdfcbcd5e0fc400a7ff74c745ae56c03db5 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class RelationTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
     tag = create(:relation_tag)
     (0..255).each do |i|
index b095024a64b8c23a771b7fa1a5132b2d0d905ef4..b06cbd9b85843be99ab930df7048f58092c989f8 100644 (file)
@@ -1,15 +1,9 @@
 require "test_helper"
 
 class RelationTest < ActiveSupport::TestCase
-  api_fixtures
-
-  def test_relation_count
-    assert_equal 8, Relation.count
-  end
-
   def test_from_xml_no_id
     noid = "<osm><relation version='12' changeset='23' /></osm>"
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Relation.from_xml(noid, true)
     end
     message = assert_raise(OSM::APIBadXMLError) do
@@ -32,7 +26,7 @@ class RelationTest < ActiveSupport::TestCase
 
   def test_from_xml_no_version
     no_version = "<osm><relation id='123' changeset='23' /></osm>"
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Relation.from_xml(no_version, true)
     end
     message_update = assert_raise(OSM::APIBadXMLError) do
@@ -45,7 +39,7 @@ class RelationTest < ActiveSupport::TestCase
     id_list = ["", "0", "00", "0.0", "a"]
     id_list.each do |id|
       zero_id = "<osm><relation id='#{id}' changeset='332' version='23' /></osm>"
-      assert_nothing_raised(OSM::APIBadUserInput) do
+      assert_nothing_raised do
         Relation.from_xml(zero_id, true)
       end
       message_update = assert_raise(OSM::APIBadUserInput) do
@@ -104,31 +98,45 @@ class RelationTest < ActiveSupport::TestCase
   end
 
   def test_relation_members
-    relation = current_relations(:relation_with_versions)
+    relation = create(:relation)
+    node = create(:node)
+    way = create(:way)
+    other_relation = create(:relation)
+    create(:relation_member, :relation => relation, :member => node, :member_role => "some node")
+    create(:relation_member, :relation => relation, :member => way, :member_role => "some way")
+    create(:relation_member, :relation => relation, :member => other_relation, :member_role => "some relation")
+
     members = Relation.find(relation.id).relation_members
     assert_equal 3, members.count
     assert_equal "some node", members[0].member_role
     assert_equal "Node", members[0].member_type
-    assert_equal 15, members[0].member_id
+    assert_equal node.id, members[0].member_id
     assert_equal "some way", members[1].member_role
     assert_equal "Way", members[1].member_type
-    assert_equal 4, members[1].member_id
+    assert_equal way.id, members[1].member_id
     assert_equal "some relation", members[2].member_role
     assert_equal "Relation", members[2].member_type
-    assert_equal 7, members[2].member_id
+    assert_equal other_relation.id, members[2].member_id
   end
 
   def test_relations
-    relation = current_relations(:relation_with_versions)
+    relation = create(:relation)
+    node = create(:node)
+    way = create(:way)
+    other_relation = create(:relation)
+    create(:relation_member, :relation => relation, :member => node, :member_role => "some node")
+    create(:relation_member, :relation => relation, :member => way, :member_role => "some way")
+    create(:relation_member, :relation => relation, :member => other_relation, :member_role => "some relation")
+
     members = Relation.find(relation.id).members
     assert_equal 3, members.count
-    assert_equal ["Node", 15, "some node"], members[0]
-    assert_equal ["Way", 4, "some way"], members[1]
-    assert_equal ["Relation", 7, "some relation"], members[2]
+    assert_equal ["Node", node.id, "some node"], members[0]
+    assert_equal ["Way", way.id, "some way"], members[1]
+    assert_equal ["Relation", other_relation.id, "some relation"], members[2]
   end
 
   def test_relation_tags
-    relation = current_relations(:relation_with_versions)
+    relation = create(:relation)
     taglist = create_list(:relation_tag, 2, :relation => relation)
 
     tags = Relation.find(relation.id).relation_tags.order(:k)
@@ -140,7 +148,7 @@ class RelationTest < ActiveSupport::TestCase
   end
 
   def test_tags
-    relation = current_relations(:relation_with_versions)
+    relation = create(:relation)
     taglist = create_list(:relation_tag, 2, :relation => relation)
 
     tags = Relation.find(relation.id).tags
@@ -151,19 +159,25 @@ class RelationTest < ActiveSupport::TestCase
   end
 
   def test_containing_relation_members
-    relation = current_relations(:used_relation)
+    relation = create(:relation)
+    super_relation = create(:relation)
+    create(:relation_member, :relation => super_relation, :member => relation)
+
     crm = Relation.find(relation.id).containing_relation_members.order(:relation_id)
     #    assert_equal 1, crm.size
-    assert_equal 1, crm.first.relation_id
+    assert_equal super_relation.id, crm.first.relation_id
     assert_equal "Relation", crm.first.member_type
     assert_equal relation.id, crm.first.member_id
-    assert_equal 1, crm.first.relation.id
+    assert_equal super_relation.id, crm.first.relation.id
   end
 
   def test_containing_relations
-    relation = current_relations(:used_relation)
+    relation = create(:relation)
+    super_relation = create(:relation)
+    create(:relation_member, :relation => super_relation, :member => relation)
+
     cr = Relation.find(relation.id).containing_relations.order(:id)
     assert_equal 1, cr.size
-    assert_equal 1, cr.first.id
+    assert_equal super_relation.id, cr.first.id
   end
 end
index 24ad419fa814353dbe0ed3f59d491e75fcc2075a..7bfed5a56287d551c98b373c08b8921a459f4ed5 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class RequestTokenTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_oob
     assert_equal true, RequestToken.new.oob?
     assert_equal true, RequestToken.new(:callback_url => "oob").oob?
index a2a45e203d51a139abea01ec3f03b7d7d2b9d0ff..57c136475bd13589d21592404e7f47bee640d32e 100644 (file)
@@ -4,9 +4,6 @@ require "test_helper"
 class UserTest < ActiveSupport::TestCase
   include Rails::Dom::Testing::Assertions::SelectorAssertions
 
-  api_fixtures
-  fixtures :user_roles
-
   def test_invalid_with_empty_attributes
     user = User.new
     assert !user.valid?
@@ -14,9 +11,9 @@ class UserTest < ActiveSupport::TestCase
     assert user.errors[:pass_crypt].any?
     assert user.errors[:display_name].any?
     assert user.errors[:email].any?
-    assert !user.errors[:home_lat].any?
-    assert !user.errors[:home_lon].any?
-    assert !user.errors[:home_zoom].any?
+    assert user.errors[:home_lat].none?
+    assert user.errors[:home_lon].none?
+    assert user.errors[:home_zoom].none?
   end
 
   def test_unique_email
@@ -48,10 +45,10 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_email_valid
-    ok = %w(a@s.com test@shaunmcdonald.me.uk hello_local@ping-d.ng
-            test_local@openstreetmap.org test-local@example.com)
-    bad = %w(hi ht@ n@ @.com help@.me.uk help"hi.me.uk も対@応します
-             輕觸搖晃的遊戲@ah.com も対応します@s.name)
+    ok = %w[a@s.com test@shaunmcdonald.me.uk hello_local@ping-d.ng
+            test_local@openstreetmap.org test-local@example.com]
+    bad = %w[hi ht@ n@ @.com help@.me.uk help"hi.me.uk も対@応します
+             輕觸搖晃的遊戲@ah.com も対応します@s.name]
 
     ok.each do |name|
       user = build(:user)
@@ -220,13 +217,13 @@ class UserTest < ActiveSupport::TestCase
 
     user = create(:user, :languages => ["en"])
     assert_equal ["en"], user.languages
-    user.languages = %w(de fr en)
-    assert_equal %w(de fr en), user.languages
-    user.languages = %w(fr de sl)
+    user.languages = %w[de fr en]
+    assert_equal %w[de fr en], user.languages
+    user.languages = %w[fr de sl]
     assert_equal "de", user.preferred_language
-    assert_equal %w(fr de sl), user.preferred_languages.map(&:to_s)
-    user = create(:user, :languages => %w(en de))
-    assert_equal %w(en de), user.languages
+    assert_equal %w[fr de sl], user.preferred_languages.map(&:to_s)
+    user = create(:user, :languages => %w[en de])
+    assert_equal %w[en de], user.languages
   end
 
   def test_visible?
index 1e4508c3f24f7243cb046fac5ad2f9243bf91b45..04422da72696f82d31063eee5a1cc04970c54e28 100644 (file)
@@ -1,9 +1,4 @@
 require "test_helper"
 
 class WayNodeTest < ActiveSupport::TestCase
-  api_fixtures
-
-  def test_way_nodes_count
-    assert_equal 9, WayNode.count
-  end
 end
index ae8be73b3f5183587e3e036b7e47f99546a5aac6..cde5bd4158d283ddee959c2024133a6fbf01c221 100644 (file)
@@ -1,8 +1,6 @@
 require "test_helper"
 
 class WayTagTest < ActiveSupport::TestCase
-  api_fixtures
-
   def test_length_key_valid
     tag = create(:way_tag)
     (0..255).each do |i|
index 34135304665804db9c0c53a1a834e9dfb693fc23..6abf99c575948824cc5cfd38abd674dbbb6ae8ae 100644 (file)
@@ -1,14 +1,6 @@
 require "test_helper"
 
 class WayTest < ActiveSupport::TestCase
-  api_fixtures
-
-  # Check that we have the correct number of currnet ways in the db
-  # This will need to updated whenever the current_ways.yml is updated
-  def test_db_count
-    assert_equal 7, Way.count
-  end
-
   def test_bbox
     node = create(:node)
     visible_way = create(:way)
@@ -35,7 +27,6 @@ class WayTest < ActiveSupport::TestCase
     node_c = create(:node)
     way = create(:way_with_nodes, :nodes_count => 1)
     # Take one of the current ways and add nodes to it until we are near the limit
-    way = Way.find(current_ways(:visible_way).id)
     assert way.valid?
     # it already has 1 node
     1.upto(MAX_NUMBER_OF_WAY_NODES / 2) do
@@ -51,7 +42,7 @@ class WayTest < ActiveSupport::TestCase
 
   def test_from_xml_no_id
     noid = "<osm><way version='12' changeset='23' /></osm>"
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Way.from_xml(noid, true)
     end
     message = assert_raise(OSM::APIBadXMLError) do
@@ -74,7 +65,7 @@ class WayTest < ActiveSupport::TestCase
 
   def test_from_xml_no_version
     no_version = "<osm><way id='123' changeset='23' /></osm>"
-    assert_nothing_raised(OSM::APIBadXMLError) do
+    assert_nothing_raised do
       Way.from_xml(no_version, true)
     end
     message_update = assert_raise(OSM::APIBadXMLError) do
@@ -87,7 +78,7 @@ class WayTest < ActiveSupport::TestCase
     id_list = ["", "0", "00", "0.0", "a"]
     id_list.each do |id|
       zero_id = "<osm><way id='#{id}' changeset='33' version='23' /></osm>"
-      assert_nothing_raised(OSM::APIBadUserInput) do
+      assert_nothing_raised do
         Way.from_xml(zero_id, true)
       end
       message_update = assert_raise(OSM::APIBadUserInput) do
@@ -146,34 +137,46 @@ class WayTest < ActiveSupport::TestCase
   end
 
   def test_way_nodes
-    way = current_ways(:way_with_multiple_nodes)
+    way = create(:way)
+    node1 = create(:way_node, :way => way, :sequence_id => 1).node
+    node2 = create(:way_node, :way => way, :sequence_id => 2).node
+    node3 = create(:way_node, :way => way, :sequence_id => 3).node
+
     nodes = Way.find(way.id).way_nodes
     assert_equal 3, nodes.count
-    assert_equal 4, nodes[0].node_id
-    assert_equal 15, nodes[1].node_id
-    assert_equal 11, nodes[2].node_id
+    assert_equal node1.id, nodes[0].node_id
+    assert_equal node2.id, nodes[1].node_id
+    assert_equal node3.id, nodes[2].node_id
   end
 
   def test_nodes
-    way = current_ways(:way_with_multiple_nodes)
+    way = create(:way)
+    node1 = create(:way_node, :way => way, :sequence_id => 1).node
+    node2 = create(:way_node, :way => way, :sequence_id => 2).node
+    node3 = create(:way_node, :way => way, :sequence_id => 3).node
+
     nodes = Way.find(way.id).nodes
     assert_equal 3, nodes.count
-    assert_equal 4, nodes[0].id
-    assert_equal 15, nodes[1].id
-    assert_equal 11, nodes[2].id
+    assert_equal node1.id, nodes[0].id
+    assert_equal node2.id, nodes[1].id
+    assert_equal node3.id, nodes[2].id
   end
 
   def test_nds
-    way = current_ways(:way_with_multiple_nodes)
+    way = create(:way)
+    node1 = create(:way_node, :way => way, :sequence_id => 1).node
+    node2 = create(:way_node, :way => way, :sequence_id => 2).node
+    node3 = create(:way_node, :way => way, :sequence_id => 3).node
+
     nodes = Way.find(way.id).nds
     assert_equal 3, nodes.count
-    assert_equal 4, nodes[0]
-    assert_equal 15, nodes[1]
-    assert_equal 11, nodes[2]
+    assert_equal node1.id, nodes[0]
+    assert_equal node2.id, nodes[1]
+    assert_equal node3.id, nodes[2]
   end
 
   def test_way_tags
-    way = current_ways(:way_with_versions)
+    way = create(:way)
     taglist = create_list(:way_tag, 2, :way => way)
     tags = Way.find(way.id).way_tags.order(:k)
     assert_equal taglist.count, tags.count
@@ -184,7 +187,7 @@ class WayTest < ActiveSupport::TestCase
   end
 
   def test_tags
-    way = current_ways(:way_with_versions)
+    way = create(:way)
     taglist = create_list(:way_tag, 2, :way => way)
     tags = Way.find(way.id).tags
     assert_equal taglist.count, tags.count
@@ -194,19 +197,25 @@ class WayTest < ActiveSupport::TestCase
   end
 
   def test_containing_relation_members
-    way = current_ways(:used_way)
+    way = create(:way)
+    relation = create(:relation)
+    create(:relation_member, :relation => relation, :member => way)
+
     crm = Way.find(way.id).containing_relation_members.order(:relation_id)
     #    assert_equal 1, crm.size
-    assert_equal 1, crm.first.relation_id
+    assert_equal relation.id, crm.first.relation_id
     assert_equal "Way", crm.first.member_type
     assert_equal way.id, crm.first.member_id
-    assert_equal 1, crm.first.relation.id
+    assert_equal relation.id, crm.first.relation.id
   end
 
   def test_containing_relations
-    way = current_ways(:used_way)
+    way = create(:way)
+    relation = create(:relation)
+    create(:relation_member, :relation => relation, :member => way)
+
     cr = Way.find(way.id).containing_relations.order(:id)
     assert_equal 1, cr.size
-    assert_equal 1, cr.first.id
+    assert_equal relation.id, cr.first.id
   end
 end
index dba005145483604835b45f477f22388604dee6b7..d41a369f88ebb3eaf6f5d0d1cfc3fabc1a967800 100644 (file)
@@ -5,49 +5,11 @@ ENV["RAILS_ENV"] = "test"
 require File.expand_path("../../config/environment", __FILE__)
 require "rails/test_help"
 require "webmock/minitest"
-load "composite_primary_keys/fixtures.rb"
 
 module ActiveSupport
   class TestCase
     include FactoryGirl::Syntax::Methods
 
-    # Load standard fixtures needed to test API methods
-    def self.api_fixtures
-      # print "setting up the api_fixtures"
-      fixtures :users, :user_roles
-      fixtures :changesets
-
-      fixtures :current_nodes, :nodes
-      set_fixture_class :current_nodes => Node
-      set_fixture_class :nodes => OldNode
-
-      fixtures :current_ways
-      set_fixture_class :current_ways => Way
-
-      fixtures :current_way_nodes
-      set_fixture_class :current_way_nodes => WayNode
-
-      fixtures :ways
-      set_fixture_class :ways => OldWay
-
-      fixtures :way_nodes
-      set_fixture_class :way_nodes => OldWayNode
-
-      fixtures :current_relations
-      set_fixture_class :current_relations => Relation
-
-      fixtures :current_relation_members
-      set_fixture_class :current_relation_members => RelationMember
-
-      fixtures :relations
-      set_fixture_class :relations => OldRelation
-
-      fixtures :relation_members
-      set_fixture_class :relation_members => OldRelationMember
-
-      fixtures :redactions
-    end
-
     ##
     # takes a block which is executed in the context of a different
     # ActionController instance. this is used so that code can call methods