mirror of
https://github.com/redmine/redmine.git
synced 2025-10-26 15:56:15 +01:00
Updates Rails to 7.1.2 (#36320).
Patch by Takashi Kato. git-svn-id: https://svn.redmine.org/redmine/trunk@22488 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
6
Gemfile
6
Gemfile
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
|
||||
|
||||
ruby '>= 2.7.0', '< 3.3.0'
|
||||
|
||||
gem 'rails', '6.1.7.6'
|
||||
gem 'rails', '7.1.2'
|
||||
gem 'rouge', '~> 4.2.0'
|
||||
gem 'mini_mime', '~> 1.1.0'
|
||||
gem "actionpack-xml_parser"
|
||||
@@ -87,6 +87,10 @@ else
|
||||
warn("Please configure your config/database.yml first")
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
gem 'debug'
|
||||
end
|
||||
|
||||
group :development do
|
||||
gem 'listen', '~> 3.3'
|
||||
gem 'yard', require: false
|
||||
|
||||
@@ -100,7 +100,7 @@ class AttachmentsController < ApplicationController
|
||||
def upload
|
||||
# Make sure that API users get used to set this content type
|
||||
# as it won't trigger Rails' automatic parsing of the request body for parameters
|
||||
unless request.content_type == 'application/octet-stream'
|
||||
unless request.media_type == 'application/octet-stream'
|
||||
head 406
|
||||
return
|
||||
end
|
||||
|
||||
@@ -259,7 +259,7 @@ module ApplicationHelper
|
||||
when Array
|
||||
formatted_objects = object.map {|o| format_object(o, html)}
|
||||
html ? safe_join(formatted_objects, ', ') : formatted_objects.join(', ')
|
||||
when Time
|
||||
when Time, ActiveSupport::TimeWithZone
|
||||
format_time(object)
|
||||
when Date
|
||||
format_date(object)
|
||||
@@ -634,7 +634,7 @@ module ApplicationHelper
|
||||
'span', nil,
|
||||
:class => "name icon icon-#{principal.class.name.downcase}"
|
||||
)
|
||||
) + principal
|
||||
) + principal.to_s
|
||||
)
|
||||
end
|
||||
s.html_safe
|
||||
|
||||
@@ -345,14 +345,14 @@ class Attachment < ActiveRecord::Base
|
||||
# })
|
||||
#
|
||||
def self.update_attachments(attachments, params)
|
||||
params = params.transform_keys {|key| key.to_i}
|
||||
|
||||
converted = {}
|
||||
params.each {|key, val| converted[key.to_i] = val}
|
||||
saved = true
|
||||
transaction do
|
||||
attachments.each do |attachment|
|
||||
if p = params[attachment.id]
|
||||
attachment.filename = p[:filename] if p.key?(:filename)
|
||||
attachment.description = p[:description] if p.key?(:description)
|
||||
if file = converted[attachment.id]
|
||||
attachment.filename = file[:filename] if file.key?(:filename)
|
||||
attachment.description = file[:description] if file.key?(:description)
|
||||
saved &&= attachment.save
|
||||
end
|
||||
end
|
||||
|
||||
@@ -257,8 +257,8 @@ class Query < ActiveRecord::Base
|
||||
has_and_belongs_to_many :roles, :join_table => "#{table_name_prefix}queries_roles#{table_name_suffix}", :foreign_key => "query_id"
|
||||
serialize :filters
|
||||
serialize :column_names
|
||||
serialize :sort_criteria, Array
|
||||
serialize :options, Hash
|
||||
serialize :sort_criteria, type: Array
|
||||
serialize :options, type: Hash
|
||||
|
||||
validates_presence_of :name
|
||||
validates_length_of :name, :maximum => 255
|
||||
@@ -1631,7 +1631,7 @@ class Query < ActiveRecord::Base
|
||||
else
|
||||
from = from - 1 # second
|
||||
end
|
||||
if self.class.default_timezone == :utc
|
||||
if ActiveRecord.default_timezone == :utc
|
||||
from = from.utc
|
||||
end
|
||||
s << ("#{table}.#{field} > '%s'" % [quoted_time(from, is_custom_filter)])
|
||||
@@ -1640,7 +1640,7 @@ class Query < ActiveRecord::Base
|
||||
if to.is_a?(Date)
|
||||
to = date_for_user_time_zone(to.year, to.month, to.day).end_of_day
|
||||
end
|
||||
if self.class.default_timezone == :utc
|
||||
if ActiveRecord.default_timezone == :utc
|
||||
to = to.utc
|
||||
end
|
||||
s << ("#{table}.#{field} <= '%s'" % [quoted_time(to, is_custom_filter)])
|
||||
|
||||
@@ -76,7 +76,7 @@ class Role < ActiveRecord::Base
|
||||
has_many :members, :through => :member_roles
|
||||
acts_as_positioned :scope => :builtin
|
||||
|
||||
serialize :permissions, ::Role::PermissionsAttributeCoder
|
||||
serialize :permissions, coder: ::Role::PermissionsAttributeCoder
|
||||
store :settings, :accessors => [:permissions_all_trackers, :permissions_tracker_ids]
|
||||
|
||||
validates_presence_of :name
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div id="custom_field_project_ids">
|
||||
<% project_ids = @custom_field.project_ids.to_a %>
|
||||
<%= render_project_nested_lists(Project.all) do |p|
|
||||
content_tag('label', check_box_tag('custom_field[project_ids][]', p.id, project_ids.include?(p.id), :id => nil) + ' ' + p)
|
||||
content_tag('label', check_box_tag('custom_field[project_ids][]', p.id, project_ids.include?(p.id), :id => nil) + ' ' + p.to_s)
|
||||
end %>
|
||||
<%= hidden_field_tag('custom_field[project_ids][]', '', :id => nil) %>
|
||||
</div>
|
||||
|
||||
@@ -23,13 +23,16 @@ module RedmineApp
|
||||
# Application configuration should go into files in config/initializers
|
||||
# -- all .rb files in that directory are automatically loaded.
|
||||
|
||||
# Custom directories with classes and modules you want to be autoloadable.
|
||||
config.autoloader = :zeitwerk
|
||||
# Adds `lib` to `config.autoload_paths` and `config.eager_load_paths`.
|
||||
config.autoload_lib(ignore: %w(tasks generators plugins))
|
||||
|
||||
# Only load the plugins named here, in the order given (default is alphabetical).
|
||||
# :all can be used as a placeholder for all plugins not explicitly named.
|
||||
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
||||
|
||||
config.active_support.remove_deprecated_time_with_zone_name = true
|
||||
config.active_support.cache_format_version = 7.0
|
||||
|
||||
config.active_record.store_full_sti_class = true
|
||||
config.active_record.default_timezone = :local
|
||||
config.active_record.yaml_column_permitted_classes = [
|
||||
|
||||
@@ -30,7 +30,7 @@ Rails.application.configure do
|
||||
config.cache_store = :null_store
|
||||
|
||||
# Raise exceptions instead of rendering exception templates.
|
||||
config.action_dispatch.show_exceptions = true
|
||||
config.action_dispatch.show_exceptions = :all
|
||||
|
||||
# Disable request forgery protection in test environment.
|
||||
config.action_controller.allow_forgery_protection = false
|
||||
|
||||
@@ -47,20 +47,6 @@ module ActionView
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Resolver
|
||||
def find_all(name, prefix=nil, partial=false, details={}, key=nil, locals=[])
|
||||
locals = locals.map(&:to_s).sort!.freeze
|
||||
|
||||
cached(key, [name, prefix, partial], details, locals) do
|
||||
if (details[:formats] & [:xml, :json]).any?
|
||||
details = details.dup
|
||||
details[:formats] = details[:formats].dup + [:api]
|
||||
end
|
||||
_find_all(name, prefix, partial, details, key, locals)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| html_tag || ''.html_safe }
|
||||
@@ -69,17 +55,14 @@ ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| html_tag || '
|
||||
module ActionView
|
||||
module Helpers
|
||||
module Tags
|
||||
class Base
|
||||
private
|
||||
alias :add_options_without_non_empty_blank_option :add_options
|
||||
SelectRenderer.prepend(Module.new do
|
||||
def add_options(option_tags, options, value = nil)
|
||||
if options[:include_blank] == true
|
||||
options = options.dup
|
||||
options[:include_blank] = ' '.html_safe
|
||||
end
|
||||
add_options_without_non_empty_blank_option(option_tags, options, value)
|
||||
if options.delete(:include_blank)
|
||||
options[:prompt] = ' '.html_safe
|
||||
end
|
||||
super
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
module FormHelper
|
||||
@@ -156,6 +139,29 @@ module ActionController
|
||||
end
|
||||
end
|
||||
|
||||
module ActionView
|
||||
LookupContext.prepend(Module.new do
|
||||
def formats=(values)
|
||||
if (Array(values) & [:xml, :json]).any?
|
||||
values << :api
|
||||
end
|
||||
super values
|
||||
end
|
||||
end)
|
||||
|
||||
Rendering.prepend(Module.new do
|
||||
def rendered_format
|
||||
if lookup_context.formats.first == :api
|
||||
return request.format
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
Mime::SET << 'api'
|
||||
|
||||
# Adds asset_id parameters to assets like Rails 3 to invalidate caches in browser
|
||||
module ActionView
|
||||
module Helpers
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
lib = Rails.root.join('lib/redmine')
|
||||
Rails.autoloaders.main.push_dir lib, namespace: Redmine
|
||||
Rails.application.config.watchable_dirs[lib] = [:rb]
|
||||
|
||||
IGNORE_LIST = [
|
||||
'wiki_formatting/textile/redcloth3.rb',
|
||||
'core_ext.rb',
|
||||
|
||||
@@ -467,7 +467,7 @@ module Redmine
|
||||
else
|
||||
migrations
|
||||
end
|
||||
Migrator.new(:up, selected_migrations, schema_migration, target_version).migrate
|
||||
Migrator.new(:up, selected_migrations, schema_migration, internal_metadata, target_version).migrate
|
||||
end
|
||||
|
||||
def down(target_version = nil)
|
||||
@@ -477,15 +477,15 @@ module Redmine
|
||||
else
|
||||
migrations
|
||||
end
|
||||
Migrator.new(:down, selected_migrations, schema_migration, target_version).migrate
|
||||
Migrator.new(:down, selected_migrations, schema_migration, internal_metadata, target_version).migrate
|
||||
end
|
||||
|
||||
def run(direction, target_version)
|
||||
Migrator.new(direction, migrations, schema_migration, target_version).run
|
||||
Migrator.new(direction, migrations, schema_migration, internal_metadata, target_version).run
|
||||
end
|
||||
|
||||
def open
|
||||
Migrator.new(:up, migrations, schema_migration)
|
||||
Migrator.new(:up, migrations, schema_migration, internal_metadata)
|
||||
end
|
||||
|
||||
def current_version
|
||||
@@ -510,7 +510,7 @@ module Redmine
|
||||
# Delete migrations that don't match .. to_i will work because the number comes first
|
||||
@all_versions ||= {}
|
||||
@all_versions[plugin.id.to_s] ||= begin
|
||||
sm_table = ::ActiveRecord::SchemaMigration.table_name
|
||||
sm_table = ::ActiveRecord::Base.connection.schema_migration.table_name
|
||||
migration_versions = ActiveRecord::Base.connection.select_values("SELECT version FROM #{sm_table}")
|
||||
versions_by_plugins = migration_versions.group_by {|version| version.match(/-(.*)$/).try(:[], 1)}
|
||||
@all_versions = versions_by_plugins.transform_values! {|versions| versions.map!(&:to_i).sort!}
|
||||
|
||||
84
test/fixtures/issues.yml
vendored
84
test/fixtures/issues.yml
vendored
@@ -1,8 +1,8 @@
|
||||
---
|
||||
issues_001:
|
||||
created_on: <%= 3.days.ago.to_s(:db) %>
|
||||
created_on: <%= 3.days.ago.to_fs(:db) %>
|
||||
project_id: 1
|
||||
updated_on: <%= 1.day.ago.to_s(:db) %>
|
||||
updated_on: <%= 1.day.ago.to_fs(:db) %>
|
||||
priority_id: 4
|
||||
subject: Cannot print recipes
|
||||
id: 1
|
||||
@@ -13,8 +13,8 @@ issues_001:
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||
due_date: <%= 10.day.from_now.to_date.to_s(:db) %>
|
||||
start_date: <%= 1.day.ago.to_date.to_fs(:db) %>
|
||||
due_date: <%= 10.day.from_now.to_date.to_fs(:db) %>
|
||||
estimated_hours: 200.0
|
||||
root_id: 1
|
||||
lft: 1
|
||||
@@ -34,7 +34,7 @@ issues_002:
|
||||
assigned_to_id: 3
|
||||
author_id: 2
|
||||
status_id: 2
|
||||
start_date: <%= 2.day.ago.to_date.to_s(:db) %>
|
||||
start_date: <%= 2.day.ago.to_date.to_fs(:db) %>
|
||||
due_date:
|
||||
estimated_hours: 0.5
|
||||
root_id: 2
|
||||
@@ -56,16 +56,16 @@ issues_003:
|
||||
assigned_to_id: 3
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= 15.day.ago.to_date.to_s(:db) %>
|
||||
due_date: <%= 5.day.ago.to_date.to_s(:db) %>
|
||||
start_date: <%= 15.day.ago.to_date.to_fs(:db) %>
|
||||
due_date: <%= 5.day.ago.to_date.to_fs(:db) %>
|
||||
estimated_hours: 1.0
|
||||
root_id: 3
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_004:
|
||||
created_on: <%= 5.days.ago.to_s(:db) %>
|
||||
created_on: <%= 5.days.ago.to_fs(:db) %>
|
||||
project_id: 2
|
||||
updated_on: <%= 2.days.ago.to_s(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_fs(:db) %>
|
||||
priority_id: 4
|
||||
subject: Issue on project 2
|
||||
id: 4
|
||||
@@ -80,9 +80,9 @@ issues_004:
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_005:
|
||||
created_on: <%= 5.days.ago.to_s(:db) %>
|
||||
created_on: <%= 5.days.ago.to_fs(:db) %>
|
||||
project_id: 3
|
||||
updated_on: <%= 2.days.ago.to_s(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_fs(:db) %>
|
||||
priority_id: 4
|
||||
subject: Subproject issue
|
||||
id: 5
|
||||
@@ -98,9 +98,9 @@ issues_005:
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_006:
|
||||
created_on: <%= 1.minute.ago.to_s(:db) %>
|
||||
created_on: <%= 1.minute.ago.to_fs(:db) %>
|
||||
project_id: 5
|
||||
updated_on: <%= 1.minute.ago.to_s(:db) %>
|
||||
updated_on: <%= 1.minute.ago.to_fs(:db) %>
|
||||
priority_id: 4
|
||||
subject: Issue of a private subproject
|
||||
id: 6
|
||||
@@ -111,15 +111,15 @@ issues_006:
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= Date.today.to_s(:db) %>
|
||||
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
||||
start_date: <%= Date.today.to_fs(:db) %>
|
||||
due_date: <%= 1.days.from_now.to_date.to_fs(:db) %>
|
||||
root_id: 6
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_007:
|
||||
created_on: <%= 10.days.ago.to_s(:db) %>
|
||||
created_on: <%= 10.days.ago.to_fs(:db) %>
|
||||
project_id: 1
|
||||
updated_on: <%= 10.days.ago.to_s(:db) %>
|
||||
updated_on: <%= 10.days.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Issue due today
|
||||
id: 7
|
||||
@@ -130,16 +130,16 @@ issues_007:
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= 10.days.ago.to_s(:db) %>
|
||||
due_date: <%= Date.today.to_s(:db) %>
|
||||
start_date: <%= 10.days.ago.to_fs(:db) %>
|
||||
due_date: <%= Date.today.to_fs(:db) %>
|
||||
lock_version: 0
|
||||
root_id: 7
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_008:
|
||||
created_on: <%= 10.days.ago.to_s(:db) %>
|
||||
created_on: <%= 10.days.ago.to_fs(:db) %>
|
||||
project_id: 1
|
||||
updated_on: <%= 10.days.ago.to_s(:db) %>
|
||||
updated_on: <%= 10.days.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Closed issue
|
||||
id: 8
|
||||
@@ -156,11 +156,11 @@ issues_008:
|
||||
root_id: 8
|
||||
lft: 1
|
||||
rgt: 2
|
||||
closed_on: <%= 3.days.ago.to_s(:db) %>
|
||||
closed_on: <%= 3.days.ago.to_fs(:db) %>
|
||||
issues_009:
|
||||
created_on: <%= 1.minute.ago.to_s(:db) %>
|
||||
created_on: <%= 1.minute.ago.to_fs(:db) %>
|
||||
project_id: 5
|
||||
updated_on: <%= 1.minute.ago.to_s(:db) %>
|
||||
updated_on: <%= 1.minute.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Blocked Issue
|
||||
id: 9
|
||||
@@ -171,15 +171,15 @@ issues_009:
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= Date.today.to_s(:db) %>
|
||||
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
||||
start_date: <%= Date.today.to_fs(:db) %>
|
||||
due_date: <%= 1.days.from_now.to_date.to_fs(:db) %>
|
||||
root_id: 9
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_010:
|
||||
created_on: <%= 1.minute.ago.to_s(:db) %>
|
||||
created_on: <%= 1.minute.ago.to_fs(:db) %>
|
||||
project_id: 5
|
||||
updated_on: <%= 1.minute.ago.to_s(:db) %>
|
||||
updated_on: <%= 1.minute.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Issue Doing the Blocking
|
||||
id: 10
|
||||
@@ -190,15 +190,15 @@ issues_010:
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 1
|
||||
start_date: <%= Date.today.to_s(:db) %>
|
||||
due_date: <%= 1.days.from_now.to_date.to_s(:db) %>
|
||||
start_date: <%= Date.today.to_fs(:db) %>
|
||||
due_date: <%= 1.days.from_now.to_date.to_fs(:db) %>
|
||||
root_id: 10
|
||||
lft: 1
|
||||
rgt: 2
|
||||
issues_011:
|
||||
created_on: <%= 3.days.ago.to_s(:db) %>
|
||||
created_on: <%= 3.days.ago.to_fs(:db) %>
|
||||
project_id: 1
|
||||
updated_on: <%= 1.day.ago.to_s(:db) %>
|
||||
updated_on: <%= 1.day.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Closed issue on a closed version
|
||||
id: 11
|
||||
@@ -209,16 +209,16 @@ issues_011:
|
||||
assigned_to_id:
|
||||
author_id: 2
|
||||
status_id: 5
|
||||
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||
start_date: <%= 1.day.ago.to_date.to_fs(:db) %>
|
||||
due_date:
|
||||
root_id: 11
|
||||
lft: 1
|
||||
rgt: 2
|
||||
closed_on: <%= 1.day.ago.to_s(:db) %>
|
||||
closed_on: <%= 1.day.ago.to_fs(:db) %>
|
||||
issues_012:
|
||||
created_on: <%= 3.days.ago.to_s(:db) %>
|
||||
created_on: <%= 3.days.ago.to_fs(:db) %>
|
||||
project_id: 1
|
||||
updated_on: <%= 1.day.ago.to_s(:db) %>
|
||||
updated_on: <%= 1.day.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Closed issue on a locked version
|
||||
id: 12
|
||||
@@ -229,16 +229,16 @@ issues_012:
|
||||
assigned_to_id:
|
||||
author_id: 3
|
||||
status_id: 5
|
||||
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||
start_date: <%= 1.day.ago.to_date.to_fs(:db) %>
|
||||
due_date:
|
||||
root_id: 12
|
||||
lft: 1
|
||||
rgt: 2
|
||||
closed_on: <%= 1.day.ago.to_s(:db) %>
|
||||
closed_on: <%= 1.day.ago.to_fs(:db) %>
|
||||
issues_013:
|
||||
created_on: <%= 5.days.ago.to_s(:db) %>
|
||||
created_on: <%= 5.days.ago.to_fs(:db) %>
|
||||
project_id: 3
|
||||
updated_on: <%= 2.days.ago.to_s(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_fs(:db) %>
|
||||
priority_id: 4
|
||||
subject: Subproject issue two
|
||||
id: 13
|
||||
@@ -254,9 +254,9 @@ issues_013:
|
||||
rgt: 2
|
||||
issues_014:
|
||||
id: 14
|
||||
created_on: <%= 15.days.ago.to_s(:db) %>
|
||||
created_on: <%= 15.days.ago.to_fs(:db) %>
|
||||
project_id: 3
|
||||
updated_on: <%= 15.days.ago.to_s(:db) %>
|
||||
updated_on: <%= 15.days.ago.to_fs(:db) %>
|
||||
priority_id: 5
|
||||
subject: Private issue on public project
|
||||
fixed_version_id:
|
||||
|
||||
20
test/fixtures/journals.yml
vendored
20
test/fixtures/journals.yml
vendored
@@ -1,7 +1,7 @@
|
||||
---
|
||||
journals_001:
|
||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 2.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
notes: "Journal notes"
|
||||
id: 1
|
||||
journalized_type: Issue
|
||||
@@ -9,24 +9,24 @@ journals_001:
|
||||
journalized_id: 1
|
||||
updated_by_id: 1
|
||||
journals_002:
|
||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
notes: "Some notes with Redmine links: #2, r2."
|
||||
id: 2
|
||||
journalized_type: Issue
|
||||
user_id: 2
|
||||
journalized_id: 1
|
||||
journals_003:
|
||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
notes: "A comment with inline image: !picture.jpg! and a reference to #1 and r2."
|
||||
id: 3
|
||||
journalized_type: Issue
|
||||
user_id: 2
|
||||
journalized_id: 2
|
||||
journals_004:
|
||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
notes: "A comment with a private version."
|
||||
id: 4
|
||||
journalized_type: Issue
|
||||
@@ -34,8 +34,8 @@ journals_004:
|
||||
journalized_id: 6
|
||||
journals_005:
|
||||
id: 5
|
||||
created_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 1.days.ago.to_date.to_fs(:db) %>
|
||||
notes: "A comment on a private issue."
|
||||
user_id: 2
|
||||
journalized_type: Issue
|
||||
|
||||
12
test/fixtures/messages.yml
vendored
12
test/fixtures/messages.yml
vendored
@@ -45,8 +45,8 @@ messages_004:
|
||||
parent_id:
|
||||
board_id: 1
|
||||
messages_005:
|
||||
created_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 3.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 3.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 3.days.ago.to_date.to_fs(:db) %>
|
||||
subject: 'RE: post 2'
|
||||
id: 5
|
||||
replies_count: 0
|
||||
@@ -56,8 +56,8 @@ messages_005:
|
||||
parent_id: 4
|
||||
board_id: 1
|
||||
messages_006:
|
||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 2.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_date.to_fs(:db) %>
|
||||
subject: 'RE: post 2'
|
||||
id: 6
|
||||
replies_count: 0
|
||||
@@ -67,8 +67,8 @@ messages_006:
|
||||
parent_id: 4
|
||||
board_id: 1
|
||||
messages_007:
|
||||
created_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_date.to_s(:db) %>
|
||||
created_on: <%= 2.days.ago.to_date.to_fs(:db) %>
|
||||
updated_on: <%= 2.days.ago.to_date.to_fs(:db) %>
|
||||
subject: 'Message on a private project'
|
||||
id: 7
|
||||
replies_count: 0
|
||||
|
||||
2
test/fixtures/versions.yml
vendored
2
test/fixtures/versions.yml
vendored
@@ -16,7 +16,7 @@ versions_002:
|
||||
updated_on: 2006-07-19 21:00:33 +02:00
|
||||
id: 2
|
||||
description: Stable release
|
||||
effective_date: <%= 20.day.from_now.to_date.to_s(:db) %>
|
||||
effective_date: <%= 20.day.from_now.to_date.to_fs(:db) %>
|
||||
status: locked
|
||||
sharing: 'none'
|
||||
wiki_page_title: ECookBookV1
|
||||
|
||||
@@ -48,8 +48,8 @@ class LayoutTest < Redmine::IntegrationTest
|
||||
def test_top_menu_and_search_not_visible_when_login_required
|
||||
with_settings :login_required => '1' do
|
||||
get '/'
|
||||
assert_select "#top-menu > ul", 0
|
||||
assert_select "#quick-search", 0
|
||||
|
||||
assert_equal response.status, 302
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1549,13 +1549,13 @@ class QueryTest < ActiveSupport::TestCase
|
||||
query = IssueQuery.new(:name => '_')
|
||||
filter_name = "fixed_version.due_date"
|
||||
assert_include filter_name, query.available_filters.keys
|
||||
query.filters = {filter_name => {:operator => '=', :values => [20.day.from_now.to_date.to_s(:db)]}}
|
||||
query.filters = {filter_name => {:operator => '=', :values => [20.day.from_now.to_date.to_fs(:db)]}}
|
||||
issues = find_issues_with_query(query)
|
||||
assert_equal [2], issues.map(&:fixed_version_id).uniq.sort
|
||||
assert_equal [2, 12], issues.map(&:id).sort
|
||||
|
||||
query = IssueQuery.new(:name => '_')
|
||||
query.filters = {filter_name => {:operator => '>=', :values => [21.day.from_now.to_date.to_s(:db)]}}
|
||||
query.filters = {filter_name => {:operator => '>=', :values => [21.day.from_now.to_date.to_fs(:db)]}}
|
||||
assert_equal 0, find_issues_with_query(query).size
|
||||
end
|
||||
|
||||
@@ -2962,7 +2962,7 @@ class QueryTest < ActiveSupport::TestCase
|
||||
User.current.pref.update_attribute :time_zone, 'Hawaii'
|
||||
|
||||
# assume timestamps are stored as utc
|
||||
ActiveRecord::Base.default_timezone = :utc
|
||||
ActiveRecord.default_timezone = :utc
|
||||
|
||||
from = Date.parse '2016-03-20'
|
||||
to = Date.parse '2016-03-22'
|
||||
@@ -2973,7 +2973,7 @@ class QueryTest < ActiveSupport::TestCase
|
||||
t = Time.new(2016, 3, 23, 9, 59, 59, 0).end_of_hour
|
||||
assert_equal "table.field > '#{Query.connection.quoted_date f}' AND table.field <= '#{Query.connection.quoted_date t}'", c
|
||||
ensure
|
||||
ActiveRecord::Base.default_timezone = :local # restore Redmine default
|
||||
ActiveRecord.default_timezone = :local # restore Redmine default
|
||||
end
|
||||
|
||||
def test_project_statement_with_closed_subprojects
|
||||
|
||||
@@ -209,7 +209,7 @@ class UserQueryTest < ActiveSupport::TestCase
|
||||
users = q.results_scope
|
||||
|
||||
assert_equal 2, users.size
|
||||
assert_equal [2, 1], users.ids
|
||||
assert_equal [2, 1], users.pluck(:id)
|
||||
end
|
||||
|
||||
def find_users_with_query(query)
|
||||
|
||||
Reference in New Issue
Block a user