summaryrefslogtreecommitdiffstats
path: root/vendor/plugins/engines/test/unit/model_and_lib_test.rb
blob: e5aa773baa880bf936ed9fbe8e50919cd67fcdce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
require File.dirname(__FILE__) + '/../test_helper'

class ModelAndLibTest < Test::Unit::TestCase

 	def test_WITH_a_model_defined_only_in_a_plugin_IT_should_load_the_model
 	  assert_equal 'AlphaPluginModel (from alpha_plugin)', AlphaPluginModel.report_location
  end
  
  def test_WITH_a_model_defined_only_in_a_plugin_lib_dir_IT_should_load_the_model
 	  assert_equal 'AlphaPluginLibModel (from alpha_plugin)', AlphaPluginLibModel.report_location
  end

  # app takes precedence over plugins
	
	def test_WITH_a_model_defined_in_both_app_and_plugin_IT_should_load_the_one_in_app
 	  assert_equal 'AppAndPluginModel (from app)',	AppAndPluginModel.report_location  
 	  assert_raises(NoMethodError) { AppAndPluginLibModel.defined_only_in_alpha_engine_version }
  end
	
	def test_WITH_a_model_defined_in_both_app_and_plugin_lib_dirs_IT_should_load_the_one_in_app
 	  assert_equal 'AppAndPluginLibModel (from lib)', AppAndPluginLibModel.report_location
 	  assert_raises(NoMethodError) { AppAndPluginLibModel.defined_only_in_alpha_engine_version }
  end

  # subsequently loaded plugins take precendence over previously loaded plugins
	
  # TODO
  #
  # this does work when we rely on $LOAD_PATH while it won't work when we use
  # Dependency constant autoloading. This somewhat confusing difference has
  # been there since at least Rails 1.2.x. See http://www.ruby-forum.com/topic/134529
  
  def test_WITH_a_model_defined_in_two_plugins_IT_should_load_the_latter_of_both
    require 'shared_plugin_model'
    assert_equal SharedPluginModel.report_location, 'SharedPluginModel (from beta_plugin)'
  end
end