##// END OF EJS Templates
Replaces acts_as_list with an implementation that handles #position= (#12909)....
Replaces acts_as_list with an implementation that handles #position= (#12909). Objects are reordered using the regular attribute writer #position= and AR callbacks. git-svn-id: http://svn.redmine.org/redmine/trunk@15335 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14953:64afa24a7f72
r14953:64afa24a7f72
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