--- /dev/null
+class Attachment < ActiveRecord::Base
+ generator_for :container, :method => :generate_project
+ generator_for :file, :method => :generate_file
+ generator_for :author, :method => :generate_author
+
+ def self.generate_project
+ Project.generate!
+ end
+
+ def self.generate_author
+ User.generate_with_protected!
+ end
+
+ def self.generate_file
+ @file = 'a_file.png'
+ @file.stubs(:original_filename).returns('a_file.png')
+ @file.stubs(:content_type).returns('image/png')
+ @file.stubs(:read).returns(false)
+ @file
+ end
+end
--- /dev/null
+class AuthSource < ActiveRecord::Base
+ generator_for :name, :method => :next_name
+
+ def self.next_name
+ @last_name ||= 'Auth0'
+ @last_name.succ!
+ @last_name
+ end
+end
--- /dev/null
+class Board < ActiveRecord::Base
+ generator_for :name, :method => :next_name
+ generator_for :description, :method => :next_description
+ generator_for :project, :method => :generate_project
+
+ def self.next_name
+ @last_name ||= 'A Forum'
+ @last_name.succ!
+ @last_name
+ end
+
+ def self.next_description
+ @last_description ||= 'Some description here'
+ @last_description.succ!
+ @last_description
+ end
+
+ def self.generate_project
+ Project.generate!
+ end
+end
--- /dev/null
+class Change < ActiveRecord::Base
+ generator_for :action => 'A'
+ generator_for :path, :method => :next_path
+ generator_for :changeset, :method => :generate_changeset
+
+ def self.next_path
+ @last_path ||= 'test/dir/aaa0001'
+ @last_path.succ!
+ @last_path
+ end
+
+ def self.generate_changeset
+ Changeset.generate!
+ end
+end
--- /dev/null
+class Changeset < ActiveRecord::Base
+ generator_for :revision, :method => :next_revision
+ generator_for :committed_on => Date.today
+ generator_for :repository, :method => :generate_repository
+
+ def self.next_revision
+ @last_revision ||= '1'
+ @last_revision.succ!
+ @last_revision
+ end
+
+ def self.generate_repository
+ Repository::Subversion.generate!
+ end
+end
--- /dev/null
+class Comment < ActiveRecord::Base
+ generator_for :commented, :method => :generate_news
+ generator_for :author, :method => :generate_author
+ generator_for :comments => 'What great news this is.'
+
+ def self.generate_news
+ News.generate!
+ end
+
+ def self.generate_author
+ User.generate_with_protected!
+ end
+end
class CustomValue < ActiveRecord::Base
+ generator_for :custom_field, :method => :generate_custom_field
+
+ def self.generate_custom_field
+ CustomField.generate!
+ end
end
--- /dev/null
+class Document < ActiveRecord::Base
+ generator_for :title, :method => :next_title
+
+ def self.next_title
+ @last_title ||= 'Document001'
+ @last_title.succ!
+ @last_title
+ end
+end
--- /dev/null
+class EnabledModule < ActiveRecord::Base
+ generator_for :name, :method => :next_name
+
+ def self.next_name
+ @last_name ||= 'module_001'
+ @last_name.succ!
+ @last_name
+ end
+
+end
--- /dev/null
+class Group < Principal
+ generator_for :lastname, :method => :next_lastname
+
+ def self.next_lastname
+ @last_lastname ||= 'Group'
+ @last_lastname.succ!
+ @last_lastname
+ end
+
+end
--- /dev/null
+class IssueCategory < ActiveRecord::Base
+ generator_for :name, :method => :next_name
+
+ def self.next_name
+ @last_name ||= 'Category 0001'
+ @last_name.succ!
+ @last_name
+ end
+end
--- /dev/null
+class Journal < ActiveRecord::Base
+ generator_for :journalized, :method => :generate_issue
+ generator_for :user, :method => :generate_user
+
+ def self.generate_issue
+ project = Project.generate!
+ Issue.generate_for_project!(project)
+ end
+
+ def self.generate_user
+ User.generate_with_protected!
+ end
+end
class Member < ActiveRecord::Base
+ generator_for :roles, :method => :generate_roles
+ generator_for :principal, :method => :generate_user
+
+ def self.generate_roles
+ [Role.generate!]
+ end
+
+ def self.generate_user
+ User.generate_with_protected!
+ end
end
--- /dev/null
+class MemberRole < ActiveRecord::Base
+ generator_for :member, :method => :generate_member
+ generator_for :role, :method => :generate_role
+
+ def self.generate_role
+ Role.generate!
+ end
+
+ def self.generate_member
+ Member.generate!
+ end
+end
--- /dev/null
+class Message < ActiveRecord::Base
+ generator_for :subject, :method => :next_subject
+ generator_for :content, :method => :next_content
+ generator_for :board, :method => :generate_board
+
+ def self.next_subject
+ @last_subject ||= 'A Message'
+ @last_subject.succ!
+ @last_subject
+ end
+
+ def self.next_content
+ @last_content ||= 'Some content here'
+ @last_content.succ!
+ @last_content
+ end
+
+ def self.generate_board
+ Board.generate!
+ end
+end
--- /dev/null
+class News < ActiveRecord::Base
+ generator_for :title, :method => :next_title
+ generator_for :description, :method => :next_description
+
+ def self.next_title
+ @last_title ||= 'A New Item'
+ @last_title.succ!
+ @last_title
+ end
+
+ def self.next_description
+ @last_description ||= 'Some content here'
+ @last_description.succ!
+ @last_description
+ end
+end
--- /dev/null
+class Repository < ActiveRecord::Base
+ generator_for :type => 'Subversion'
+ generator_for :url, :method => :next_url
+
+ def self.next_url
+ @last_url ||= 'file:///test/svn'
+ @last_url.succ!
+ @last_url
+ end
+
+end
--- /dev/null
+class Repository::Subversion < Repository
+ generator_for :type, :method => 'Subversion'
+ generator_for :url, :method => :next_url
+
+ def self.next_url
+ @last_url ||= 'file:///test/svn'
+ @last_url.succ!
+ @last_url
+ end
+
+end
class TimeEntry < ActiveRecord::Base
generator_for(:spent_on) { Date.today }
generator_for(:hours) { (rand * 10).round(2) } # 0.01 to 9.99
+ generator_for :user, :method => :generate_user
+ def self.generate_user
+ User.generate_with_protected!
+ end
+
end
--- /dev/null
+class Watcher < ActiveRecord::Base
+ generator_for :user, :method => :generate_user
+
+ def self.generate_user
+ User.generate_with_protected!
+ end
+end
--- /dev/null
+class WikiContent < ActiveRecord::Base
+ generator_for :text => 'Some content'
+ generator_for :page, :method => :generate_page
+
+ def self.generate_page
+ WikiPage.generate!
+ end
+end
--- /dev/null
+class Wiki < ActiveRecord::Base
+ generator_for :start_page => 'Start'
+ generator_for :project, :method => :generate_project
+
+ def self.generate_project
+ Project.generate!
+ end
+end
--- /dev/null
+class WikiPage < ActiveRecord::Base
+ generator_for :title, :method => :next_title
+ generator_for :wiki, :method => :generate_wiki
+
+ def self.next_title
+ @last_title ||= 'AWikiPage'
+ @last_title.succ!
+ @last_title
+ end
+
+ def self.generate_wiki
+ Wiki.generate!
+ end
+end
--- /dev/null
+class WikiRedirect < ActiveRecord::Base
+ generator_for :title, :method => :next_title
+ generator_for :redirects_to, :method => :next_redirects_to
+ generator_for :wiki, :method => :generate_wiki
+
+ def self.next_title
+ @last_title ||= 'AWikiPage'
+ @last_title.succ!
+ @last_title
+ end
+
+ def self.next_redirects_to
+ @last_redirect ||= '/a/path/000001'
+ @last_redirect.succ!
+ @last_redirect
+ end
+
+ def self.generate_wiki
+ Wiki.generate!
+ end
+end
module ObjectDaddyHelpers
+ # TODO: The gem or official version of ObjectDaddy doesn't set
+ # protected attributes so they need to be wrapped.
+ def User.generate_with_protected(attributes={})
+ user = User.spawn_with_protected(attributes)
+ user.save
+ user
+ end
+
# TODO: The gem or official version of ObjectDaddy doesn't set
# protected attributes so they need to be wrapped.
def User.generate_with_protected!(attributes={})
+ user = User.spawn_with_protected(attributes)
+ user.save!
+ user
+ end
+
+ # TODO: The gem or official version of ObjectDaddy doesn't set
+ # protected attributes so they need to be wrapped.
+ def User.spawn_with_protected(attributes={})
user = User.spawn(attributes) do |user|
user.login = User.next_login
attributes.each do |attr,v|
user.send("#{attr}=", v)
end
end
- user.save!
user
end