Merged the Object Daddy exemplars from trunk. r3337, r3340, r3342
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3359 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
1 parent
27fa40d283
commit
76d9d01db0
25 files changed
+310
-1
No files matched your search
@@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
class AuthSource < ActiveRecord::Base
|
||||||
|
generator_for :name, :method => :next_name
|
||||||
|
|
||||||
|
def self.next_name
|
||||||
|
@last_name ||= 'Auth0'
|
||||||
|
@last_name.succ!
|
||||||
|
@last_name
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
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
|
||||||
@@ -1,2 +1,7 @@
|
|||||||
class CustomValue < ActiveRecord::Base
|
class CustomValue < ActiveRecord::Base
|
||||||
|
generator_for :custom_field, :method => :generate_custom_field
|
||||||
|
|
||||||
|
def self.generate_custom_field
|
||||||
|
CustomField.generate!
|
||||||
|
end
|
||||||
end
|
end
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
class Document < ActiveRecord::Base
|
||||||
|
generator_for :title, :method => :next_title
|
||||||
|
|
||||||
|
def self.next_title
|
||||||
|
@last_title ||= 'Document001'
|
||||||
|
@last_title.succ!
|
||||||
|
@last_title
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
class Group < Principal
|
||||||
|
generator_for :lastname, :method => :next_lastname
|
||||||
|
|
||||||
|
def self.next_lastname
|
||||||
|
@last_lastname ||= 'Group'
|
||||||
|
@last_lastname.succ!
|
||||||
|
@last_lastname
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
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
|
||||||
@@ -1,2 +1,12 @@
|
|||||||
class Member < ActiveRecord::Base
|
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
|
end
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
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
|
||||||
@@ -1,5 +1,10 @@
|
|||||||
class TimeEntry < ActiveRecord::Base
|
class TimeEntry < ActiveRecord::Base
|
||||||
generator_for(:spent_on) { Date.today }
|
generator_for(:spent_on) { Date.today }
|
||||||
generator_for(:hours) { (rand * 10).round(2) } # 0.01 to 9.99
|
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
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class Watcher < ActiveRecord::Base
|
||||||
|
generator_for :user, :method => :generate_user
|
||||||
|
|
||||||
|
def self.generate_user
|
||||||
|
User.generate_with_protected!
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
class WikiContent < ActiveRecord::Base
|
||||||
|
generator_for :text => 'Some content'
|
||||||
|
generator_for :page, :method => :generate_page
|
||||||
|
|
||||||
|
def self.generate_page
|
||||||
|
WikiPage.generate!
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
class Wiki < ActiveRecord::Base
|
||||||
|
generator_for :start_page => 'Start'
|
||||||
|
generator_for :project, :method => :generate_project
|
||||||
|
|
||||||
|
def self.generate_project
|
||||||
|
Project.generate!
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
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
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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
|
||||||
@@ -1,14 +1,29 @@
|
|||||||
module ObjectDaddyHelpers
|
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
|
# TODO: The gem or official version of ObjectDaddy doesn't set
|
||||||
# protected attributes so they need to be wrapped.
|
# protected attributes so they need to be wrapped.
|
||||||
def User.generate_with_protected!(attributes={})
|
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 = User.spawn(attributes) do |user|
|
||||||
user.login = User.next_login
|
user.login = User.next_login
|
||||||
attributes.each do |attr,v|
|
attributes.each do |attr,v|
|
||||||
user.send("#{attr}=", v)
|
user.send("#{attr}=", v)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
user.save!
|
|
||||||
user
|
user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user