class Project < ActiveRecord::Base
generator_for :name, :method => :next_name
generator_for :identifier, :method => :next_identifier_from_object_daddy
-
+ generator_for :enabled_modules, :method => :all_modules
+ generator_for :trackers, :method => :next_tracker
+
def self.next_name
@last_name ||= 'Project 0'
@last_name.succ!
@last_identifier.succ!
@last_identifier
end
+
+ def self.all_modules
+ returning [] do |modules|
+ Redmine::AccessControl.available_project_modules.each do |name|
+ modules << EnabledModule.new(:name => name.to_s)
+ end
+ end
+ end
+
+ def self.next_tracker
+ [Tracker.generate!]
+ end
end
--- /dev/null
+class Query < ActiveRecord::Base
+ generator_for :name, :method => :next_name
+
+ def self.next_name
+ @last_name ||= 'Query 0'
+ @last_name.succ!
+ @last_name
+ end
+end
user
end
+# Generate the default Query
+def Query.generate_default!(attributes={})
+ query = Query.spawn(attributes)
+ query.name ||= '_'
+ query.save!
+ query
+end
+
+# Generate an issue for a project, using it's trackers
+def Issue.generate_for_project!(project, attributes={})
+ issue = Issue.spawn(attributes) do |issue|
+ issue.project = project
+ end
+ issue.tracker = project.trackers.first unless project.trackers.empty?
+ issue.save!
+ issue
+end
+
class ActiveSupport::TestCase
# Transactional fixtures accelerate your tests by wrapping each test method
# in a transaction that's rolled back on completion. This ensures that the