diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb index 8af4242ba..ddb94d5ca 100644 --- a/app/controllers/api/v1/accounts_controller.rb +++ b/app/controllers/api/v1/accounts_controller.rb @@ -90,7 +90,7 @@ class Api::V1::AccountsController < Api::BaseController end def account_params - params.permit(:username, :email, :password, :agreement, :locale, :reason) + params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone) end def check_enabled_registrations diff --git a/app/controllers/settings/preferences/base_controller.rb b/app/controllers/settings/preferences/base_controller.rb index faf778a7e..c1f8b4989 100644 --- a/app/controllers/settings/preferences/base_controller.rb +++ b/app/controllers/settings/preferences/base_controller.rb @@ -19,6 +19,6 @@ class Settings::Preferences::BaseController < Settings::BaseController end def user_params - params.require(:user).permit(:locale, chosen_languages: [], settings_attributes: UserSettings.keys) + params.require(:user).permit(:locale, :time_zone, chosen_languages: [], settings_attributes: UserSettings.keys) end end diff --git a/app/models/account.rb b/app/models/account.rb index 8babe7e10..02afc78ca 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -144,6 +144,7 @@ class Account < ApplicationRecord :locale, :shows_application?, :prefers_noindex?, + :time_zone, to: :user, prefix: true, allow_nil: true diff --git a/app/models/user.rb b/app/models/user.rb index 7181cf8d6..e5ec2447c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -40,6 +40,7 @@ # sign_up_ip :inet # role_id :bigint(8) # settings :text +# time_zone :string # class User < ApplicationRecord @@ -99,6 +100,7 @@ class User < ApplicationRecord validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? } validates_with EmailMxValidator, if: :validate_email_dns? validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create + validates :time_zone, inclusion: { in: ActiveSupport::TimeZone.all.map { |tz| tz.tzinfo.name } }, allow_blank: true # Honeypot/anti-spam fields attr_accessor :registration_form_time, :website, :confirm_password diff --git a/app/services/app_sign_up_service.rb b/app/services/app_sign_up_service.rb index 3833327bb..94547b61b 100644 --- a/app/services/app_sign_up_service.rb +++ b/app/services/app_sign_up_service.rb @@ -35,7 +35,7 @@ class AppSignUpService < BaseService end def user_params - @params.slice(:email, :password, :agreement, :locale) + @params.slice(:email, :password, :agreement, :locale, :time_zone) end def account_params diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml index fd65039ae..d8aa38b11 100644 --- a/app/views/notification_mailer/_status.html.haml +++ b/app/views/notification_mailer/_status.html.haml @@ -42,4 +42,4 @@ = link_to a.remote_url, a.remote_url %p.status-footer - = link_to l(status.created_at), web_url("@#{status.account.pretty_acct}/#{status.id}") + = link_to l(status.created_at.in_time_zone(time_zone)), web_url("@#{status.account.pretty_acct}/#{status.id}") diff --git a/app/views/notification_mailer/favourite.html.haml b/app/views/notification_mailer/favourite.html.haml index 4ec89172d..325f0aff5 100644 --- a/app/views/notification_mailer/favourite.html.haml +++ b/app/views/notification_mailer/favourite.html.haml @@ -22,7 +22,7 @@ %h1= t 'notification_mailer.favourite.title' %p.lead= t('notification_mailer.favourite.body', name: @account.pretty_acct) -= render 'status', status: @status += render 'status', status: @status, time_zone: @me.user_time_zone %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/notification_mailer/mention.html.haml b/app/views/notification_mailer/mention.html.haml index 4ae9bb7b0..e830644c3 100644 --- a/app/views/notification_mailer/mention.html.haml +++ b/app/views/notification_mailer/mention.html.haml @@ -22,7 +22,7 @@ %h1= t 'notification_mailer.mention.title' %p.lead= t('notification_mailer.mention.body', name: @status.account.pretty_acct) -= render 'status', status: @status += render 'status', status: @status, time_zone: @me.user_time_zone %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/notification_mailer/reblog.html.haml b/app/views/notification_mailer/reblog.html.haml index f805c79f0..e4f944123 100644 --- a/app/views/notification_mailer/reblog.html.haml +++ b/app/views/notification_mailer/reblog.html.haml @@ -22,7 +22,7 @@ %h1= t 'notification_mailer.reblog.title' %p.lead= t('notification_mailer.reblog.body', name: @account.pretty_acct) -= render 'status', status: @status += render 'status', status: @status, time_zone: @me.user_time_zone %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index dc82ce5b6..44db9b91c 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -6,9 +6,12 @@ = simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f| .fields-row - .fields-group + .fields-group.fields-row__column.fields-row__column-6 = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| native_locale_name(locale) }, selected: I18n.locale, hint: false + .fields-group.fields-row__column.fields-row__column-6 + = f.input :time_zone, wrapper: :with_label, collection: ActiveSupport::TimeZone.all.map { |tz| ["(GMT#{tz.formatted_offset}) #{tz.name}", tz.tzinfo.name] }, hint: false + - unless I18n.locale == :en .flash-message.translation-prompt #{t 'appearance.localization.body'} #{content_tag(:a, t('appearance.localization.guide_link_text'), href: t('appearance.localization.guide_link'), target: '_blank', rel: 'noopener')} diff --git a/app/views/user_mailer/appeal_approved.html.haml b/app/views/user_mailer/appeal_approved.html.haml index 962cab2e2..d62789a06 100644 --- a/app/views/user_mailer/appeal_approved.html.haml +++ b/app/views/user_mailer/appeal_approved.html.haml @@ -36,7 +36,7 @@ %tbody %tr %td.column-cell.text-center - %p= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) + %p= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone)), strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone)) %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/user_mailer/appeal_approved.text.erb b/app/views/user_mailer/appeal_approved.text.erb index 290fa24c3..99596605a 100644 --- a/app/views/user_mailer/appeal_approved.text.erb +++ b/app/views/user_mailer/appeal_approved.text.erb @@ -2,6 +2,6 @@ === -<%= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) %> +<%= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone)), strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone)) %> => <%= root_url %> diff --git a/app/views/user_mailer/appeal_rejected.html.haml b/app/views/user_mailer/appeal_rejected.html.haml index c316a73fb..ae60775b0 100644 --- a/app/views/user_mailer/appeal_rejected.html.haml +++ b/app/views/user_mailer/appeal_rejected.html.haml @@ -36,7 +36,7 @@ %tbody %tr %td.column-cell.text-center - %p= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) + %p= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone)), strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone)) %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/user_mailer/appeal_rejected.text.erb b/app/views/user_mailer/appeal_rejected.text.erb index f47a76818..3c9377718 100644 --- a/app/views/user_mailer/appeal_rejected.text.erb +++ b/app/views/user_mailer/appeal_rejected.text.erb @@ -2,6 +2,6 @@ === -<%= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) %> +<%= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at.in_time_zone(@resource.time_zone)), strike_date: l(@appeal.strike.created_at.in_time_zone(@resource.time_zone)) %> => <%= root_url %> diff --git a/app/views/user_mailer/suspicious_sign_in.html.haml b/app/views/user_mailer/suspicious_sign_in.html.haml index e4ad500c3..6ebba3fa5 100644 --- a/app/views/user_mailer/suspicious_sign_in.html.haml +++ b/app/views/user_mailer/suspicious_sign_in.html.haml @@ -47,7 +47,7 @@ %strong= "#{t('sessions.browser')}:" %span{ title: @user_agent }= t 'sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: @detection.id.to_s), platform: t("sessions.platforms.#{@detection.platform.id}", default: @detection.platform.id.to_s) %br/ - = l(@timestamp) + = l(@timestamp.in_time_zone(@resource.time_zone)) %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/app/views/user_mailer/suspicious_sign_in.text.erb b/app/views/user_mailer/suspicious_sign_in.text.erb index 7d2ca28e8..956071e77 100644 --- a/app/views/user_mailer/suspicious_sign_in.text.erb +++ b/app/views/user_mailer/suspicious_sign_in.text.erb @@ -8,7 +8,7 @@ <%= t('sessions.ip') %>: <%= @remote_ip %> <%= t('sessions.browser') %>: <%= t('sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: "#{@detection.id}"), platform: t("sessions.platforms.#{@detection.platform.id}", default: "#{@detection.platform.id}")) %> -<%= l(@timestamp) %> +<%= l(@timestamp.in_time_zone(@resource.time_zone)) %> <%= t 'user_mailer.suspicious_sign_in.further_actions_html', action: t('user_mailer.suspicious_sign_in.change_password') %> diff --git a/app/views/user_mailer/warning.html.haml b/app/views/user_mailer/warning.html.haml index b9422e950..9cb73b0fe 100644 --- a/app/views/user_mailer/warning.html.haml +++ b/app/views/user_mailer/warning.html.haml @@ -58,7 +58,7 @@ - unless @statuses.empty? - @statuses.each_with_index do |status, i| - = render 'notification_mailer/status', status: status, i: i + 1, highlighted: true + = render 'notification_mailer/status', status: status, i: i + 1, highlighted: true, time_zone: @resource.time_zone %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index f92e66e55..330c8732f 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -297,6 +297,7 @@ en: usable: Allow posts to use this hashtag user: role: Role + time_zone: Time zone user_role: color: Badge color highlighted: Display role as badge on user profiles diff --git a/db/migrate/20230605085711_add_time_zone_to_users.rb b/db/migrate/20230605085711_add_time_zone_to_users.rb new file mode 100644 index 000000000..fc6c0b091 --- /dev/null +++ b/db/migrate/20230605085711_add_time_zone_to_users.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddTimeZoneToUsers < ActiveRecord::Migration[6.1] + def change + add_column :users, :time_zone, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 038451dab..ecfa376ab 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2023_06_05_085710) do +ActiveRecord::Schema.define(version: 2023_06_05_085711) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -1091,6 +1091,7 @@ ActiveRecord::Schema.define(version: 2023_06_05_085710) do t.boolean "skip_sign_in_token" t.bigint "role_id" t.text "settings" + t.string "time_zone" t.index ["account_id"], name: "index_users_on_account_id" t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id", where: "(created_by_application_id IS NOT NULL)" diff --git a/spec/fabricators/account_domain_block_fabricator.rb b/spec/fabricators/account_domain_block_fabricator.rb index ff85e17f3..83df509da 100644 --- a/spec/fabricators/account_domain_block_fabricator.rb +++ b/spec/fabricators/account_domain_block_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:account_domain_block) do - account + account { Fabricate.build(:account) } domain 'example.com' end diff --git a/spec/fabricators/account_moderation_note_fabricator.rb b/spec/fabricators/account_moderation_note_fabricator.rb index 341a24dea..05a687bf4 100644 --- a/spec/fabricators/account_moderation_note_fabricator.rb +++ b/spec/fabricators/account_moderation_note_fabricator.rb @@ -2,6 +2,6 @@ Fabricator(:account_moderation_note) do content 'MyText' - account - target_account { Fabricate(:account) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account) } end diff --git a/spec/fabricators/account_note_fabricator.rb b/spec/fabricators/account_note_fabricator.rb index bb4ed8b24..241362c14 100644 --- a/spec/fabricators/account_note_fabricator.rb +++ b/spec/fabricators/account_note_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:account_note) do - account - target_account { Fabricate(:account) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account) } comment 'User note text' end diff --git a/spec/fabricators/account_stat_fabricator.rb b/spec/fabricators/account_stat_fabricator.rb index e6085c5f2..20272fb22 100644 --- a/spec/fabricators/account_stat_fabricator.rb +++ b/spec/fabricators/account_stat_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:account_stat) do - account + account { Fabricate.build(:account) } statuses_count '123' following_count '456' followers_count '789' diff --git a/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb b/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb index 0e756ddba..fcf7a5347 100644 --- a/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb +++ b/spec/fabricators/account_statuses_cleanup_policy_fabricator.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true Fabricator(:account_statuses_cleanup_policy) do - account + account { Fabricate.build(:account) } end diff --git a/spec/fabricators/account_warning_fabricator.rb b/spec/fabricators/account_warning_fabricator.rb index e5059e37f..70005a927 100644 --- a/spec/fabricators/account_warning_fabricator.rb +++ b/spec/fabricators/account_warning_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:account_warning) do - account + account { Fabricate.build(:account) } target_account(fabricator: :account) text { Faker::Lorem.paragraph } action 'suspend' diff --git a/spec/fabricators/admin_action_log_fabricator.rb b/spec/fabricators/admin_action_log_fabricator.rb index a259644bd..3acedbffd 100644 --- a/spec/fabricators/admin_action_log_fabricator.rb +++ b/spec/fabricators/admin_action_log_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator('Admin::ActionLog') do - account + account { Fabricate.build(:account) } action 'MyString' target nil end diff --git a/spec/fabricators/backup_fabricator.rb b/spec/fabricators/backup_fabricator.rb index c73ae54be..58e37c987 100644 --- a/spec/fabricators/backup_fabricator.rb +++ b/spec/fabricators/backup_fabricator.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true Fabricator(:backup) do - user + user { Fabricate.build(:user) } end diff --git a/spec/fabricators/block_fabricator.rb b/spec/fabricators/block_fabricator.rb index c2e9e9628..c4087e46d 100644 --- a/spec/fabricators/block_fabricator.rb +++ b/spec/fabricators/block_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:block) do - account - target_account { Fabricate(:account) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account) } end diff --git a/spec/fabricators/bookmark_fabricator.rb b/spec/fabricators/bookmark_fabricator.rb index e21046fc2..994ac6e68 100644 --- a/spec/fabricators/bookmark_fabricator.rb +++ b/spec/fabricators/bookmark_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:bookmark) do - account - status + account { Fabricate.build(:account) } + status { Fabricate.build(:status) } end diff --git a/spec/fabricators/bulk_import_fabricator.rb b/spec/fabricators/bulk_import_fabricator.rb index 673b7960d..d30758dfe 100644 --- a/spec/fabricators/bulk_import_fabricator.rb +++ b/spec/fabricators/bulk_import_fabricator.rb @@ -8,5 +8,5 @@ Fabricator(:bulk_import) do imported_items 1 finished_at '2022-11-18 14:55:07' overwrite false - account + account { Fabricate.build(:account) } end diff --git a/spec/fabricators/bulk_import_row_fabricator.rb b/spec/fabricators/bulk_import_row_fabricator.rb index f8358e734..10a4bf160 100644 --- a/spec/fabricators/bulk_import_row_fabricator.rb +++ b/spec/fabricators/bulk_import_row_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:bulk_import_row) do - bulk_import + bulk_import { Fabricate.build(:bulk_import) } data '' end diff --git a/spec/fabricators/canonical_email_block_fabricator.rb b/spec/fabricators/canonical_email_block_fabricator.rb index 3a018059f..1ef53ff4a 100644 --- a/spec/fabricators/canonical_email_block_fabricator.rb +++ b/spec/fabricators/canonical_email_block_fabricator.rb @@ -2,5 +2,5 @@ Fabricator(:canonical_email_block) do email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } } - reference_account { Fabricate(:account) } + reference_account { Fabricate.build(:account) } end diff --git a/spec/fabricators/custom_filter_fabricator.rb b/spec/fabricators/custom_filter_fabricator.rb index 5fee4f01a..766cc3b11 100644 --- a/spec/fabricators/custom_filter_fabricator.rb +++ b/spec/fabricators/custom_filter_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:custom_filter) do - account + account { Fabricate.build(:account) } expires_at nil phrase 'discourse' context %w(home notifications) diff --git a/spec/fabricators/custom_filter_keyword_fabricator.rb b/spec/fabricators/custom_filter_keyword_fabricator.rb index f1fb440dc..aa4bf8473 100644 --- a/spec/fabricators/custom_filter_keyword_fabricator.rb +++ b/spec/fabricators/custom_filter_keyword_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:custom_filter_keyword) do - custom_filter + custom_filter { Fabricate.build(:custom_filter) } keyword 'discourse' end diff --git a/spec/fabricators/custom_filter_status_fabricator.rb b/spec/fabricators/custom_filter_status_fabricator.rb index 3ef1d0ec8..f66f62e56 100644 --- a/spec/fabricators/custom_filter_status_fabricator.rb +++ b/spec/fabricators/custom_filter_status_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:custom_filter_status) do - custom_filter - status + custom_filter { Fabricate.build(:custom_filter) } + status { Fabricate.build(:status) } end diff --git a/spec/fabricators/device_fabricator.rb b/spec/fabricators/device_fabricator.rb index 26c71b4fd..37a2e8977 100644 --- a/spec/fabricators/device_fabricator.rb +++ b/spec/fabricators/device_fabricator.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true Fabricator(:device) do - access_token - account + access_token { Fabricate.build(:access_token) } + account { Fabricate.build(:account) } device_id { Faker::Number.number(digits: 5) } name { Faker::App.name } fingerprint_key { Base64.strict_encode64(Ed25519::SigningKey.generate.verify_key.to_bytes) } diff --git a/spec/fabricators/encrypted_message_fabricator.rb b/spec/fabricators/encrypted_message_fabricator.rb index 43b310514..349b659c2 100644 --- a/spec/fabricators/encrypted_message_fabricator.rb +++ b/spec/fabricators/encrypted_message_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:encrypted_message) do - device - from_account { Fabricate(:account) } + device { Fabricate.build(:device) } + from_account { Fabricate.build(:account) } from_device_id { Faker::Number.number(digits: 5) } end diff --git a/spec/fabricators/favourite_fabricator.rb b/spec/fabricators/favourite_fabricator.rb index 005947e6f..639416987 100644 --- a/spec/fabricators/favourite_fabricator.rb +++ b/spec/fabricators/favourite_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:favourite) do - account - status + account { Fabricate.build(:account) } + status { Fabricate.build(:status) } end diff --git a/spec/fabricators/featured_tag_fabricator.rb b/spec/fabricators/featured_tag_fabricator.rb index 838364056..0803dc43a 100644 --- a/spec/fabricators/featured_tag_fabricator.rb +++ b/spec/fabricators/featured_tag_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:featured_tag) do - account - tag + account { Fabricate.build(:account) } + tag { Fabricate.build(:tag) } name { sequence(:name) { |i| "Tag#{i}" } } end diff --git a/spec/fabricators/follow_fabricator.rb b/spec/fabricators/follow_fabricator.rb index 41b5305d5..29886b430 100644 --- a/spec/fabricators/follow_fabricator.rb +++ b/spec/fabricators/follow_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:follow) do - account - target_account { Fabricate(:account) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account) } end diff --git a/spec/fabricators/follow_request_fabricator.rb b/spec/fabricators/follow_request_fabricator.rb index 86b82611f..6b2d658a3 100644 --- a/spec/fabricators/follow_request_fabricator.rb +++ b/spec/fabricators/follow_request_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:follow_request) do - account - target_account { Fabricate(:account, locked: true) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account, locked: true) } end diff --git a/spec/fabricators/identity_fabricator.rb b/spec/fabricators/identity_fabricator.rb index 58072c0d6..83655ee83 100644 --- a/spec/fabricators/identity_fabricator.rb +++ b/spec/fabricators/identity_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:identity) do - user + user { Fabricate.build(:user) } provider 'MyString' uid 'MyString' end diff --git a/spec/fabricators/invite_fabricator.rb b/spec/fabricators/invite_fabricator.rb index 4f47d6ce2..8fdf5f918 100644 --- a/spec/fabricators/invite_fabricator.rb +++ b/spec/fabricators/invite_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:invite) do - user + user { Fabricate.build(:user) } expires_at nil max_uses nil uses 0 diff --git a/spec/fabricators/list_fabricator.rb b/spec/fabricators/list_fabricator.rb index 47af752b8..d2bdc1012 100644 --- a/spec/fabricators/list_fabricator.rb +++ b/spec/fabricators/list_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:list) do - account + account { Fabricate.build(:account) } title 'MyString' end diff --git a/spec/fabricators/login_activity_fabricator.rb b/spec/fabricators/login_activity_fabricator.rb index 2b30658ff..3309a303d 100644 --- a/spec/fabricators/login_activity_fabricator.rb +++ b/spec/fabricators/login_activity_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:login_activity) do - user + user { Fabricate.build(:user) } authentication_method 'password' success true failure_reason nil diff --git a/spec/fabricators/marker_fabricator.rb b/spec/fabricators/marker_fabricator.rb index 561c2553a..641db6b9e 100644 --- a/spec/fabricators/marker_fabricator.rb +++ b/spec/fabricators/marker_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:marker) do - user + user { Fabricate.build(:user) } timeline 'home' last_read_id 0 lock_version 0 diff --git a/spec/fabricators/media_attachment_fabricator.rb b/spec/fabricators/media_attachment_fabricator.rb index 4a081dccb..062d3cbfe 100644 --- a/spec/fabricators/media_attachment_fabricator.rb +++ b/spec/fabricators/media_attachment_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:media_attachment) do - account + account { Fabricate.build(:account) } file do |attrs| case attrs[:type] diff --git a/spec/fabricators/mention_fabricator.rb b/spec/fabricators/mention_fabricator.rb index 5a8392827..ee8160aeb 100644 --- a/spec/fabricators/mention_fabricator.rb +++ b/spec/fabricators/mention_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:mention) do - account - status + account { Fabricate.build(:account) } + status { Fabricate.build(:status) } end diff --git a/spec/fabricators/mute_fabricator.rb b/spec/fabricators/mute_fabricator.rb index 242ae2b08..a70d3ff26 100644 --- a/spec/fabricators/mute_fabricator.rb +++ b/spec/fabricators/mute_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:mute) do - account - target_account { Fabricate(:account) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account) } end diff --git a/spec/fabricators/notification_fabricator.rb b/spec/fabricators/notification_fabricator.rb index 1e0c80987..fdfd7673e 100644 --- a/spec/fabricators/notification_fabricator.rb +++ b/spec/fabricators/notification_fabricator.rb @@ -2,5 +2,5 @@ Fabricator(:notification) do activity fabricator: :status - account + account { Fabricate.build(:account) } end diff --git a/spec/fabricators/one_time_key_fabricator.rb b/spec/fabricators/one_time_key_fabricator.rb index cfb365cab..505282e05 100644 --- a/spec/fabricators/one_time_key_fabricator.rb +++ b/spec/fabricators/one_time_key_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:one_time_key) do - device + device { Fabricate.build(:device) } key_id { Faker::Alphanumeric.alphanumeric(number: 10) } key { Base64.strict_encode64(Ed25519::SigningKey.generate.verify_key.to_bytes) } diff --git a/spec/fabricators/poll_fabricator.rb b/spec/fabricators/poll_fabricator.rb index 19c3b1d16..0203609ce 100644 --- a/spec/fabricators/poll_fabricator.rb +++ b/spec/fabricators/poll_fabricator.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true Fabricator(:poll) do - account - status + account { Fabricate.build(:account) } + status { Fabricate.build(:status) } expires_at { 7.days.from_now } options %w(Foo Bar) multiple false diff --git a/spec/fabricators/poll_vote_fabricator.rb b/spec/fabricators/poll_vote_fabricator.rb index 9099ae96f..47813cdb7 100644 --- a/spec/fabricators/poll_vote_fabricator.rb +++ b/spec/fabricators/poll_vote_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:poll_vote) do - account + account { Fabricate.build(:account) } poll choice 0 end diff --git a/spec/fabricators/report_fabricator.rb b/spec/fabricators/report_fabricator.rb index 7124773ad..ed890230a 100644 --- a/spec/fabricators/report_fabricator.rb +++ b/spec/fabricators/report_fabricator.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true Fabricator(:report) do - account - target_account { Fabricate(:account) } + account { Fabricate.build(:account) } + target_account { Fabricate.build(:account) } comment 'You nasty' action_taken_at nil end diff --git a/spec/fabricators/report_note_fabricator.rb b/spec/fabricators/report_note_fabricator.rb index f257fe2b7..080fad51a 100644 --- a/spec/fabricators/report_note_fabricator.rb +++ b/spec/fabricators/report_note_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:report_note) do - report - account { Fabricate(:account) } + report { Fabricate.build(:report) } + account { Fabricate.build(:account) } content 'Test Content' end diff --git a/spec/fabricators/scheduled_status_fabricator.rb b/spec/fabricators/scheduled_status_fabricator.rb index e517f258a..eed275ab9 100644 --- a/spec/fabricators/scheduled_status_fabricator.rb +++ b/spec/fabricators/scheduled_status_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:scheduled_status) do - account + account { Fabricate.build(:account) } scheduled_at { 20.hours.from_now } end diff --git a/spec/fabricators/session_activation_fabricator.rb b/spec/fabricators/session_activation_fabricator.rb index b28d5e41d..4b5244cec 100644 --- a/spec/fabricators/session_activation_fabricator.rb +++ b/spec/fabricators/session_activation_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:session_activation) do - user + user { Fabricate.build(:user) } session_id 'MyString' end diff --git a/spec/fabricators/status_fabricator.rb b/spec/fabricators/status_fabricator.rb index 17ac9ccd8..32a2cbf6a 100644 --- a/spec/fabricators/status_fabricator.rb +++ b/spec/fabricators/status_fabricator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true Fabricator(:status) do - account + account { Fabricate.build(:account) } text 'Lorem ipsum dolor sit amet' after_build do |status| diff --git a/spec/fabricators/status_pin_fabricator.rb b/spec/fabricators/status_pin_fabricator.rb index 9ad0ac9de..ceaaa34a7 100644 --- a/spec/fabricators/status_pin_fabricator.rb +++ b/spec/fabricators/status_pin_fabricator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true Fabricator(:status_pin) do - account - status { |attrs| Fabricate(:status, account: attrs[:account], visibility: :public) } + account { Fabricate.build(:account) } + status { |attrs| Fabricate.build(:status, account: attrs[:account], visibility: :public) } end diff --git a/spec/fabricators/tag_follow_fabricator.rb b/spec/fabricators/tag_follow_fabricator.rb index cbe5b0989..014435d60 100644 --- a/spec/fabricators/tag_follow_fabricator.rb +++ b/spec/fabricators/tag_follow_fabricator.rb @@ -2,5 +2,5 @@ Fabricator(:tag_follow) do tag - account + account { Fabricate.build(:account) } end diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb index 4d4bc748f..2dfc6cf92 100644 --- a/spec/models/media_attachment_spec.rb +++ b/spec/models/media_attachment_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe MediaAttachment do +RSpec.describe MediaAttachment, paperclip_processing: true do describe 'local?' do subject { media_attachment.local? } diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index d7e2b5c18..f4113d565 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -94,6 +94,12 @@ RSpec.configure do |config| stub_jsonld_contexts! end + config.before(:each) do |example| + unless example.metadata[:paperclip_processing] + allow_any_instance_of(Paperclip::Attachment).to receive(:post_process).and_return(true) # rubocop:disable RSpec/AnyInstance + end + end + config.after :each do Rails.cache.clear redis.del(redis.keys) diff --git a/spec/support/examples/models/concerns/account_avatar.rb b/spec/support/examples/models/concerns/account_avatar.rb index 2180f5273..8f5b81f3a 100644 --- a/spec/support/examples/models/concerns/account_avatar.rb +++ b/spec/support/examples/models/concerns/account_avatar.rb @@ -17,7 +17,7 @@ shared_examples 'AccountAvatar' do |fabricator| end end - describe 'base64-encoded files' do + describe 'base64-encoded files', paperclip_processing: true do let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" } let(:account) { Fabricate(fabricator, avatar: base64_attachment) } diff --git a/spec/support/examples/models/concerns/account_header.rb b/spec/support/examples/models/concerns/account_header.rb index 77ee0e629..d65f54f00 100644 --- a/spec/support/examples/models/concerns/account_header.rb +++ b/spec/support/examples/models/concerns/account_header.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true shared_examples 'AccountHeader' do |fabricator| - describe 'base64-encoded files' do + describe 'base64-encoded files', paperclip_processing: true do let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" } let(:account) { Fabricate(fabricator, header: base64_attachment) } diff --git a/streaming/index.js b/streaming/index.js index d48f0f1b1..916962c59 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -1230,7 +1230,7 @@ const startServer = async () => { ws.on('message', (data, isBinary) => { if (isBinary) { - log.debug('Received binary data, closing connection'); + log.warn('socket', 'Received binary data, closing connection'); ws.close(1003, 'The mastodon streaming server does not support binary messages'); return; }