]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/2023'
authorTom Hughes <tom@compton.nu>
Sat, 3 Nov 2018 14:34:18 +0000 (14:34 +0000)
committerTom Hughes <tom@compton.nu>
Sat, 3 Nov 2018 14:34:18 +0000 (14:34 +0000)
33 files changed:
.rubocop_todo.yml
.travis.yml
Gemfile
Gemfile.lock
app/controllers/changeset_controller.rb
app/controllers/diary_entry_controller.rb
app/controllers/messages_controller.rb
app/controllers/notes_controller.rb
app/controllers/users_controller.rb
app/mailers/notifier.rb [moved from app/models/notifier.rb with 100% similarity]
app/models/concerns/geo_record.rb [moved from lib/geo_record.rb with 89% similarity]
app/models/concerns/not_redactable.rb [moved from lib/not_redactable.rb with 78% similarity]
app/models/concerns/object_metadata.rb [moved from lib/object_metadata.rb with 97% similarity]
config/environments/production.rb
config/environments/test.rb
config/initializers/r2.rb
config/locales/da.yml
config/locales/fa.yml
config/locales/nl.yml
config/locales/th.yml
db/migrate/20181031113522_create_delayed_jobs.rb [new file with mode: 0644]
db/structure.sql
lib/classic_pagination/pagination.rb
lib/diff_reader.rb
lib/tasks/auto_annotate_models.rake
test/controllers/amf_controller_test.rb
test/controllers/changeset_controller_test.rb
test/controllers/diary_entry_controller_test.rb
test/controllers/messages_controller_test.rb
test/controllers/notes_controller_test.rb
test/controllers/users_controller_test.rb
test/integration/user_creation_test.rb
test/test_helper.rb

index 8fc701cb3b7f9797cf67eba47fad086086d4b1a6..7d2c583eb73c4ebff19e52adc3367559e83757c2 100644 (file)
@@ -19,7 +19,7 @@ Lint/AssignmentInCondition:
     - 'app/helpers/application_helper.rb'
     - 'app/helpers/browse_helper.rb'
     - 'app/models/client_application.rb'
-    - 'app/models/notifier.rb'
+    - 'app/mailers/notifier.rb'
     - 'lib/nominatim.rb'
     - 'lib/osm.rb'
     - 'script/deliver-message'
@@ -32,7 +32,7 @@ Lint/HandleExceptions:
 
 # Offense count: 692
 Metrics/AbcSize:
-  Max: 280
+  Max: 283
 
 # Offense count: 40
 # Configuration parameters: CountComments, ExcludedMethods.
@@ -48,7 +48,7 @@ Metrics/BlockNesting:
 # Offense count: 63
 # Configuration parameters: CountComments.
 Metrics/ClassLength:
-  Max: 1795
+  Max: 1801
 
 # Offense count: 72
 Metrics/CyclomaticComplexity:
index 8ce7f5f305b317e36df70fe404bd68a2a87e110a..3b56d2b4b666af3b77fb9df25838a6259b0def03 100644 (file)
@@ -1,7 +1,7 @@
 sudo: false
 language: ruby
 rvm:
-  - 2.3.1
+  - 2.3.3
 cache: bundler
 addons:
   postgresql: 9.5
diff --git a/Gemfile b/Gemfile
index b559027c2062fc1625604bc679417dca36e28831..05bfc6cbd3e6d14ea36f335a468cf6767038de70 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -47,6 +47,7 @@ gem "image_optim_rails"
 gem "actionpack-page_caching"
 gem "cancancan"
 gem "composite_primary_keys", "~> 11.0.0"
+gem "delayed_job_active_record"
 gem "dynamic_form"
 gem "http_accept_language", "~> 2.0.0"
 gem "i18n-js", ">= 3.0.0"
index cd94df5e102759d260642e7a06f226a667655a1d..72f769929033edf0790dbfe20be7567cfda32b40 100644 (file)
@@ -21,7 +21,7 @@ GEM
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionpack-page_caching (1.1.0)
+    actionpack-page_caching (1.1.1)
       actionpack (>= 4.0.0, < 6)
     actionview (5.2.0)
       activesupport (= 5.2.0)
@@ -98,8 +98,13 @@ GEM
     crack (0.4.3)
       safe_yaml (~> 1.0.0)
     crass (1.0.4)
-    dalli (2.7.8)
+    dalli (2.7.9)
     debug_inspector (0.0.3)
+    delayed_job (4.1.5)
+      activesupport (>= 3.0, < 5.3)
+    delayed_job_active_record (4.1.3)
+      activerecord (>= 3.0, < 5.3)
+      delayed_job (>= 3.0, < 5)
     docile (1.3.1)
     dynamic_form (1.1.4)
     erubi (1.7.1)
@@ -110,7 +115,7 @@ GEM
     factory_bot_rails (4.11.1)
       factory_bot (~> 4.11.1)
       railties (>= 3.0.0)
-    faraday (0.12.2)
+    faraday (0.15.3)
       multipart-post (>= 1.2, < 3)
     ffi (1.9.25)
     fspath (3.1.0)
@@ -123,9 +128,9 @@ GEM
     http_accept_language (2.0.5)
     i18n (0.9.5)
       concurrent-ruby (~> 1.0)
-    i18n-js (3.0.11)
+    i18n-js (3.1.0)
       i18n (>= 0.6.6, < 2)
-    image_optim (0.26.2)
+    image_optim (0.26.3)
       exifr (~> 1.2, >= 1.2.2)
       fspath (~> 3.0)
       image_size (>= 1.5, < 3)
@@ -161,14 +166,14 @@ GEM
       rb-inotify (~> 0.9, >= 0.9.7)
       ruby_dep (~> 1.2)
     logstash-event (1.2.02)
-    logstasher (1.2.2)
+    logstasher (1.3.0)
       activesupport (>= 4.0)
       logstash-event (~> 1.2.0)
       request_store
-    loofah (2.2.2)
+    loofah (2.2.3)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
-    mail (2.7.0)
+    mail (2.7.1)
       mini_mime (>= 0.1.1)
     marcel (0.3.3)
       mimemagic (~> 0.3.2)
@@ -185,19 +190,19 @@ GEM
     multi_xml (0.6.0)
     multipart-post (2.0.0)
     nio4r (2.3.1)
-    nokogiri (1.8.4)
+    nokogiri (1.8.5)
       mini_portile2 (~> 2.3.0)
-    nokogumbo (1.5.0)
-      nokogiri
+    nokogumbo (2.0.0)
+      nokogiri (~> 1.8, >= 1.8.4)
     oauth (0.4.7)
     oauth-plugin (0.5.1)
       multi_json
       oauth (~> 0.4.4)
       oauth2 (>= 0.5.0)
       rack
-    oauth2 (1.4.0)
-      faraday (>= 0.8, < 0.13)
-      jwt (~> 1.0)
+    oauth2 (1.4.1)
+      faraday (>= 0.8, < 0.16.0)
+      jwt (>= 1.0, < 3.0)
       multi_json (~> 1.3)
       multi_xml (~> 0.5)
       rack (>= 1.2, < 3)
@@ -236,7 +241,7 @@ GEM
       mimemagic (~> 0.3.0)
       terrapin (~> 0.6.0)
     parallel (1.12.1)
-    parser (2.5.1.2)
+    parser (2.5.3.0)
       ast (~> 2.4.0)
     pg (0.21.0)
     poltergeist (1.18.1)
@@ -244,8 +249,8 @@ GEM
       cliver (~> 0.3.1)
       websocket-driver (>= 0.2.0)
     powerpack (0.1.2)
-    progress (3.4.0)
-    psych (3.0.2)
+    progress (3.5.0)
+    psych (3.0.3)
     public_suffix (3.0.3)
     puma (3.12.0)
     quad_tile (1.0.1)
@@ -301,36 +306,31 @@ GEM
     request_store (1.4.1)
       rack (>= 1.4)
     rinku (2.0.4)
-    rotp (3.3.1)
-    rubocop (0.59.1)
+    rotp (4.0.2)
+      addressable (~> 2.5)
+    rubocop (0.60.0)
       jaro_winkler (~> 1.5.1)
       parallel (~> 1.10)
       parser (>= 2.5, != 2.5.1.1)
       powerpack (~> 0.1)
       rainbow (>= 2.2.2, < 4.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (~> 1.0, >= 1.0.1)
+      unicode-display_width (~> 1.4.0)
     ruby-openid (2.7.0)
     ruby-progressbar (1.10.0)
     ruby_dep (1.5.0)
     safe_yaml (1.0.4)
-    sanitize (4.6.6)
+    sanitize (5.0.0)
       crass (~> 1.0.2)
-      nokogiri (>= 1.4.4)
-      nokogumbo (~> 1.4)
-    sass (3.6.0)
-      sass-listen (~> 4.0.0)
-    sass-listen (4.0.0)
-      rb-fsevent (~> 0.9, >= 0.9.4)
-      rb-inotify (~> 0.9, >= 0.9.7)
-    sassc (1.12.1)
+      nokogiri (>= 1.8.0)
+      nokogumbo (~> 2.0)
+    sassc (2.0.0)
       ffi (~> 1.9.6)
-      sass (>= 3.3.0)
-    sassc-rails (1.3.0)
+      rake
+    sassc-rails (2.0.0)
       railties (>= 4.0.0)
-      sass
-      sassc (~> 1.9)
-      sprockets (> 2.11)
+      sassc (>= 2.0)
+      sprockets (> 3.0)
       sprockets-rails
       tilt
     secure_headers (6.0.0)
@@ -356,7 +356,7 @@ GEM
     thor (0.19.4)
     thread_safe (0.3.6)
     tilt (2.0.8)
-    tins (1.16.3)
+    tins (1.17.0)
     tzinfo (1.2.5)
       thread_safe (~> 0.1)
     uglifier (4.1.19)
@@ -364,7 +364,7 @@ GEM
     unicode-display_width (1.4.0)
     validates_email_format_of (1.6.3)
       i18n
-    vendorer (0.1.16)
+    vendorer (0.2.0)
     webmock (3.4.2)
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
@@ -372,7 +372,7 @@ GEM
     websocket-driver (0.7.0)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.3)
-    xpath (3.1.0)
+    xpath (3.2.0)
       nokogiri (~> 1.8)
 
 PLATFORMS
@@ -395,6 +395,7 @@ DEPENDENCIES
   composite_primary_keys (~> 11.0.0)
   coveralls
   dalli
+  delayed_job_active_record
   dynamic_form
   factory_bot_rails
   faraday
index c03ed9056a0759277b1fda313132655299cb83f9..4ce205fd1513698dbfc9adeca3d5a48414a99ff0 100644 (file)
@@ -332,7 +332,7 @@ class ChangesetController < ApplicationController
 
     # Notify current subscribers of the new comment
     changeset.subscribers.visible.each do |user|
-      Notifier.changeset_comment_notification(comment, user).deliver_now if current_user != user
+      Notifier.changeset_comment_notification(comment, user).deliver_later if current_user != user
     end
 
     # Add the commenter to the subscribers if necessary
index cff57920b10cdc7e1c0a4335b0004f5ab4c40496..70cb1654da8c9d0f7adf5b56197d482d81d54626 100644 (file)
@@ -66,7 +66,7 @@ class DiaryEntryController < ApplicationController
 
       # Notify current subscribers of the new comment
       @entry.subscribers.visible.each do |user|
-        Notifier.diary_comment_notification(@diary_comment, user).deliver_now if current_user != user
+        Notifier.diary_comment_notification(@diary_comment, user).deliver_later if current_user != user
       end
 
       # Add the commenter to the subscribers if necessary
index 13a395da8fccfc20feb59174c36ec1178a36513a..c93c998f02655e60bee8ea202853005a0ee61d91 100644 (file)
@@ -29,7 +29,7 @@ class MessagesController < ApplicationController
       render :action => "new"
     elsif @message.save
       flash[:notice] = t ".message_sent"
-      Notifier.message_notification(@message).deliver_now
+      Notifier.message_notification(@message).deliver_later
       redirect_to :action => :inbox
     else
       render :action => "new"
index 95566a1a1a5ff179f1019dea52eed6d20235e8c7..9cdc38446ca5df7335528d34aeed3bbe5bbae4ad 100644 (file)
@@ -387,7 +387,7 @@ class NotesController < ApplicationController
     comment = note.comments.create!(attributes)
 
     note.comments.map(&:author).uniq.each do |user|
-      Notifier.note_comment_notification(comment, user).deliver_now if notify && user && user != current_user && user.visible?
+      Notifier.note_comment_notification(comment, user).deliver_later if notify && user && user != current_user && user.visible?
     end
   end
 end
index d18cf188cf669ef002fbc975f6f08d091f697d6f..016d7c87dd21c1501a453c1805b1a3130135786e 100644 (file)
@@ -107,7 +107,7 @@ class UsersController < ApplicationController
             successful_login(current_user)
           else
             session[:token] = current_user.tokens.create.token
-            Notifier.signup_confirm(current_user, current_user.tokens.create(:referer => referer)).deliver_now
+            Notifier.signup_confirm(current_user, current_user.tokens.create(:referer => referer)).deliver_later
             redirect_to :action => "confirm", :display_name => current_user.display_name
           end
         else
@@ -158,7 +158,7 @@ class UsersController < ApplicationController
 
       if user
         token = user.tokens.create
-        Notifier.lost_password(user, token).deliver_now
+        Notifier.lost_password(user, token).deliver_later
         flash[:notice] = t "users.lost_password.notice email on way"
         redirect_to :action => "login"
       else
@@ -339,7 +339,7 @@ class UsersController < ApplicationController
     if user.nil? || token.nil? || token.user != user
       flash[:error] = t "users.confirm_resend.failure", :name => params[:display_name]
     else
-      Notifier.signup_confirm(user, user.tokens.create).deliver_now
+      Notifier.signup_confirm(user, user.tokens.create).deliver_later
       flash[:notice] = t("users.confirm_resend.success", :email => user.email, :sender => SUPPORT_EMAIL).html_safe
     end
 
@@ -432,7 +432,7 @@ class UsersController < ApplicationController
           flash[:warning] = t "users.make_friend.already_a_friend", :name => @new_friend.display_name
         elsif friend.save
           flash[:notice] = t "users.make_friend.success", :name => @new_friend.display_name
-          Notifier.friend_notification(friend).deliver_now
+          Notifier.friend_notification(friend).deliver_later
         else
           friend.add_error(t("users.make_friend.failed", :name => @new_friend.display_name))
         end
@@ -735,7 +735,7 @@ class UsersController < ApplicationController
           flash.now[:notice] = t "users.account.flash update success confirm needed"
 
           begin
-            Notifier.email_confirm(user, user.tokens.create).deliver_now
+            Notifier.email_confirm(user, user.tokens.create).deliver_later
           rescue StandardError
             # Ignore errors sending email
           end
similarity index 89%
rename from lib/geo_record.rb
rename to app/models/concerns/geo_record.rb
index e02734ec909dc8064f78d2cf8e17455287939911..06049c2951b25876999cc7e3ee0fc070bacd97e6 100644 (file)
@@ -1,6 +1,8 @@
 require "delegate"
 
 module GeoRecord
+  extend ActiveSupport::Concern
+
   # Ensure that when coordinates are printed that they are always in decimal degrees,
   # and not e.g. 4.0e-05
   # Unfortunately you can't extend Numeric classes directly (e.g. `Coord < Float`).
@@ -19,9 +21,9 @@ module GeoRecord
   # the database.
   SCALE = 10000000
 
-  def self.included(base)
-    base.scope :bbox, ->(bbox) { base.where(OSM.sql_for_area(bbox)) }
-    base.before_save :update_tile
+  included do
+    scope :bbox, ->(bbox) { where(OSM.sql_for_area(bbox)) }
+    before_save :update_tile
   end
 
   # Is this node within -90 >= latitude >= 90 and -180 >= longitude >= 180
similarity index 78%
rename from lib/not_redactable.rb
rename to app/models/concerns/not_redactable.rb
index 6a57732963989841c89be951c60d941c52e1aed6..2d721530f133fb7f93b3c9c4d58dc4a11469b5de 100644 (file)
@@ -1,6 +1,6 @@
-require "osm"
-
 module NotRedactable
+  extend ActiveSupport::Concern
+
   def redacted?
     false
   end
similarity index 97%
rename from lib/object_metadata.rb
rename to app/models/concerns/object_metadata.rb
index c765df5264d6b749e59e178d847e618e84f40f6e..dcfde889ce83afdbc831185371cc4d7998123b5f 100644 (file)
@@ -1,4 +1,6 @@
 module ObjectMetadata
+  extend ActiveSupport::Concern
+
   def add_metadata_to_xml_node(el, osm, changeset_cache, user_display_name_cache)
     el["changeset"] = osm.changeset_id.to_s
     el["redacted"] = osm.redaction.id.to_s if osm.redacted?
index 4300321439f12f76ac040bf8b09b2c9886f534c0..9e15487ae4877fb80d9d1e0177958dbaee7efead 100644 (file)
@@ -99,4 +99,7 @@ Rails.application.configure do
 
   # Enable autoloading of dependencies.
   config.enable_dependency_loading = true
+
+  # Use delayed job to queue jobs in production.
+  config.active_job.queue_adapter = :delayed_job
 end
index e4652b7ec3ed8e52a19d7fd7e429e178b628e07f..38975deef664b54cb6332be608fb142fa7c3fe8a 100644 (file)
@@ -46,4 +46,7 @@ Rails.application.configure do
 
   # Raises error for missing translations
   config.action_view.raise_on_missing_translations = true
+
+  # Use the test adapter for ActiveJob during testing
+  config.active_job.queue_adapter = :test
 end
index 7fbb5c115002480f2f969303f7ca0b3fefbc9be5..4f951b30ce70b9dd8b49b0a2a083d31c47ebe405 100644 (file)
@@ -1,6 +1,6 @@
 require "r2"
 
-class R2ScssProcessor < Sprockets::ScssProcessor
+class R2ScssProcessor < SassC::Rails::ScssTemplate
   def self.call(input)
     output = super(input)
     data = R2.r2(output[:data])
index ade8ddcbb396c2b7f584b3d54d29966242b9ccf0..8f662f344737bf404ef3930c0d57c79a902a987c 100644 (file)
@@ -963,6 +963,8 @@ da:
       title: Problemer
       select_status: Vælg status
       select_type: Vælg type
+      select_last_updated_by: Vælg sidst opdateret af
+      reported_user: Rapporteret bruger
       not_updated: Ikke opdateret
       search: Søg
       user_not_found: Brugeren findes ikke
@@ -980,6 +982,7 @@ da:
       reopen: Genåbn
       read_reports: Læs rapporter
       new_reports: Nye rapporter
+      comments_on_this_issue: Kommentarer på denne sag
     comments:
       created_at: Den %{datetime}
     reports:
@@ -1697,8 +1700,10 @@ da:
       tags_help: kommasepareret
       visibility: 'Synlighed:'
       visibility_help: hvad betyder det her?
+      visibility_help_url: https://wiki.openstreetmap.org/wiki/Visibility_of_GPS_traces
       upload_button: Upload
       help: Hjælp
+      help_url: https://wiki.openstreetmap.org/wiki/Upload
     create:
       upload_trace: Upload GPS-spor
       trace_uploaded: Din GPX-fil er uploadet og afventer lagring i databasen. Det
@@ -2013,6 +2018,7 @@ da:
       terms declined: Vi er kede af at du har besluttet at du ikke kan acceptere de
         nye vilkår for bidragsydere. For yderligere oplysninger, se venligst <a href="%{url}">denne
         wikiside</a>.
+      terms declined url: https://wiki.openstreetmap.org/wiki/Contributor_Terms_Declined
     terms:
       title: Vilkår for bidragsydere
       heading: Vilkår for bidragsydere
index ce8e8aac143fbdfd5b1041726304820111e656e8..047d22ef5a624f5463cacf55f71853d8a7bb131f 100644 (file)
@@ -1048,7 +1048,7 @@ fa:
       befriend_them: همچنین میتوانید در %{befriendurl} او را بعنوان دوست اضافه کنید.
     gpx_notification:
       greeting: سلام ،
-      your_gpx_file: Ù¾Ø±Ù\88Ù\86دÙ\87 Û\8c GPX شما اینگونه است
+      your_gpx_file: Ù\81اÛ\8cÙ\84 GPX شما اینگونه است
       with_description: با توضیحات
       and_the_tags: 'و برچسب های زیر:'
       and_no_tags: و بدون برچسب.
@@ -1636,8 +1636,8 @@ fa:
       identifiable: قابل شناسایی (نمایش در لیست ردها، قابل شناسایی، نقاط مرتب بر اساس
         زمان)
     new:
-      upload_trace: بارگذاری رد GPS
-      upload_gpx: 'بارگذارÛ\8c Ù¾Ø±Ù\88Ù\86دÙ\87Ù\94 GPX:'
+      upload_trace: بارگذاری رد جی‌پی‌اس
+      upload_gpx: 'بارگذارÛ\8c Ù\81اÛ\8cÙ\84 GPX:'
       description: 'توضیحات:'
       tags: 'برچسب‌ها:'
       tags_help: جداشده با کاما (,)
@@ -1646,10 +1646,10 @@ fa:
       upload_button: بارگذاری
       help: کمک
     create:
-      upload_trace: بارگذاری رد GPS
-      trace_uploaded: Ù¾Ø±Ù\88Ù\86دÙ\87Ù\94 GPX Ø´Ù\85ا Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û\8c Ø´Ø¯Ù\87 Ù\88 Ø¯Ø± Ø§Ù\86تظار Ø¯Ø±Ø¬ Ø¯Ø± Ù¾Ø§Û\8cگاÙ\87â\80\8cدادÙ\87
-        است. این کار معمولاً کمتر از نیم ساعت طول می‌کشد. هنگامی که انجام شد ایمیلی
-        Ø¨Ø±Ø§Û\8c Ø´Ù\85ا Ù\81رستادÙ\87 Ù\85Û\8câ\80\8cØ´Ù\88د.
+      upload_trace: بارگذاری رد جی‌پی‌اس
+      trace_uploaded: Ù\81اÛ\8cÙ\84 GPX Ø´Ù\85ا Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û\8c Ø´Ø¯Ù\87 Ù\88 Ø¯Ø± Ø§Ù\86تظار Ø¯Ø±Ø¬ Ø¯Ø± Ù¾Ø§Û\8cگاÙ\87â\80\8cدادÙ\87 Ø§Ø³Øª.
+        این کار معمولاً کمتر از نیم ساعت طول می‌کشد. هنگامی که انجام شد ایمیلی برای
+        شما فرستاده می‌شود.
       traces_waiting:
         one: شما %{count} رد منتظر بارگذاری دارید. لطفاً قبل از بارگذاری موارد بیشتر
           منتظر بمانید تا اینها بارگذاری بشوند که صف برای سایر کاربران بسته نشود.
@@ -1658,7 +1658,7 @@ fa:
     edit:
       title: ویرایش رد %{name}
       heading: ویرایش رد %{name}
-      filename: 'Ù\86اÙ\85 Ù¾Ø±Ù\88Ù\86دÙ\87:'
+      filename: 'Ù\86اÙ\85 Ù\81اÛ\8cÙ\84:'
       download: دریافت
       uploaded_at: 'تاریخ بارگذاری:'
       points: 'نقاط:'
@@ -1680,7 +1680,7 @@ fa:
       title: دیدن رد %{name}
       heading: دیدن رد %{name}
       pending: در انتظار
-      filename: 'Ù\86اÙ\85 Ù¾Ø±Ù\88Ù\86دÙ\87:'
+      filename: 'Ù\86اÙ\85 Ù\81اÛ\8cÙ\84:'
       download: دریافت
       uploaded: 'تاریخ بارگذاری:'
       points: 'نقاط:'
@@ -1736,15 +1736,14 @@ fa:
       message: سامانهٔ بارگذاری جی‌پی‌اکس در حال حاضر در دسترس نیست
     offline:
       heading: ذخیره سازی آفلاین GPX
-      message: ذخیره‌سازی پروندهٔ جی‌پی‌اکس و سامانهٔ بارگذاری در حال حاضر در دسترس
-        نیست.
+      message: ذخیره‌گاه فایل جی‌پی‌اکس و سامانهٔ بارگذاری هم‌اکنون در دسترس نیستند.
     georss:
-      title: ردهای جی‌پی‌اس OpenStreetMap
+      title: ‫ردهای جی‌پی‌اس OpenStreetMap‬
     description:
       description_with_count:
-        one: پرونده GPX با %{count} نقطه از %{user}
-        other: ' پرونده GPX با %{count} نقطه از %{user}'
-      description_without_count: Ù¾Ø±Ù\88Ù\86دÙ\87 GPX از %{user}
+        one: ‫فایل GPX با %{count} نقطه از %{user}‬
+        other: ' ‫فایل GPX با %{count} نقطه از %{user}‬'
+      description_without_count: Ù\81اÛ\8cÙ\84 GPX از %{user}
   application:
     require_cookies:
       cookies_needed: بنظر می‌رسد که کوکی‌ها را غیرفعال کرده‌اید - لطفاً قبل از ادامه
@@ -1772,7 +1771,7 @@ fa:
       allow_write_diary: ساخت روزنوشت‌ها، نظردادن و افزودن دوست.
       allow_write_api: ویرایش نقشه.
       allow_read_gpx: خواندن ردهای GPS شخصی شما.
-      allow_write_gpx: بارگذاری ردهای GPS
+      allow_write_gpx: بارگذاری ردهای GPS.
       allow_write_notes: اصلاح یادداشت‌ها.
       grant_access: دسترسی می‌دهم
     authorize_success:
index 62cd2ca70788190a5e0db955ea8a4cf0477c7c50..28b3d7f598b9a7710f8a98f9efbaefebdda82b4e 100644 (file)
@@ -10,6 +10,7 @@
 # Author: Greencaps
 # Author: HanV
 # Author: Hansmuller
+# Author: Henke
 # Author: JaapDeKleine
 # Author: Jochempluim
 # Author: Joost schouppe
@@ -502,6 +503,7 @@ nl:
           protected_area: Beschermd gebied
         bridge:
           aqueduct: Aquaduct
+          boardwalk: Plankenweg
           suspension: Hangbrug
           swing: Draaibrug
           viaduct: Viaduct
@@ -527,11 +529,11 @@ nl:
           water_tank: Watertank voor noodgevallen
           "yes": Noodgeval
         highway:
-          abandoned: Verlaten snelweg
+          abandoned: Verlaten weg
           bridleway: Ruiterpad
           bus_guideway: Vrijliggende busbaan
           bus_stop: Bushalte
-          construction: Snelweg in aanbouw
+          construction: Weg in aanbouw
           corridor: Corridor
           cycleway: Fietspad
           elevator: Lift
@@ -568,7 +570,7 @@ nl:
           track: Veld- of bosweg
           traffic_signals: Verkeerslichten
           trail: Pad
-          trunk: Autosnelweg
+          trunk: Autoweg
           trunk_link: Autoweg
           turning_loop: Keerlus
           unclassified: Ongeclassificeerde weg
@@ -784,7 +786,7 @@ nl:
           square: Plein
           state: Staat
           subdivision: Deelgebied
-          suburb: Buitenwijk
+          suburb: Stadsdeel
           town: Stad
           unincorporated_area: Gemeentevrij gebied
           village: Dorp
@@ -874,9 +876,11 @@ nl:
           organic: Organische winkel
           outdoor: Buitensportwinkel
           paint: Verfwinkel
+          pawnbroker: Pandmakelaar
           pet: Dierenwinkel
           pharmacy: Apotheek
           photo: Fotowinkel
+          seafood: Zeevruchten
           second_hand: Kringloopwinkel
           shoes: Schoenenzaak
           sports: Sportwinkel
@@ -940,7 +944,7 @@ nl:
         level6: Countygrens
         level8: Stadsgrens
         level9: Dorpsgrens
-        level10: Wijkgrens
+        level10: Stadsdeelgrens
     description:
       title:
         osm_nominatim: Locatie van <a href="https://nominatim.openstreetmap.org/">OpenStreetMap
@@ -972,9 +976,43 @@ nl:
         ignored: Genegeerd
         open: Open
         resolved: Opgelost
+    update:
+      new_report: Uw rapport is succesvol geregistreerd
+      successful_update: Uw rapport is succesvol bijgewerkt
+      provide_details: Geef a.u.b. de vereiste gegevens in
     show:
+      title: '%{status} Probleem #%{issue_id}'
+      report_created_at: Voor het eerst vermeld op %{datetime}
+      last_resolved_at: Laatst opgelost op %{datetime}
+      last_updated_at: Laatst bijgewerkt op %{datetime} door %{displayname}
+      resolve: Oplossen
       ignore: Negeren
       reopen: Heropenen
+      reports_of_this_issue: Meldingen van deze kwestie
+      read_reports: Lees Meldingen
+      new_reports: Nieuwe Meldingen
+      other_issues_against_this_user: Andere problemen met deze gebruiker
+      no_other_issues: Geen andere problemen tegen deze gebruiker.
+      comments_on_this_issue: Commentaar op deze kwestie
+    resolve:
+      resolved: De status van het probleem is ingesteld op 'Opgelost'
+    ignore:
+      ignored: De status van het probleem is ingesteld op 'Genegeerd'
+    reopen:
+      reopened: De status van het probleem is ingesteld op 'Open'
+    comments:
+      created_at: Op %{datetime}
+      reassign_param: Probleem opnieuw toewijzen?
+    reports:
+      updated_at: Op %{datetime}
+      reported_by_html: Gerapporteerd als %{category} door %{user}
+    helper:
+      reportable_title:
+        diary_comment: '%{entry_title}, commentaar #%{comment_id}'
+        note: 'Nota #%{note_id}'
+  issue_comments:
+    create:
+      comment_created: Je reactie is succesvol gemaakt
   reports:
     new:
       categories:
index 2b538b3b9d47c07dad9346a7115e472ee82ced4c..7f8e7d7cd5ee9a6d5f55b215a25cd2f26e4e18e2 100644 (file)
@@ -1546,6 +1546,8 @@ th:
       upload_trace: อัปโหลดรอยทาง GPS
       trace_uploaded: แฟ้มข้อมูล GPX ของท่านอัปโหลดเข้าระบบแล้ว กำลังรอบรรจุเข้าฐานข้อมูล
         ซึ่งจะใช้เวลาประมาณครึ่งชั่วโมง เมื่อกระบวนการเรียบร้อยแล้วจะมีอีเมลแจ้งท่านให้ทราบ
+      traces_waiting: คุณมีรอยทาง %{count} ชุด ที่กำลังรออัพโหลด กรุณารอให้การอัพโหลดเหล่านี้เสร็จสิ้น
+        ก่อนที่จะเพิ่มรอยทางชุดต่อไป, เพื่อไม่ให้ผู้ใช้คนอื่นๆ จะต้องรอคิวนาน
     edit:
       filename: 'ชื่อแฟ้ม:'
       download: ดาวน์โหลด
@@ -1618,6 +1620,8 @@ th:
   application:
     require_cookies:
       cookies_needed: ดูเหมือนว่าคุณปิดใช้งานคุกกี้อยู่, กรุณาเปิดใช้งานคุกกี้ในบราวเซอร์ของคุณก่อนจะดำเนินการต่อ
+    setup_user_auth:
+      blocked: คุณถูกระงับการเข้าถึง API, กรุณาเข้าระบบทางหน้าเว็บหลักหากต้องการทราบสาเหตุที่ถูกระงับในครั้งนี้
   oauth:
     authorize:
       title: อนุญาตการเข้าถึงบัญชีของคุณ
@@ -1820,7 +1824,7 @@ th:
       my settings: การตั้งค่าของฉัน
       my comments: ความคิดเห็นของฉัน
       oauth settings: ตั้งค่าการอนุญาต OAuth
-      blocks on me: à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\81ีà¸\94à¸\81ัà¸\99à¸\82à¹\89าà¸\9eà¹\80à¸\88à¹\89า
+      blocks on me: à¸\81ารà¸\96ูà¸\81ระà¸\87ัà¸\9aà¸\82อà¸\87à¸\89ัà¸\99
       blocks by me: ผู้ใช้ที่ข้าพเจ้ากีดกัน
       send message: ส่งข้อความ
       diary: บันทึก
@@ -1853,8 +1857,9 @@ th:
       role:
         administrator: คนนี้เป็นผู้ดูแลระบบ
         moderator: ผู้ใช้นี้เป็นผู้ดูแล
+      block_history: การถูกระงับใช้งานในปัจจุบัน
       comments: ความเห็นที่เขียน
-      create_block: à¸\81ีà¸\94à¸\81ัà¸\99ผู้ใช้นี้
+      create_block: à¸£à¸°à¸\87ัà¸\9aผู้ใช้นี้
       activate_user: เปิดใช้งานผู้ใช้นี้
       deactivate_user: ปิดใช้งานผู้ใช้นี้
       confirm: ยืนยัน
@@ -2002,66 +2007,83 @@ th:
       fail: ไม่สามารถถอดถอนสถานะ `%{role}' แก่ผู้ใช้ `%{name}' โปรดตรวจสอบว่าทั้งผู้ใช้และสถานะเป็นที่ถูกต้องดีแล้ว
   user_blocks:
     model:
-      non_moderator_update: à¸\95à¹\89อà¸\87à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aà¸\88ึà¸\87à¸\88ะสามารà¸\96สรà¹\89าà¸\87หรือà¸\9bรัà¸\9aà¸\9bรุà¸\87à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99ได้
+      non_moderator_update: à¸\88ะà¸\95à¹\89อà¸\87à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¸\94ูà¹\81ลระà¸\9aà¸\9aà¸\88ึà¸\87à¸\88ะสามารà¸\96ระà¸\87ัà¸\9a à¸«à¸£à¸·à¸­à¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารระà¸\87ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89ได้
       non_moderator_revoke: ต้องเป็นผู้ดูแลระบบจึงจะสามารถเพิกถอนการกีดกันได้
     not_found:
-      sorry: à¸\82ออภัย à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89รหัส %{id} à¹\84มà¹\88à¸\9eà¸\9a
+      sorry: à¸\82ออภัย à¹\84มà¹\88à¸\9eà¸\9aà¸\81ารระà¸\87ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\95ามหมายà¹\80ลà¸\82อà¹\89าà¸\87อิà¸\87 %{id} à¸\97ีà¹\88ระà¸\9aุมา
       back: กลับไปที่ดัชนี
     new:
-      title: à¸ªà¸£à¹\89าà¸\87à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99à¸\9aà¸\99 %{name}
+      title: à¸£à¸°à¸\87ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89 %{name}
       heading: สร้างการกีดกันบน %{name}
-      reason: à¹\80หà¸\95ุà¸\9cลà¸\97ีà¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89 %{name} à¸\96ูà¸\81à¸\81ีà¸\94à¸\81ัà¸\99 à¹\82à¸\9bรà¸\94อยà¹\88าà¹\83à¸\8aà¹\89อารมà¸\93à¹\8cรุà¸\99à¹\81รà¸\87à¹\83à¸\99ระหวà¹\88าà¸\87ระà¸\9aุ
-        à¹\81ละà¸\82อà¹\83หà¹\89ระà¸\9aุรายละà¹\80อียà¸\94à¹\80à¸\81ีà¹\88ยวà¸\81ัà¸\9aสà¸\96าà¸\99à¸\81ารà¸\93à¹\8cà¸\97ีà¹\88à¸\9eà¸\9aà¹\83หà¹\89ละà¹\80อียà¸\94à¸\8aัà¸\94à¹\80à¸\88à¸\99 à¸\88ำà¹\84วà¹\89วà¹\88าà¸\82à¹\89อà¸\84วามà¸\97ีà¹\88à¸\97à¹\88าà¸\99à¸\9eิมà¸\9eà¹\8cà¸\88ะà¸\9bราà¸\81à¸\8fà¸\95à¹\88อสาà¸\98ารà¸\93ะ
-        à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ุà¸\81à¸\97à¹\88าà¸\99à¹\84มà¹\88à¸\88ำà¸\95à¹\89อà¸\87à¹\80à¸\82à¹\89าà¹\83à¸\88à¸\96ึà¸\87ศัà¸\9eà¸\97à¹\8cà¹\80à¸\89à¸\9eาะ à¸\88ึà¸\87à¸\82อà¹\81à¸\99ะà¸\99ำà¹\83หà¹\89à¹\83à¸\8aà¹\89ศัà¸\9eà¸\97à¹\8cอยà¹\88าà¸\87à¸\87à¹\88า
-      period: à¸\95à¹\89อà¸\87à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\84à¸\99à¸\99ีà¹\89à¸\88าà¸\81 API à¸\99ัà¸\9aà¹\81à¸\95à¹\88à¸\9aัà¸\94à¸\99ีà¹\89 à¸\99าà¸\99à¹\80à¸\97à¹\88าà¹\83à¸\94
+      reason: à¹\80หà¸\95ุà¸\9cลà¸\97ีà¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89 %{name} à¸\96ูà¸\81ระà¸\87ัà¸\9a, à¹\82à¸\9bรà¸\94อยà¹\88าà¹\80à¸\82ียà¸\99à¸\94à¹\89วยอารมà¸\93à¹\8cรุà¸\99à¹\81รà¸\87 à¹\82à¸\94ยà¸\82อà¹\83หà¹\89ระà¸\9aุรายละà¹\80อียà¸\94à¹\80à¸\81ีà¹\88ยวà¸\81ัà¸\9aสà¸\96าà¸\99à¸\81ารà¸\93à¹\8cà¸\97ีà¹\88à¸\9eà¸\9aà¹\83หà¹\89ละà¹\80อียà¸\94à¸\8aัà¸\94à¹\80à¸\88à¸\99,
+        à¸\84วรà¹\83à¸\8aà¹\89à¸\84ำอà¸\98ิà¸\9aายà¸\97ีà¹\88à¹\80à¸\82à¹\89าà¹\83à¸\88à¸\87à¹\88ายà¹\80à¸\9bà¹\87à¸\99หลัà¸\81 à¹\80à¸\9eราะà¹\84มà¹\88à¹\83à¸\8aà¹\88วà¹\88าà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ุà¸\81à¸\84à¸\99à¸\88ะà¹\80à¸\82à¹\89าà¹\83à¸\88ศัà¸\9eà¸\97à¹\8cà¹\80à¸\89à¸\9eาะ,
+        à¹\81ละà¸\95à¹\89อà¸\87อยà¹\88าลืม à¸§à¹\88าสิà¹\88à¸\87à¸\97ีà¹\88à¸\84ุà¸\93à¹\80à¸\82ียà¸\99à¸\99ีà¹\89à¸\88ะà¹\81สà¸\94à¸\87à¸\95à¹\88อสาà¸\98ารà¸\93ะà¸\94à¹\89ว
+      period: à¸£à¸°à¸\87ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\84à¸\99à¸\99ีà¹\89à¸\88าà¸\81à¸\81ารà¹\80à¸\82à¹\89าà¸\96ึà¸\87 API, à¸\99าà¸\99à¹\80à¸\97à¹\88าà¹\83à¸\94 à¹\82à¸\94ยà¹\80ริà¹\88มà¸\99ัà¸\9aà¸\88าà¸\81à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99
       submit: สร้างการกีดกัน
       tried_contacting: ข้าพเจ้าติดต่อผู้ใช้คนนี้และขอร้องให้เขาหยุดการกระทำ
       tried_waiting: ข้าพเจ้าได้ให้เวลานานสมควรแก่ผู้ใช้คนนี้ในการตอบคำถามกลับ
-      needs_view: ผู้ใช้ต้องเข้าระบบก่อนการกีดกันนี้จะถูกเพิกถอน
+      needs_view: ผู้ใช้ต้องเข้าระบบก่อน การระงับนี้จึงจะถูกเพิกถอน
       back: แสดงการกีดกันทั้งหมด
     edit:
-      title: à¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99à¸\9aà¸\99 %{name}
+      title: à¹\81à¸\81à¹\89à¹\84à¸\82à¸\81ารระà¸\87ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89 %{name}
       heading: แก้ไขการกีดกันบน %{name}
-      reason: เหตุผลที่ผู้ใช้ %{name} ถูกกีดกัน โปรดอย่าใช้อารมณ์รุนแรงในระหว่างระบุ
-        และขอให้ระบุรายละเอียดเกี่ยวกับสถานการณ์ที่พบให้ละเอียดชัดเจน จำไว้ว่าข้อความที่ท่านพิมพ์จะปรากฏต่อสาธารณะ
-        ผู้ใช้ทุกท่านไม่จำต้องเข้าใจถึงศัพท์เฉพาะ จึงขอแนะนำให้ใช้ศัพท์อย่างง่าย
-      period: ต้องการกีดกันผู้ใช้คนนี้จาก API นับแต่บัดนี้ นานเท่าใด
+      reason: เหตุผลที่ผู้ใช้ %{name} ถูกระงับ, โปรดอย่าเขียนด้วยอารมณ์รุนแรง โดยขอให้ระบุรายละเอียดเกี่ยวกับสถานการณ์ที่พบให้ละเอียดชัดเจน
+        และควรใช้คำอธิบายที่เข้าใจง่ายเป็นหลัก เพราะไม่ใช่ว่าผู้ใช้ทุกคนจะเข้าใจศัพท์เฉพาะ
+      period: ระงับผู้ใช้คนนี้จากการเข้าถึง API, นานเท่าใด โดยเริ่มนับจากปัจจุบัน
       submit: ปรับปรุงการกีดกัน
-      show: à¸\94ูà¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99นี้
+      show: à¸\94ูรายละà¹\80อียà¸\94à¸\81ารระà¸\87ัà¸\9aนี้
       back: แสดงการกีดกันทั้งหมด
-      needs_view: à¸\95à¹\89อà¸\87à¸\81ารà¹\83หà¹\89à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\84à¸\99à¸\99ีà¹\89à¹\80à¸\82à¹\89าระà¸\9aà¸\9aà¸\81à¹\88อà¸\99à¹\80à¸\9eิà¸\81à¸\96อà¸\99à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99หรือไม่?
+      needs_view: à¸\95à¹\89อà¸\87à¸\81ารà¹\83หà¹\89à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\84à¸\99à¸\99ีà¹\89à¹\80à¸\82à¹\89าระà¸\9aà¸\9aà¸\81à¹\88อà¸\99à¹\80à¸\9eิà¸\81à¸\96อà¸\99à¸\81ารระà¸\87ัà¸\9aหรือไม่?
     filter:
       block_expired: การกีดกันนี้สิ้นผลแล้วแก้ไขไม่ได้
-      block_period: à¸£à¸°à¸¢à¸°à¹\80วลาà¸\97ีà¹\88à¸\81ีà¸\94à¸\81ัà¸\99à¸\95à¹\89อà¸\87à¹\80à¸\9bà¹\87à¸\99à¹\84à¸\9bà¸\95ามรายà¸\81ารà¹\80ลือà¸\81à¹\83à¸\99à¸\81ลà¹\88อà¸\87à¸\95ัวà¹\80ลือà¸\81à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99
+      block_period: à¸\94ูระยะà¹\80วลาà¸\97ีà¹\88ระà¸\87ัà¸\9a à¹\83หà¹\89à¹\80à¸\9bà¹\87à¸\99หà¸\99ึà¹\88à¸\87à¹\83à¸\99à¸\84à¹\88าà¸\97ีà¹\88à¹\80ลือà¸\81à¹\84วà¹\89à¸\88าà¸\81รายà¸\81ารà¸\99ีà¹\89
     create:
-      try_contacting: กรุณาติดต่อผู้ใช้ก่อนที่จะกีดกันเขาออกจากระบบ และเผื่อเวลาระยะหนึ่งให้ตอบกลับ
+      try_contacting: กรุณาติดต่อผู้ใช้คนนั้นก่อนที่จะตัดสินใจสั่งระงับใช้งาน และอย่าลืมเผื่อเวลาระยะหนึ่งให้ตอบกลับ
+      try_waiting: กรุณาให้เวลากับผู้ใช้ในการตอบคำถาม ก่อนที่ตัดสินเรื่องการสั่งระงับใช้งาน
     update:
+      only_creator_can_edit: การระงับนี้สามารถแก้ไขได้ โดยผู้ดูแลที่เป็นผู้สั่งระงับเองเท่านั้น
       success: ปรับปรุงการกีดกันแล้ว
     index:
-      title: à¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99ผู้ใช้
-      heading: à¸£à¸²à¸¢à¸\81ารà¸\81ารà¸\81ีà¸\94à¸\81ัà¸\99ผู้ใช้
+      title: à¸\81ารระà¸\87ัà¸\9aผู้ใช้
+      heading: à¸£à¸²à¸¢à¸\81ารà¸\81ารระà¸\87ัà¸\9aผู้ใช้
       empty: ยังไม่มีการกีดกันใด ๆ
     revoke:
-      past: การบล็อกนี้ได้สิ้นสุดไปเมื่อ %{time}ก่อนแล้ว การยกเลิกจึงไม่มีผล
-      flash: ได้ยกเลิกการบล็อกนี้แล้ว
+      title: ยกเลิกการระงับใช้งานของ %{block_on}
+      heading: เพิกถอนการระงับผู้ใช้ %{block_on} ซึ่งสั่งโดยผู้ใช้ %{block_by}
+      past: การระงับนี้ได้สิ้นสุดไปเมื่อ %{time}ก่อนแล้ว การยกเลิกจึงไม่มีผล
+      confirm: แน่ใจหรือว่าต้องการจะยกเิลิกการระงับนี้?
+      flash: ได้ยกเลิกการระงับนี้แล้ว
     helper:
       time_future: จะสิ้นสุดใน %{time}
+      until_login: มีผลจนถึงการเริ่มเข้าระบบครั้งถัดไป
       time_past: สิ้นสุดไปเมื่อ %{time}ก่อน
     blocks_on:
-      title: การกีดกันบน %{name}
-      heading: รายการการกีดกันบน %{name}
-      empty: '%{name} ยังไม่ได้ถูกกีดกัน'
+      title: การถูกระงับใช้งานของ %{name}
+      heading: รายการการถูกระงับของผู้ใช้ %{name}
+      empty: '%{name} ยังไม่เคยถูกระงับใช้งาน'
+    blocks_by:
+      heading: แสดงการสั่งระงับใช้โดย %{name}
+      empty: '%{name} ไม่เคยได้สั่งระงับผู้ใช้คนใดเลย'
     show:
+      heading: '%{block_on} โดนระงับโดย %{block_by}'
       time_past: สิ้นสุดไปเมื่อ %{time}ก่อน
+      created: ระงับเมื่อ
       ago: '%{time}ก่อน'
       status: สถานะ
       show: แสดง
       edit: แก้ไข
+      reason: 'เหตุผลสำหรับการระงับใช้งาน:'
+      needs_view: ผู้ใช้ต้องเข้าระบบก่อน การระงับนี้จึงจะถูกเพิกถอน
     block:
+      not_revoked: (ไม่ได้มีการยกเลิก)
       show: แสดง
       edit: แก้ไข
     blocks:
+      display_name: ผู้ใช้ที่ถูกระงับ
+      creator_name: ผู้สั่งให้ระงับ
+      reason: เหตุผลที่ต้องระงับใช้งาน
       status: สถานะ
+      revoker_name: ยกเลิกโดย
       showing_page: หน้า %{page}
       next: ถัดไป »
       previous: « ก่อนหน้า
@@ -2078,6 +2100,7 @@ th:
       full: เนื้อความเต็มในหมายเหตุ
     mine:
       heading: หมายเหตุของ %{user}
+      creator: ผู้สร้าง
       ago_html: '%{when}ก่อน'
   javascripts:
     close: ปิด
diff --git a/db/migrate/20181031113522_create_delayed_jobs.rb b/db/migrate/20181031113522_create_delayed_jobs.rb
new file mode 100644 (file)
index 0000000..69c6f1b
--- /dev/null
@@ -0,0 +1,22 @@
+class CreateDelayedJobs < ActiveRecord::Migration[5.2]
+  def self.up
+    create_table :delayed_jobs, :force => true do |table|
+      table.integer :priority, :default => 0, :null => false # Allows some jobs to jump to the front of the queue
+      table.integer :attempts, :default => 0, :null => false # Provides for retries, but still fail eventually.
+      table.text :handler,                    :null => false # YAML-encoded string of the object that will do work
+      table.text :last_error                                 # reason for last failure (See Note below)
+      table.datetime :run_at                                 # When to run. Could be Time.zone.now for immediately, or sometime in the future.
+      table.datetime :locked_at                              # Set when a client is working on this object
+      table.datetime :failed_at                              # Set when all retries have failed (actually, by default, the record is deleted instead)
+      table.string :locked_by                                # Who is working on this object (if locked)
+      table.string :queue                                    # The name of the queue this job is in
+      table.timestamps :null => true
+    end
+
+    add_index :delayed_jobs, [:priority, :run_at], :name => "delayed_jobs_priority"
+  end
+
+  def self.down
+    drop_table :delayed_jobs
+  end
+end
index 48fedeba56b65d1247762f7a35eb29f9a5a1b98b..dcab302bb1c05f943ebe14319e2d7ada68ef7cb0 100644 (file)
@@ -494,6 +494,45 @@ CREATE SEQUENCE current_ways_id_seq
 ALTER SEQUENCE current_ways_id_seq OWNED BY current_ways.id;
 
 
+--
+-- Name: delayed_jobs; Type: TABLE; Schema: public; Owner: -
+--
+
+CREATE TABLE delayed_jobs (
+    id bigint NOT NULL,
+    priority integer DEFAULT 0 NOT NULL,
+    attempts integer DEFAULT 0 NOT NULL,
+    handler text NOT NULL,
+    last_error text,
+    run_at timestamp without time zone,
+    locked_at timestamp without time zone,
+    failed_at timestamp without time zone,
+    locked_by character varying,
+    queue character varying,
+    created_at timestamp without time zone,
+    updated_at timestamp without time zone
+);
+
+
+--
+-- Name: delayed_jobs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
+--
+
+CREATE SEQUENCE delayed_jobs_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+--
+-- Name: delayed_jobs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
+--
+
+ALTER SEQUENCE delayed_jobs_id_seq OWNED BY delayed_jobs.id;
+
+
 --
 -- Name: diary_comments; Type: TABLE; Schema: public; Owner: -
 --
@@ -1365,6 +1404,13 @@ ALTER TABLE ONLY current_relations ALTER COLUMN id SET DEFAULT nextval('current_
 ALTER TABLE ONLY current_ways ALTER COLUMN id SET DEFAULT nextval('current_ways_id_seq'::regclass);
 
 
+--
+-- Name: delayed_jobs id; Type: DEFAULT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY delayed_jobs ALTER COLUMN id SET DEFAULT nextval('delayed_jobs_id_seq'::regclass);
+
+
 --
 -- Name: diary_comments id; Type: DEFAULT; Schema: public; Owner: -
 --
@@ -1595,6 +1641,14 @@ ALTER TABLE ONLY current_ways
     ADD CONSTRAINT current_ways_pkey PRIMARY KEY (id);
 
 
+--
+-- Name: delayed_jobs delayed_jobs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
+--
+
+ALTER TABLE ONLY delayed_jobs
+    ADD CONSTRAINT delayed_jobs_pkey PRIMARY KEY (id);
+
+
 --
 -- Name: diary_comments diary_comments_pkey; Type: CONSTRAINT; Schema: public; Owner: -
 --
@@ -1918,6 +1972,13 @@ CREATE INDEX current_way_nodes_node_idx ON current_way_nodes USING btree (node_i
 CREATE INDEX current_ways_timestamp_idx ON current_ways USING btree ("timestamp");
 
 
+--
+-- Name: delayed_jobs_priority; Type: INDEX; Schema: public; Owner: -
+--
+
+CREATE INDEX delayed_jobs_priority ON delayed_jobs USING btree (priority, run_at);
+
+
 --
 -- Name: diary_comment_user_id_created_at_index; Type: INDEX; Schema: public; Owner: -
 --
@@ -2870,6 +2931,7 @@ INSERT INTO "schema_migrations" (version) VALUES
 ('20161011010929'),
 ('20170222134109'),
 ('20180204153242'),
+('20181031113522'),
 ('21'),
 ('22'),
 ('23'),
index 811d09239d0fe5a325e3aca04204d86470434af5..dbeaf5a408e66dfd757b6d63fb5ea639a49c44bc 100644 (file)
@@ -67,17 +67,17 @@ module ActionController
       DEFAULT_OPTIONS = {
         :class_name => nil,
         :singular_name => nil,
-        :per_page   => 10,
+        :per_page => 10,
         :conditions => nil,
-        :order_by   => nil,
-        :order      => nil,
-        :join       => nil,
-        :joins      => nil,
-        :count      => nil,
-        :include    => nil,
-        :select     => nil,
-        :group      => nil,
-        :parameter  => "page"
+        :order_by => nil,
+        :order => nil,
+        :join => nil,
+        :joins => nil,
+        :count => nil,
+        :include => nil,
+        :select => nil,
+        :group => nil,
+        :parameter => "page"
       }.freeze
     end
 
index cb553bfbcad71a095c0940f61b3fb5341d1d4712..e3c533b7af6e8357a1a6b821792b2da6cbb0e3df 100644 (file)
@@ -8,8 +8,8 @@ class DiffReader
 
   # maps each element type to the model class which handles it
   MODELS = {
-    "node"     => Node,
-    "way"      => Way,
+    "node" => Node,
+    "way" => Way,
     "relation" => Relation
   }.freeze
 
index 53252b769739f835a351fb26ce04cbd5601d0879..954acbf227dc1a6309c5d47ff341d9e249ae9f3b 100644 (file)
@@ -6,41 +6,41 @@ if Rails.env.development?
     # You can override any of these by setting an environment variable of the
     # same name.
     Annotate.set_defaults(
-      "routes"                  => "false",
-      "position_in_routes"      => "before",
-      "position_in_class"       => "before",
-      "position_in_test"        => "before",
-      "position_in_fixture"     => "before",
-      "position_in_factory"     => "before",
-      "position_in_serializer"  => "before",
-      "show_foreign_keys"       => "true",
-      "show_indexes"            => "true",
-      "simple_indexes"          => "false",
-      "model_dir"               => "app/models",
-      "root_dir"                => "",
-      "include_version"         => "false",
-      "require"                 => "",
-      "exclude_tests"           => "true",
-      "exclude_fixtures"        => "true",
-      "exclude_factories"       => "true",
-      "exclude_serializers"     => "true",
-      "exclude_scaffolds"       => "true",
-      "exclude_controllers"     => "true",
-      "exclude_helpers"         => "true",
-      "ignore_model_sub_dir"    => "false",
-      "ignore_columns"          => nil,
-      "ignore_routes"           => nil,
-      "ignore_unknown_models"   => "false",
+      "routes" => "false",
+      "position_in_routes" => "before",
+      "position_in_class" => "before",
+      "position_in_test" => "before",
+      "position_in_fixture" => "before",
+      "position_in_factory" => "before",
+      "position_in_serializer" => "before",
+      "show_foreign_keys" => "true",
+      "show_indexes" => "true",
+      "simple_indexes" => "false",
+      "model_dir" => "app/models",
+      "root_dir" => "",
+      "include_version" => "false",
+      "require" => "",
+      "exclude_tests" => "true",
+      "exclude_fixtures" => "true",
+      "exclude_factories" => "true",
+      "exclude_serializers" => "true",
+      "exclude_scaffolds" => "true",
+      "exclude_controllers" => "true",
+      "exclude_helpers" => "true",
+      "ignore_model_sub_dir" => "false",
+      "ignore_columns" => nil,
+      "ignore_routes" => nil,
+      "ignore_unknown_models" => "false",
       "hide_limit_column_types" => "integer,boolean",
-      "skip_on_db_migrate"      => "false",
-      "format_bare"             => "true",
-      "format_rdoc"             => "false",
-      "format_markdown"         => "false",
-      "sort"                    => "false",
-      "force"                   => "false",
-      "trace"                   => "false",
-      "wrapper_open"            => nil,
-      "wrapper_close"           => nil
+      "skip_on_db_migrate" => "false",
+      "format_bare" => "true",
+      "format_rdoc" => "false",
+      "format_markdown" => "false",
+      "sort" => "false",
+      "force" => "false",
+      "trace" => "false",
+      "wrapper_open" => nil,
+      "wrapper_close" => nil
     )
   end
 
index 0bdd01bd2e5f2209d22997d176c9007dbfdaffd1..650bf1f8ef031a3b8e19808dd2b32a58e45abb42 100644 (file)
@@ -360,11 +360,11 @@ class AmfControllerTest < ActionController::TestCase
   # into the method args.
   def test_getway_old_invalid
     way_id = create(:way, :with_history, :version => 2).id
-    { "foo"  => "bar",
+    { "foo" => "bar",
       way_id => "not a date",
       way_id => "2009-03-25 00:00:00",                   # <- wrong format
       way_id => "0 Jan 2009 00:00:00",                   # <- invalid date
-      -1     => "1 Jan 2009 00:00:00" }.each do |id, t|  # <- invalid
+      -1 => "1 Jan 2009 00:00:00" }.each do |id, t| # <- invalid
       amf_content "getway_old", "/1", [id, t]
       post :amf_read
       assert_response :success
index 2cda68b128045473d9dbfe662b300e1947337114..fdb689978f7fc1cebbc9dad700d81457204af10b 100644 (file)
@@ -2153,7 +2153,9 @@ CHANGESET
 
     assert_difference "ChangesetComment.count", 1 do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :comment, :params => { :id => private_user_closed_changeset.id, :text => "This is a comment" }
+        perform_enqueued_jobs do
+          post :comment, :params => { :id => private_user_closed_changeset.id, :text => "This is a comment" }
+        end
       end
     end
     assert_response :success
@@ -2166,7 +2168,9 @@ CHANGESET
 
     assert_difference "ChangesetComment.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 1 do
-        post :comment, :params => { :id => changeset.id, :text => "This is a comment" }
+        perform_enqueued_jobs do
+          post :comment, :params => { :id => changeset.id, :text => "This is a comment" }
+        end
       end
     end
     assert_response :success
@@ -2182,7 +2186,9 @@ CHANGESET
 
     assert_difference "ChangesetComment.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 2 do
-        post :comment, :params => { :id => changeset.id, :text => "This is a comment" }
+        perform_enqueued_jobs do
+          post :comment, :params => { :id => changeset.id, :text => "This is a comment" }
+        end
       end
     end
     assert_response :success
index f28bef6feae5a2df6d77e1c6b7d749796e04088d..cec2250476fe17e8c89668f79f90314544261032 100644 (file)
@@ -390,9 +390,11 @@ class DiaryEntryControllerTest < ActionController::TestCase
     assert_no_difference "ActionMailer::Base.deliveries.size" do
       assert_no_difference "DiaryComment.count" do
         assert_no_difference "entry.subscribers.count" do
-          post :comment,
-               :params => { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "" } },
-               :session => { :user => other_user }
+          perform_enqueued_jobs do
+            post :comment,
+                 :params => { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "" } },
+                 :session => { :user => other_user }
+          end
         end
       end
     end
@@ -403,9 +405,11 @@ class DiaryEntryControllerTest < ActionController::TestCase
     assert_difference "ActionMailer::Base.deliveries.size", entry.subscribers.count do
       assert_difference "DiaryComment.count", 1 do
         assert_difference "entry.subscribers.count", 1 do
-          post :comment,
-               :params => { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "New comment" } },
-               :session => { :user => other_user }
+          perform_enqueued_jobs do
+            post :comment,
+                 :params => { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => "New comment" } },
+                 :session => { :user => other_user }
+          end
         end
       end
     end
@@ -450,9 +454,11 @@ class DiaryEntryControllerTest < ActionController::TestCase
     # Try creating a spammy comment
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
       assert_difference "DiaryComment.count", 1 do
-        post :comment,
-             :params => { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => spammy_text } },
-             :session => { :user => other_user }
+        perform_enqueued_jobs do
+          post :comment,
+               :params => { :display_name => entry.user.display_name, :id => entry.id, :diary_comment => { :body => spammy_text } },
+               :session => { :user => other_user }
+        end
       end
     end
     assert_response :redirect
index 0b3a59b395310709e35e7199dc9eccde82edcae9..8e4d5eeb27fd0f4cd062c2dc7627fa5dea2997cd 100644 (file)
@@ -83,9 +83,11 @@ class MessagesControllerTest < ActionController::TestCase
     # Check that we can't send a message from a GET request
     assert_difference "ActionMailer::Base.deliveries.size", 0 do
       assert_difference "Message.count", 0 do
-        get :new,
-            :params => { :display_name => recipient_user.display_name,
-                         :message => { :title => "Test Message", :body => "Test message body" } }
+        perform_enqueued_jobs do
+          get :new,
+              :params => { :display_name => recipient_user.display_name,
+                           :message => { :title => "Test Message", :body => "Test message body" } }
+        end
       end
     end
     assert_response :success
@@ -112,9 +114,11 @@ class MessagesControllerTest < ActionController::TestCase
     # Check that the subject is preserved over errors
     assert_difference "ActionMailer::Base.deliveries.size", 0 do
       assert_difference "Message.count", 0 do
-        post :new,
-             :params => { :display_name => recipient_user.display_name,
-                          :message => { :title => "Test Message", :body => "" } }
+        perform_enqueued_jobs do
+          post :new,
+               :params => { :display_name => recipient_user.display_name,
+                            :message => { :title => "Test Message", :body => "" } }
+        end
       end
     end
     assert_response :success
@@ -141,9 +145,11 @@ class MessagesControllerTest < ActionController::TestCase
     # Check that the body text is preserved over errors
     assert_difference "ActionMailer::Base.deliveries.size", 0 do
       assert_difference "Message.count", 0 do
-        post :new,
-             :params => { :display_name => recipient_user.display_name,
-                          :message => { :title => "", :body => "Test message body" } }
+        perform_enqueued_jobs do
+          post :new,
+               :params => { :display_name => recipient_user.display_name,
+                            :message => { :title => "", :body => "Test message body" } }
+        end
       end
     end
     assert_response :success
@@ -170,9 +176,11 @@ class MessagesControllerTest < ActionController::TestCase
     # Check that sending a message works
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
       assert_difference "Message.count", 1 do
-        post :create,
-             :params => { :display_name => recipient_user.display_name,
-                          :message => { :title => "Test Message", :body => "Test message body" } }
+        perform_enqueued_jobs do
+          post :create,
+               :params => { :display_name => recipient_user.display_name,
+                            :message => { :title => "Test Message", :body => "Test message body" } }
+        end
       end
     end
     assert_redirected_to inbox_messages_path
@@ -211,12 +219,14 @@ class MessagesControllerTest < ActionController::TestCase
     assert_no_difference "ActionMailer::Base.deliveries.size" do
       assert_no_difference "Message.count" do
         with_message_limit(0) do
-          post :create,
-               :params => { :display_name => recipient_user.display_name,
-                            :message => { :title => "Test Message", :body => "Test message body" } }
-          assert_response :success
-          assert_template "new"
-          assert_select ".error", /wait a while/
+          perform_enqueued_jobs do
+            post :create,
+                 :params => { :display_name => recipient_user.display_name,
+                              :message => { :title => "Test Message", :body => "Test message body" } }
+            assert_response :success
+            assert_template "new"
+            assert_select ".error", /wait a while/
+          end
         end
       end
     end
index 33261c412b5141b848e6f6514a7d215b2e469cd0..a1c32333224337f95e238c024d540fa222d1fb42 100644 (file)
@@ -228,7 +228,9 @@ class NotesControllerTest < ActionController::TestCase
     open_note_with_comment = create(:note_with_comments)
     assert_difference "NoteComment.count", 1 do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :comment, :params => { :id => open_note_with_comment.id, :text => "This is an additional comment", :format => "json" }
+        perform_enqueued_jobs do
+          post :comment, :params => { :id => open_note_with_comment.id, :text => "This is an additional comment", :format => "json" }
+        end
       end
     end
     assert_response :success
@@ -265,7 +267,9 @@ class NotesControllerTest < ActionController::TestCase
     end
     assert_difference "NoteComment.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 2 do
-        post :comment, :params => { :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json" }
+        perform_enqueued_jobs do
+          post :comment, :params => { :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json" }
+        end
       end
     end
     assert_response :success
@@ -307,7 +311,9 @@ class NotesControllerTest < ActionController::TestCase
 
     assert_difference "NoteComment.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 2 do
-        post :comment, :params => { :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json" }
+        perform_enqueued_jobs do
+          post :comment, :params => { :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json" }
+        end
       end
     end
     assert_response :success
index 94e65e09146b56650ab505d310f3cf2d816433f5..20a04e90b86d50f9eb47658c4a9afd8898b20fef 100644 (file)
@@ -237,7 +237,9 @@ class UsersControllerTest < ActionController::TestCase
 
     assert_difference "User.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 1 do
-        post :save, :session => { :new_user => user }
+        perform_enqueued_jobs do
+          post :save, :session => { :new_user => user }
+        end
       end
     end
 
@@ -259,7 +261,9 @@ class UsersControllerTest < ActionController::TestCase
 
     assert_no_difference "User.count" do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :save, :session => { :new_user => user }
+        perform_enqueued_jobs do
+          post :save, :session => { :new_user => user }
+        end
       end
     end
 
@@ -274,7 +278,9 @@ class UsersControllerTest < ActionController::TestCase
 
     assert_no_difference "User.count" do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :save, :session => { :new_user => user }
+        perform_enqueued_jobs do
+          post :save, :session => { :new_user => user }
+        end
       end
     end
 
@@ -289,7 +295,9 @@ class UsersControllerTest < ActionController::TestCase
 
     assert_no_difference "User.count" do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :save, :session => { :new_user => user }
+        perform_enqueued_jobs do
+          post :save, :session => { :new_user => user }
+        end
       end
     end
 
@@ -304,7 +312,9 @@ class UsersControllerTest < ActionController::TestCase
 
     assert_no_difference "User.count" do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :save, :session => { :new_user => user }
+        perform_enqueued_jobs do
+          post :save, :session => { :new_user => user }
+        end
       end
     end
 
@@ -318,8 +328,10 @@ class UsersControllerTest < ActionController::TestCase
 
     assert_difference "User.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 1 do
-        post :save, :session => { :new_user => user,
-                                  :referer => "/edit?editor=id#map=1/2/3" }
+        perform_enqueued_jobs do
+          post :save, :session => { :new_user => user,
+                                    :referer => "/edit?editor=id#map=1/2/3" }
+        end
       end
     end
 
@@ -489,7 +501,9 @@ class UsersControllerTest < ActionController::TestCase
     session[:token] = user.tokens.create.token
 
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      get :confirm_resend, :params => { :display_name => user.display_name }
+      perform_enqueued_jobs do
+        get :confirm_resend, :params => { :display_name => user.display_name }
+      end
     end
 
     assert_response :redirect
@@ -506,7 +520,9 @@ class UsersControllerTest < ActionController::TestCase
   def test_confirm_resend_no_token
     user = create(:user, :pending)
     assert_no_difference "ActionMailer::Base.deliveries.size" do
-      get :confirm_resend, :params => { :display_name => user.display_name }
+      perform_enqueued_jobs do
+        get :confirm_resend, :params => { :display_name => user.display_name }
+      end
     end
 
     assert_response :redirect
@@ -516,7 +532,9 @@ class UsersControllerTest < ActionController::TestCase
 
   def test_confirm_resend_unknown_user
     assert_no_difference "ActionMailer::Base.deliveries.size" do
-      get :confirm_resend, :params => { :display_name => "No Such User" }
+      perform_enqueued_jobs do
+        get :confirm_resend, :params => { :display_name => "No Such User" }
+      end
     end
 
     assert_response :redirect
@@ -674,7 +692,9 @@ class UsersControllerTest < ActionController::TestCase
     uppercase_user = build(:user, :email => user.email.upcase).tap { |u| u.save(:validate => false) }
 
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :lost_password, :params => { :user => { :email => user.email } }
+      perform_enqueued_jobs do
+        post :lost_password, :params => { :user => { :email => user.email } }
+      end
     end
     assert_response :redirect
     assert_redirected_to :action => :login
@@ -687,7 +707,9 @@ class UsersControllerTest < ActionController::TestCase
     # Test resetting using an address that matches a different user
     # that has the same address in a different case
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :lost_password, :params => { :user => { :email => user.email.upcase } }
+      perform_enqueued_jobs do
+        post :lost_password, :params => { :user => { :email => user.email.upcase } }
+      end
     end
     assert_response :redirect
     assert_redirected_to :action => :login
@@ -700,7 +722,9 @@ class UsersControllerTest < ActionController::TestCase
     # Test resetting using an address that is a case insensitive match
     # for more than one user but not an exact match for either
     assert_no_difference "ActionMailer::Base.deliveries.size" do
-      post :lost_password, :params => { :user => { :email => user.email.titlecase } }
+      perform_enqueued_jobs do
+        post :lost_password, :params => { :user => { :email => user.email.titlecase } }
+      end
     end
     assert_response :success
     assert_template :lost_password
@@ -710,7 +734,9 @@ class UsersControllerTest < ActionController::TestCase
     # address which is case insensitively unique
     third_user = create(:user)
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :lost_password, :params => { :user => { :email => third_user.email } }
+      perform_enqueued_jobs do
+        post :lost_password, :params => { :user => { :email => third_user.email } }
+      end
     end
     assert_response :redirect
     assert_redirected_to :action => :login
@@ -723,7 +749,9 @@ class UsersControllerTest < ActionController::TestCase
     # Test resetting using an address that matches a user that has the
     # same (case insensitively unique) address in a different case
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :lost_password, :params => { :user => { :email => third_user.email.upcase } }
+      perform_enqueued_jobs do
+        post :lost_password, :params => { :user => { :email => third_user.email.upcase } }
+      end
     end
     assert_response :redirect
     assert_redirected_to :action => :login
@@ -898,7 +926,9 @@ class UsersControllerTest < ActionController::TestCase
     # Changing email to one that exists should fail
     user.new_email = create(:user).email
     assert_no_difference "ActionMailer::Base.deliveries.size" do
-      post :account, :params => { :display_name => user.display_name, :user => user.attributes }, :session => { :user => user }
+      perform_enqueued_jobs do
+        post :account, :params => { :display_name => user.display_name, :user => user.attributes }, :session => { :user => user }
+      end
     end
     assert_response :success
     assert_template :account
@@ -909,7 +939,9 @@ class UsersControllerTest < ActionController::TestCase
     # Changing email to one that exists should fail, regardless of case
     user.new_email = create(:user).email.upcase
     assert_no_difference "ActionMailer::Base.deliveries.size" do
-      post :account, :params => { :display_name => user.display_name, :user => user.attributes }, :session => { :user => user }
+      perform_enqueued_jobs do
+        post :account, :params => { :display_name => user.display_name, :user => user.attributes }, :session => { :user => user }
+      end
     end
     assert_response :success
     assert_template :account
@@ -920,7 +952,9 @@ class UsersControllerTest < ActionController::TestCase
     # Changing email to one that doesn't exist should work
     user.new_email = "new_tester@example.com"
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :account, :params => { :display_name => user.display_name, :user => user.attributes }, :session => { :user => user }
+      perform_enqueued_jobs do
+        post :account, :params => { :display_name => user.display_name, :user => user.attributes }, :session => { :user => user }
+      end
     end
     assert_response :success
     assert_template :account
@@ -1258,7 +1292,9 @@ class UsersControllerTest < ActionController::TestCase
 
     # When logged in a POST should add the friendship
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :make_friend, :params => { :display_name => friend.display_name }, :session => { :user => user }
+      perform_enqueued_jobs do
+        post :make_friend, :params => { :display_name => friend.display_name }, :session => { :user => user }
+      end
     end
     assert_redirected_to user_path(friend)
     assert_match(/is now your friend/, flash[:notice])
@@ -1270,7 +1306,9 @@ class UsersControllerTest < ActionController::TestCase
 
     # A second POST should report that the friendship already exists
     assert_no_difference "ActionMailer::Base.deliveries.size" do
-      post :make_friend, :params => { :display_name => friend.display_name }, :session => { :user => user }
+      perform_enqueued_jobs do
+        post :make_friend, :params => { :display_name => friend.display_name }, :session => { :user => user }
+      end
     end
     assert_redirected_to user_path(friend)
     assert_match(/You are already friends with/, flash[:warning])
@@ -1297,7 +1335,9 @@ class UsersControllerTest < ActionController::TestCase
 
     # When logged in a POST should add the friendship and refer us
     assert_difference "ActionMailer::Base.deliveries.size", 1 do
-      post :make_friend, :params => { :display_name => friend.display_name, :referer => "/test" }, :session => { :user => user }
+      perform_enqueued_jobs do
+        post :make_friend, :params => { :display_name => friend.display_name, :referer => "/test" }, :session => { :user => user }
+      end
     end
     assert_redirected_to "/test"
     assert_match(/is now your friend/, flash[:notice])
index 555e579f4926192695d9c9a08734afe53e31ae5d..144a45a45ad990af426dd413dc8f62164da1e96f 100644 (file)
@@ -37,9 +37,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest
       display_name = "#{locale}_new_tester"
       assert_difference("User.count", 0) do
         assert_difference("ActionMailer::Base.deliveries.size", 0) do
-          post "/user/new",
-               :params => { :user => { :email => dup_email, :email_confirmation => dup_email, :display_name => display_name, :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } },
-               :headers => { "HTTP_ACCEPT_LANGUAGE" => locale.to_s }
+          perform_enqueued_jobs do
+            post "/user/new",
+                 :params => { :user => { :email => dup_email, :email_confirmation => dup_email, :display_name => display_name, :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } },
+                 :headers => { "HTTP_ACCEPT_LANGUAGE" => locale.to_s }
+          end
         end
       end
       assert_response :success
@@ -56,9 +58,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest
       email = "#{locale}_new_tester"
       assert_difference("User.count", 0) do
         assert_difference("ActionMailer::Base.deliveries.size", 0) do
-          post "/user/new",
-               :params => { :user => { :email => email, :email_confirmation => email, :display_name => dup_display_name, :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } },
-               :headers => { "HTTP_ACCEPT_LANGUAGE" => locale.to_s }
+          perform_enqueued_jobs do
+            post "/user/new",
+                 :params => { :user => { :email => email, :email_confirmation => email, :display_name => dup_display_name, :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } },
+                 :headers => { "HTTP_ACCEPT_LANGUAGE" => locale.to_s }
+          end
         end
       end
       assert_response :success
@@ -75,8 +79,10 @@ class UserCreationTest < ActionDispatch::IntegrationTest
 
       assert_difference("User.count", 0) do
         assert_difference("ActionMailer::Base.deliveries.size", 0) do
-          post "/user/new",
-               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          perform_enqueued_jobs do
+            post "/user/new",
+                 :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          end
         end
       end
 
@@ -84,9 +90,11 @@ class UserCreationTest < ActionDispatch::IntegrationTest
 
       assert_difference("User.count") do
         assert_difference("ActionMailer::Base.deliveries.size", 1) do
-          post "/user/save",
-               :headers => { "HTTP_ACCEPT_LANGUAGE" => locale.to_s }
-          follow_redirect!
+          perform_enqueued_jobs do
+            post "/user/save",
+                 :headers => { "HTTP_ACCEPT_LANGUAGE" => locale.to_s }
+            follow_redirect!
+          end
         end
       end
 
@@ -122,12 +130,14 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :pass_crypt => password, :pass_crypt_confirmation => password }, :referer => referer }
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :pass_crypt => password, :pass_crypt_confirmation => password } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :pass_crypt => password, :pass_crypt_confirmation => password }, :referer => referer }
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :pass_crypt => password, :pass_crypt_confirmation => password } }
+          follow_redirect!
+        end
       end
     end
 
@@ -168,20 +178,22 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     password = "testtest"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => password, :pass_crypt_confirmation => password } }
-        assert_response :redirect
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => password, :pass_crypt_confirmation => password } }
+          assert_response :redirect
+          follow_redirect!
+        end
       end
     end
 
@@ -199,21 +211,23 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     display_name = "new_tester-openid2"
     assert_difference("User.count", 0) do
       assert_difference("ActionMailer::Base.deliveries.size", 0) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        follow_redirect!
-        assert_response :success
-        assert_template "users/new"
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_failure_path(:strategy => "openid", :message => "connection_failed", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          follow_redirect!
+          assert_response :success
+          assert_template "users/new"
+        end
       end
     end
 
@@ -229,19 +243,21 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "openid", :openid_url => "http://localhost:1123/new.tester", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "openid", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          follow_redirect!
+        end
       end
     end
 
@@ -284,20 +300,22 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     password = "testtest"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "google")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
-        assert_response :redirect
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "google")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
+          assert_response :redirect
+          follow_redirect!
+        end
       end
     end
 
@@ -315,21 +333,23 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     display_name = "new_tester-google2"
     assert_difference("User.count", 0) do
       assert_difference("ActionMailer::Base.deliveries.size", 0) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "google")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_failure_path(:strategy => "google", :message => "connection_failed", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        follow_redirect!
-        assert_response :success
-        assert_template "users/new"
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "google")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_failure_path(:strategy => "google", :message => "connection_failed", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          follow_redirect!
+          assert_response :success
+          assert_template "users/new"
+        end
       end
     end
 
@@ -347,19 +367,21 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "google")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "google", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "google")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "google", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          follow_redirect!
+        end
       end
     end
 
@@ -400,20 +422,22 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     password = "testtest"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "facebook")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
-        assert_response :redirect
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "facebook")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
+          assert_response :redirect
+          follow_redirect!
+        end
       end
     end
 
@@ -431,21 +455,23 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     display_name = "new_tester-facebook2"
     assert_difference("User.count", 0) do
       assert_difference("ActionMailer::Base.deliveries.size", 0) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "facebook")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_failure_path(:strategy => "facebook", :message => "connection_failed", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        follow_redirect!
-        assert_response :success
-        assert_template "users/new"
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "facebook")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_failure_path(:strategy => "facebook", :message => "connection_failed", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          follow_redirect!
+          assert_response :success
+          assert_template "users/new"
+        end
       end
     end
 
@@ -461,19 +487,21 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "facebook")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "facebook", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "facebook")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "facebook", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          follow_redirect!
+        end
       end
     end
 
@@ -514,20 +542,22 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     password = "testtest"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "windowslive")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
-        assert_response :redirect
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "windowslive")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
+          assert_response :redirect
+          follow_redirect!
+        end
       end
     end
 
@@ -545,21 +575,23 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     display_name = "new_tester-windowslive2"
     assert_difference("User.count", 0) do
       assert_difference("ActionMailer::Base.deliveries.size", 0) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "windowslive")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "connection_failed", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        follow_redirect!
-        assert_response :success
-        assert_template "users/new"
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "windowslive")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_failure_path(:strategy => "windowslive", :message => "connection_failed", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          follow_redirect!
+          assert_response :success
+          assert_template "users/new"
+        end
       end
     end
 
@@ -575,19 +607,21 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "windowslive")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "windowslive", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "windowslive")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "windowslive", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          follow_redirect!
+        end
       end
     end
 
@@ -628,20 +662,22 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     password = "testtest"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "github")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
-        assert_response :redirect
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "github")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
+          assert_response :redirect
+          follow_redirect!
+        end
       end
     end
 
@@ -659,21 +695,23 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     display_name = "new_tester-github2"
     assert_difference("User.count", 0) do
       assert_difference("ActionMailer::Base.deliveries.size", 0) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        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")
-        follow_redirect!
-        assert_response :redirect
-        follow_redirect!
-        assert_response :success
-        assert_template "users/new"
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          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")
+          follow_redirect!
+          assert_response :redirect
+          follow_redirect!
+          assert_response :success
+          assert_template "users/new"
+        end
       end
     end
 
@@ -689,19 +727,21 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "github")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "github", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "github")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "github", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          follow_redirect!
+        end
       end
     end
 
@@ -742,20 +782,22 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     password = "testtest"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
-        assert_response :redirect
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :auth_uid => "123454321", :pass_crypt => password, :pass_crypt_confirmation => password } }
+          assert_response :redirect
+          follow_redirect!
+        end
       end
     end
 
@@ -773,21 +815,23 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     display_name = "new_tester-wikipedia2"
     assert_difference("User.count", 0) do
       assert_difference("ActionMailer::Base.deliveries.size", 0) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :pass_crypt => "", :pass_crypt_confirmation => "" } }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_failure_path(:strategy => "wikipedia", :message => "connection_failed", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        follow_redirect!
-        assert_response :success
-        assert_template "users/new"
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :pass_crypt => "", :pass_crypt_confirmation => "" } }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_failure_path(:strategy => "wikipedia", :message => "connection_failed", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          follow_redirect!
+          assert_response :success
+          assert_template "users/new"
+        end
       end
     end
 
@@ -803,19 +847,21 @@ class UserCreationTest < ActionDispatch::IntegrationTest
     referer = "/traces/mine"
     assert_difference("User.count") do
       assert_difference("ActionMailer::Base.deliveries.size", 1) do
-        post "/user/new",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
-        assert_response :redirect
-        assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new")
-        follow_redirect!
-        assert_response :redirect
-        assert_redirected_to "/user/terms"
-        post "/user/save",
-             :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
-        follow_redirect!
+        perform_enqueued_jobs do
+          post "/user/new",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :pass_crypt => "", :pass_crypt_confirmation => "" }, :referer => referer }
+          assert_response :redirect
+          assert_redirected_to auth_path(:provider => "wikipedia", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to auth_success_path(:provider => "wikipedia", :origin => "/user/new")
+          follow_redirect!
+          assert_response :redirect
+          assert_redirected_to "/user/terms"
+          post "/user/save",
+               :params => { :user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :auth_provider => "wikipedia", :auth_uid => "http://localhost:1123/new.tester", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest" } }
+          follow_redirect!
+        end
       end
     end
 
index 83cf909dd94f208c5b89c20e024f8e6941e040f4..fca1f64c958adf887b42c53b491fab454447a56e 100644 (file)
@@ -11,6 +11,7 @@ WebMock.disable_net_connect!(:allow_localhost => true)
 module ActiveSupport
   class TestCase
     include FactoryBot::Syntax::Methods
+    include ActiveJob::TestHelper
 
     ##
     # takes a block which is executed in the context of a different