object_helpers.rb 4.11 KB
Newer Older
1
module ObjectHelpers
jplang's avatar
jplang committed
2 3 4 5 6 7 8 9 10 11 12 13 14
  def User.generate!(attributes={})
    @generated_user_login ||= 'user0'
    @generated_user_login.succ!
    user = User.new(attributes)
    user.login = @generated_user_login if user.login.blank?
    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

15 16
  def User.add_to_project(user, project, roles=nil)
    roles = Role.find(1) if roles.nil?
jplang's avatar
jplang committed
17 18 19 20
    roles = [roles] unless roles.is_a?(Array)
    Member.create!(:principal => user, :project => project, :roles => roles)
  end

jplang's avatar
jplang committed
21 22 23 24
  def Group.generate!(attributes={})
    @generated_group_name ||= 'Group 0'
    @generated_group_name.succ!
    group = Group.new(attributes)
25
    group.name = @generated_group_name if group.name.blank?
jplang's avatar
jplang committed
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
    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)
    project.name = @generated_project_identifier if project.name.blank?
    project.identifier = @generated_project_identifier if project.identifier.blank?
    yield project if block_given?
    project.save!
    project
  end

  def Tracker.generate!(attributes={})
    @generated_tracker_name ||= 'Tracker 0'
    @generated_tracker_name.succ!
    tracker = Tracker.new(attributes)
    tracker.name = @generated_tracker_name if tracker.name.blank?
    yield tracker if block_given?
    tracker.save!
    tracker
  end

  def Role.generate!(attributes={})
    @generated_role_name ||= 'Role 0'
    @generated_role_name.succ!
    role = Role.new(attributes)
    role.name = @generated_role_name if role.name.blank?
    yield role if block_given?
    role.save!
    role
  end

  def Issue.generate!(attributes={})
    issue = Issue.new(attributes)
    issue.subject = 'Generated' if issue.subject.blank?
    issue.author ||= User.find(2)
    yield issue if block_given?
    issue.save!
    issue
  end

jplang's avatar
jplang committed
71 72 73 74 75 76 77 78 79 80 81 82 83
  # Generate an issue for a project, using its trackers
  def Issue.generate_for_project!(project, attributes={})
    issue = Issue.new(attributes) do |issue|
      issue.project = project
      issue.tracker = project.trackers.first unless project.trackers.empty?
      issue.subject = 'Generated' if issue.subject.blank?
      issue.author ||= User.find(2)
      yield issue if block_given?
    end
    issue.save!
    issue
  end

84 85 86 87 88 89 90 91 92
  # Generates an issue with some children and a grandchild
  def Issue.generate_with_descendants!(project, attributes={})
    issue = Issue.generate_for_project!(project, attributes)
    child = Issue.generate_for_project!(project, :subject => 'Child1', :parent_issue_id => issue.id)
    Issue.generate_for_project!(project, :subject => 'Child2', :parent_issue_id => issue.id)
    Issue.generate_for_project!(project, :subject => 'Child11', :parent_issue_id => child.id)
    issue.reload
  end

jplang's avatar
jplang committed
93 94 95 96 97 98 99 100 101
  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

jplang's avatar
jplang committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
  def Version.generate!(attributes={})
    @generated_version_name ||= 'Version 0'
    @generated_version_name.succ!
    version = Version.new(attributes)
    version.name = @generated_version_name if version.name.blank?
    yield version if block_given?
    version.save!
    version
  end

  def AuthSource.generate!(attributes={})
    @generated_auth_source_name ||= 'Auth 0'
    @generated_auth_source_name.succ!
    source = AuthSource.new(attributes)
    source.name = @generated_auth_source_name if source.name.blank?
    yield source if block_given?
    source.save!
    source
120
  end
jplang's avatar
jplang committed
121 122 123 124 125 126 127 128 129 130 131

  def Board.generate!(attributes={})
    @generated_board_name ||= 'Forum 0'
    @generated_board_name.succ!
    board = Board.new(attributes)
    board.name = @generated_board_name if board.name.blank?
    board.description = @generated_board_name if board.description.blank?
    yield board if block_given?
    board.save!
    board
  end
132
end