##// END OF EJS Templates
Replace Date.today with User.current.today (#22320)....
Replace Date.today with User.current.today (#22320). Depending on the offset between a user's configured timezone and the server timezone, Date.today may be more or less often wrong from the user's perspective, leading to things like issues marked as overdue too early or too late, or yesterday / tomorrow being displayed / selected where 'today' is intended. A test case illustrating the problem with Issue#overdue? is included Patch by Jens Kraemer. git-svn-id: http://svn.redmine.org/redmine/trunk@15379 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14953:64afa24a7f72
r14997:ed50d42210ea
Show More
object_helpers.rb
276 lines | 8.1 KiB | text/x-ruby | RubyLexer
/ test / object_helpers.rb
Jean-Philippe Lang
Renamed object_daddy_helper and removed exemplars....
r9336 module ObjectHelpers
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 def User.generate!(attributes={})
@generated_user_login ||= 'user0'
@generated_user_login.succ!
user = User.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 user.login = @generated_user_login.dup if user.login.blank?
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 user.mail = "#{@generated_user_login}@example.com" if user.mail.blank?
user.firstname = "Bob" if user.firstname.blank?
user.lastname = "Doe" if user.lastname.blank?
yield user if block_given?
user.save!
user
end
Jean-Philippe Lang
MailHandler: Match assignee on the full display name (#11552)....
r10053 def User.add_to_project(user, project, roles=nil)
roles = Role.find(1) if roles.nil?
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 roles = [roles] if roles.is_a?(Role)
Jean-Philippe Lang
Methods moved....
r9339 Member.create!(:principal => user, :project => project, :roles => roles)
end
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 def Group.generate!(attributes={})
@generated_group_name ||= 'Group 0'
@generated_group_name.succ!
group = Group.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 group.name = @generated_group_name.dup if group.name.blank?
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 yield group if block_given?
group.save!
group
end
def Project.generate!(attributes={})
@generated_project_identifier ||= 'project-0000'
@generated_project_identifier.succ!
project = Project.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 project.name = @generated_project_identifier.dup if project.name.blank?
project.identifier = @generated_project_identifier.dup if project.identifier.blank?
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 yield project if block_given?
project.save!
project
end
Jean-Philippe Lang
Error message when editing a child project without add project/subprojects permissions (#20282)....
r14237 def Project.generate_with_parent!(*args)
attributes = args.last.is_a?(Hash) ? args.pop : {}
parent = args.size > 0 ? args.first : Project.generate!
Jean-Philippe Lang
Cleans up parent project assignment in ProjectsController....
r13465 project = Project.generate!(attributes) do |p|
p.parent = parent
end
parent.reload if parent
Jean-Philippe Lang
Optionaly inherit members from parent project (#5605)....
r11068 project
end
Jean-Philippe Lang
Default status per tracker (#5991)....
r13153 def IssueStatus.generate!(attributes={})
@generated_status_name ||= 'Status 0'
@generated_status_name.succ!
status = IssueStatus.new(attributes)
status.name = @generated_status_name.dup if status.name.blank?
yield status if block_given?
status.save!
status
end
Jean-Philippe Lang
Replaces acts_as_list with an implementation that handles #position= (#12909)....
r14953 def Tracker.generate(attributes={})
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 @generated_tracker_name ||= 'Tracker 0'
@generated_tracker_name.succ!
tracker = Tracker.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 tracker.name = @generated_tracker_name.dup if tracker.name.blank?
Jean-Philippe Lang
Default status per tracker (#5991)....
r13153 tracker.default_status ||= IssueStatus.order('position').first || IssueStatus.generate!
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 yield tracker if block_given?
Jean-Philippe Lang
Replaces acts_as_list with an implementation that handles #position= (#12909)....
r14953 tracker
end
def Tracker.generate!(attributes={}, &block)
tracker = Tracker.generate(attributes, &block)
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 tracker.save!
tracker
end
def Role.generate!(attributes={})
@generated_role_name ||= 'Role 0'
@generated_role_name.succ!
role = Role.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 role.name = @generated_role_name.dup if role.name.blank?
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 yield role if block_given?
role.save!
role
end
Jean-Philippe Lang
Don't validate start date when updating an issue without changing it (#14086)....
r11701 # Generates an unsaved Issue
def Issue.generate(attributes={})
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 issue = Issue.new(attributes)
Jean-Philippe Lang
Remove Issue.generate_for_project! test helper and use Issue.generate! instead....
r10400 issue.project ||= Project.find(1)
issue.tracker ||= issue.project.trackers.first
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 issue.subject = 'Generated' if issue.subject.blank?
issue.author ||= User.find(2)
yield issue if block_given?
Jean-Philippe Lang
Don't validate start date when updating an issue without changing it (#14086)....
r11701 issue
end
# Generates a saved Issue
def Issue.generate!(attributes={}, &block)
issue = Issue.generate(attributes, &block)
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 issue.save!
issue
end
Jean-Philippe Lang
Makes Issue.generate_with_descendants! helper accept attributes only....
r10401 # Generates an issue with 2 children and a grandchild
def Issue.generate_with_descendants!(attributes={})
issue = Issue.generate!(attributes)
child = Issue.generate!(:project => issue.project, :subject => 'Child1', :parent_issue_id => issue.id)
Issue.generate!(:project => issue.project, :subject => 'Child2', :parent_issue_id => issue.id)
Issue.generate!(:project => issue.project, :subject => 'Child11', :parent_issue_id => child.id)
Jean-Philippe Lang
Option to copy subtasks when copying issue(s) (#6965)....
r10144 issue.reload
end
Jean-Philippe Lang
Adds settings to control start/due dates and priority on parent tasks (#5490)....
r13887 def Issue.generate_with_child!(attributes={})
issue = Issue.generate!(attributes)
Issue.generate!(:parent_issue_id => issue.id)
issue.reload
end
Jean-Philippe Lang
Private issue notes (#1554)....
r10336 def Journal.generate!(attributes={})
journal = Journal.new(attributes)
journal.user ||= User.first
journal.journalized ||= Issue.first
yield journal if block_given?
journal.save!
journal
end
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 def Version.generate!(attributes={})
@generated_version_name ||= 'Version 0'
@generated_version_name.succ!
version = Version.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 version.name = @generated_version_name.dup if version.name.blank?
Jean-Philippe Lang
Disallow users to delete a version referenced by a custom field (#20159)....
r13994 version.project ||= Project.find(1)
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 yield version if block_given?
version.save!
version
end
Jean-Philippe Lang
Adds issue custom fields to time entries filters (#10191)....
r10941 def TimeEntry.generate!(attributes={})
entry = TimeEntry.new(attributes)
entry.user ||= User.find(2)
Jean-Philippe Lang
Fixed that deleting a system activity with children in use raises an error (#13783)....
r11533 entry.issue ||= Issue.find(1) unless entry.project
Jean-Philippe Lang
Adds issue custom fields to time entries filters (#10191)....
r10941 entry.project ||= entry.issue.project
entry.activity ||= TimeEntryActivity.first
entry.spent_on ||= Date.today
Jean-Philippe Lang
Fixed that deleting a system activity with children in use raises an error (#13783)....
r11533 entry.hours ||= 1.0
Jean-Philippe Lang
Adds issue custom fields to time entries filters (#10191)....
r10941 entry.save!
entry
end
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 def AuthSource.generate!(attributes={})
@generated_auth_source_name ||= 'Auth 0'
@generated_auth_source_name.succ!
source = AuthSource.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 source.name = @generated_auth_source_name.dup if source.name.blank?
Jean-Philippe Lang
Removed object_daddy dependency....
r9335 yield source if block_given?
source.save!
source
Eric Davis
Added a "Member of Role" to the issues filters. #5869...
r3964 end
Jean-Philippe Lang
Support for subforums (#3831)....
r9959
def Board.generate!(attributes={})
@generated_board_name ||= 'Forum 0'
@generated_board_name.succ!
board = Board.new(attributes)
Jean-Philippe Lang
Dup generated attributes....
r11092 board.name = @generated_board_name.dup if board.name.blank?
board.description = @generated_board_name.dup if board.description.blank?
Jean-Philippe Lang
Support for subforums (#3831)....
r9959 yield board if block_given?
board.save!
board
end
Jean-Philippe Lang
Link to attachment should return latest attachment (#7510)....
r10966
def Attachment.generate!(attributes={})
@generated_filename ||= 'testfile0'
@generated_filename.succ!
attributes = attributes.dup
attachment = Attachment.new(attributes)
attachment.container ||= Issue.find(1)
attachment.author ||= User.find(2)
Jean-Philippe Lang
Dup generated attributes....
r11092 attachment.filename = @generated_filename.dup if attachment.filename.blank?
Jean-Philippe Lang
Link to attachment should return latest attachment (#7510)....
r10966 attachment.save!
attachment
end
Jean-Philippe Lang
Fixed: Unable to set custom fields for versions using the REST API (#13850)....
r11530
def CustomField.generate!(attributes={})
@generated_custom_field_name ||= 'Custom field 0'
@generated_custom_field_name.succ!
field = new(attributes)
field.name = @generated_custom_field_name.dup if field.name.blank?
field.field_format = 'string' if field.field_format.blank?
yield field if block_given?
field.save!
field
end
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978
Jean-Philippe Lang
Adds tests for default custom field value (#21074)....
r14386 def IssueCustomField.generate!(attributes={})
super do |field|
field.is_for_all = true unless attributes.key?(:is_for_all)
field.tracker_ids = Tracker.all.ids unless attributes.key?(:tracker_ids) || attributes.key?(:trackers)
end
end
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 def Changeset.generate!(attributes={})
@generated_changeset_rev ||= '123456'
@generated_changeset_rev.succ!
changeset = new(attributes)
changeset.repository ||= Project.find(1).repository
changeset.revision ||= @generated_changeset_rev
changeset.committed_on ||= Time.now
yield changeset if block_given?
changeset.save!
changeset
end
Jean-Philippe Lang
Restores commits reverted when rails-4.1 branch was merged (#18174)....
r13122
def Query.generate!(attributes={})
query = new(attributes)
query.name = "Generated query" if query.name.blank?
query.user ||= User.find(1)
query.save!
query
end
Jean-Philippe Lang
Import issues from CSV file (#950)....
r14111
def generate_import(fixture_name='import_issues.csv')
import = IssueImport.new
import.user_id = 2
import.file = uploaded_test_file(fixture_name, 'text/csv')
import.save!
import
end
def generate_import_with_mapping(fixture_name='import_issues.csv')
import = generate_import(fixture_name)
import.settings = {
'separator' => ";", 'wrapper' => '"', 'encoding' => "UTF-8",
'mapping' => {'project_id' => '1', 'tracker_id' => '2', 'subject' => '1'}
}
import.save!
import
end
Eric Davis
Moved object daddy helpers to their own module....
r2824 end
Jean-Philippe Lang
Adds some test helpers to cleanup tests....
r12471
Jean-Philippe Lang
Default status per tracker (#5991)....
r13153 module TrackerObjectHelpers
def generate_transitions!(*args)
options = args.last.is_a?(Hash) ? args.pop : {}
if args.size == 1
args << args.first
end
if options[:clear]
WorkflowTransition.where(:tracker_id => id).delete_all
end
args.each_cons(2) do |old_status_id, new_status_id|
WorkflowTransition.create!(
:tracker => self,
:role_id => (options[:role_id] || 1),
:old_status_id => old_status_id,
:new_status_id => new_status_id
)
end
end
end
Tracker.send :include, TrackerObjectHelpers
Jean-Philippe Lang
Adds some test helpers to cleanup tests....
r12471 module IssueObjectHelpers
def close!
self.status = IssueStatus.where(:is_closed => true).first
save!
end
def generate_child!(attributes={})
Issue.generate!(attributes.merge(:parent_issue_id => self.id))
end
end
Issue.send :include, IssueObjectHelpers