diff test/object_helpers.rb @ 1526:404aa68d4227

Merge from live branch
author Chris Cannam
date Thu, 11 Sep 2014 12:46:20 +0100
parents dffacf8a6908
children
line wrap: on
line diff
--- a/test/object_helpers.rb	Mon Mar 17 08:57:04 2014 +0000
+++ b/test/object_helpers.rb	Thu Sep 11 12:46:20 2014 +0100
@@ -3,7 +3,7 @@
     @generated_user_login ||= 'user0'
     @generated_user_login.succ!
     user = User.new(attributes)
-    user.login = @generated_user_login if user.login.blank?
+    user.login = @generated_user_login.dup 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?
@@ -22,7 +22,7 @@
     @generated_group_name ||= 'Group 0'
     @generated_group_name.succ!
     group = Group.new(attributes)
-    group.name = @generated_group_name if group.name.blank?
+    group.name = @generated_group_name.dup if group.name.blank?
     yield group if block_given?
     group.save!
     group
@@ -32,18 +32,24 @@
     @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?
+    project.name = @generated_project_identifier.dup if project.name.blank?
+    project.identifier = @generated_project_identifier.dup if project.identifier.blank?
     yield project if block_given?
     project.save!
     project
   end
 
+  def Project.generate_with_parent!(parent, attributes={})
+    project = Project.generate!(attributes)
+    project.set_parent!(parent)
+    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?
+    tracker.name = @generated_tracker_name.dup if tracker.name.blank?
     yield tracker if block_given?
     tracker.save!
     tracker
@@ -53,19 +59,26 @@
     @generated_role_name ||= 'Role 0'
     @generated_role_name.succ!
     role = Role.new(attributes)
-    role.name = @generated_role_name if role.name.blank?
+    role.name = @generated_role_name.dup if role.name.blank?
     yield role if block_given?
     role.save!
     role
   end
 
-  def Issue.generate!(attributes={})
+  # Generates an unsaved Issue
+  def Issue.generate(attributes={})
     issue = Issue.new(attributes)
     issue.project ||= Project.find(1)
     issue.tracker ||= issue.project.trackers.first
     issue.subject = 'Generated' if issue.subject.blank?
     issue.author ||= User.find(2)
     yield issue if block_given?
+    issue
+  end
+
+  # Generates a saved Issue
+  def Issue.generate!(attributes={}, &block)
+    issue = Issue.generate(attributes, &block)
     issue.save!
     issue
   end
@@ -92,17 +105,29 @@
     @generated_version_name ||= 'Version 0'
     @generated_version_name.succ!
     version = Version.new(attributes)
-    version.name = @generated_version_name if version.name.blank?
+    version.name = @generated_version_name.dup if version.name.blank?
     yield version if block_given?
     version.save!
     version
   end
 
+  def TimeEntry.generate!(attributes={})
+    entry = TimeEntry.new(attributes)
+    entry.user ||= User.find(2)
+    entry.issue ||= Issue.find(1) unless entry.project
+    entry.project ||= entry.issue.project
+    entry.activity ||= TimeEntryActivity.first
+    entry.spent_on ||= Date.today
+    entry.hours ||= 1.0
+    entry.save!
+    entry
+  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?
+    source.name = @generated_auth_source_name.dup if source.name.blank?
     yield source if block_given?
     source.save!
     source
@@ -112,8 +137,8 @@
     @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?
+    board.name = @generated_board_name.dup if board.name.blank?
+    board.description = @generated_board_name.dup if board.description.blank?
     yield board if block_given?
     board.save!
     board
@@ -126,8 +151,44 @@
     attachment = Attachment.new(attributes)
     attachment.container ||= Issue.find(1)
     attachment.author ||= User.find(2)
-    attachment.filename = @generated_filename if attachment.filename.blank?
+    attachment.filename = @generated_filename.dup if attachment.filename.blank?
     attachment.save!
     attachment
   end
+
+  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
+
+  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
 end
+
+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