Redmine 4.1.1

This commit is contained in:
Manuel Cillero 2020-11-22 21:20:06 +01:00
parent 33e7b881a5
commit 3d976f1b3b
1593 changed files with 36180 additions and 19489 deletions

View file

@ -1,5 +1,7 @@
# frozen_string_literal: true
# Redmine - project management software
# Copyright (C) 2006-2017 Jean-Philippe Lang
# Copyright (C) 2006-2019 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -25,7 +27,8 @@ class TimeEntryQueryTest < ActiveSupport::TestCase
:journals, :journal_details,
:issue_categories, :enumerations,
:groups_users,
:enabled_modules
:enabled_modules,
:custom_fields, :custom_fields_trackers, :custom_fields_projects
def setup
User.current = nil
@ -38,7 +41,7 @@ class TimeEntryQueryTest < ActiveSupport::TestCase
q.available_filters.each do |name, filter|
values = filter.values
assert (values.nil? || values.is_a?(Array)),
"#values for #{name} filter returned a #{values.class.name}"
"#values for #{name} filter returned a #{values.class.name}"
end
end
@ -49,7 +52,7 @@ class TimeEntryQueryTest < ActiveSupport::TestCase
q.available_filters.each do |name, filter|
values = filter.values
assert (values.nil? || values.is_a?(Array)),
"#values for #{name} filter returned a #{values.class.name}"
"#values for #{name} filter returned a #{values.class.name}"
end
end
@ -106,4 +109,39 @@ class TimeEntryQueryTest < ActiveSupport::TestCase
assert_include "issue.cf_#{field_on_project.id}", query.available_columns.map(&:name).map(&:to_s)
assert_not_include "issue.cf_#{field_not_on_project.id}", query.available_columns.map(&:name).map(&:to_s)
end
def test_issue_category_filter_should_not_be_available_in_global_queries
query = TimeEntryQuery.new(:project => nil, :name => '_')
assert !query.available_filters.has_key?('issue.category_id')
end
def test_project_status_filter_should_be_available_in_global_queries
query = TimeEntryQuery.new(:project => nil, :name => '_')
assert query.available_filters.has_key?('project.status')
end
def test_project_status_filter_should_be_available_when_project_has_subprojects
query = TimeEntryQuery.new(:project => Project.find(1), :name => '_')
assert query.available_filters.has_key?('project.status')
end
def test_project_status_filter_should_not_be_available_when_project_is_leaf
query = TimeEntryQuery.new(:project => Project.find(2), :name => '_')
assert !query.available_filters.has_key?('project.status')
end
def test_results_scope_should_be_in_the_same_order_when_paginating
4.times { TimeEntry.generate! }
q = TimeEntryQuery.new
q.sort_criteria = {'0' => ['user', 'asc']}
time_entry_ids = q.results_scope.pluck(:id)
paginated_time_entry_ids = []
# Test with a maximum of 2 records per page.
((q.results_scope.count / 2) + 1).times do |i|
paginated_time_entry_ids += q.results_scope.offset((i * 2)).limit(2).pluck(:id)
end
# Non-paginated time entry ids and paginated time entry ids should be in the same order.
assert_equal time_entry_ids, paginated_time_entry_ids
end
end