1 require File.dirname(__FILE__) + '/../test_helper'
4 class ExtensionLoaderTest < Test::Unit::TestCase
6 Dependencies.mechanism = :load
7 @config = Radiant::Configuration.new
8 @config.extension_paths = [ "#{TEST_ROOT}/fixtures/extensions" ]
9 @initializer = OpenStruct.new
10 @initializer.configuration = @config
12 @instance = Radiant::ExtensionLoader.instance {|l| l.initializer = @initializer }
13 @instance.instance_variable_set '@all_extension_roots', nil
14 @instance.instance_variable_set '@load_extension_roots', nil
18 Dependencies.mechanism = :require
21 def test_load_all_alphabetically_if_none_specified
22 @config.extensions = [:all]
23 assert_extension_load_order %w{basic overriding load_order_blue load_order_green load_order_red}
26 def test_load_none_if_none_specified
27 @config.extensions = []
28 assert_extension_load_order []
31 def test_only_specified_extensions_loaded
32 @config.extensions = [:basic, :load_order_green]
33 assert_extension_load_order %w{basic load_order_green}
36 def test_specified_extension_load_order_with_all_at_end
37 @config.extensions = [:load_order_green, :all]
38 assert_extension_load_order %w{load_order_green basic overriding load_order_blue load_order_red}
41 def test_specified_extension_load_order_with_all_at_start
42 @config.extensions = [:all, :load_order_blue]
43 assert_extension_load_order %w{basic overriding load_order_green load_order_red load_order_blue}
46 def test_specified_extension_load_order_with_all_in_middle
47 @config.extensions = [:load_order_green, :all, :basic]
48 assert_extension_load_order %w{load_order_green overriding load_order_blue load_order_red basic}
51 def test_error_when_config_extensions_is_not_array
52 @config.extensions = nil
53 assert_raise NoMethodError do
54 @instance.extension_load_paths
59 def assert_extension_load_order(requested_extension_names)
60 extension_paths = @instance.send(:load_extension_roots)
61 extension_names = extension_paths.map {|p| File.basename(p).sub(/^\d+_/,'')}
62 assert_equal requested_extension_names, extension_names