@@ -363,10 +363,14 class Repository < ActiveRecord::Base | |||
|
363 | 363 | end |
|
364 | 364 | |
|
365 | 365 | def self.factory(klass_name, *args) |
|
366 | klass = "Repository::#{klass_name}".constantize | |
|
367 | klass.new(*args) | |
|
368 | rescue | |
|
369 | nil | |
|
366 | repository_class(klass_name).new(*args) rescue nil | |
|
367 | end | |
|
368 | ||
|
369 | def self.repository_class(class_name) | |
|
370 | class_name = class_name.to_s.classify | |
|
371 | if Redmine::Scm::Base.all.include?(class_name) | |
|
372 | "Repository::#{class_name}".constantize | |
|
373 | end | |
|
370 | 374 | end |
|
371 | 375 | |
|
372 | 376 | def self.scm_adapter_class |
@@ -496,4 +496,18 class RepositoryTest < ActiveSupport::TestCase | |||
|
496 | 496 | Repository::Subversion.any_instance.expects(:fetch_changesets).twice.returns(true) |
|
497 | 497 | Repository.fetch_changesets |
|
498 | 498 | end |
|
499 | ||
|
500 | def test_repository_class | |
|
501 | assert_equal Repository::Subversion, Repository.repository_class('Subversion') | |
|
502 | assert_equal Repository::Git, Repository.repository_class('Git') | |
|
503 | assert_nil Repository.factory('Serializer') | |
|
504 | assert_nil Repository.factory('Query') | |
|
505 | end | |
|
506 | ||
|
507 | def test_factory | |
|
508 | assert_instance_of Repository::Subversion, Repository.factory('Subversion') | |
|
509 | assert_instance_of Repository::Git, Repository.factory('Git') | |
|
510 | assert_nil Repository.factory('Serializer') | |
|
511 | assert_nil Repository.factory('Query') | |
|
512 | end | |
|
499 | 513 | end |
General Comments 0
You need to be logged in to leave comments.
Login now