diff options
author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-26 11:21:17 -0700 |
---|---|---|
committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-26 15:37:52 -0700 |
commit | 728e3b4047a55ead0f5fbb3bc57095b2b273352b (patch) | |
tree | 70374ac76c55b07a330ffdd8b90b618c8eaa30f7 /railties | |
parent | 2865421f5d77170c1ff39013d9d4efbc98526e74 (diff) | |
download | rails-728e3b4047a55ead0f5fbb3bc57095b2b273352b.tar.gz rails-728e3b4047a55ead0f5fbb3bc57095b2b273352b.tar.bz2 rails-728e3b4047a55ead0f5fbb3bc57095b2b273352b.zip |
Simple initial Paths impl
Diffstat (limited to 'railties')
-rw-r--r-- | railties/test/paths_test.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/railties/test/paths_test.rb b/railties/test/paths_test.rb new file mode 100644 index 0000000000..0da31b467a --- /dev/null +++ b/railties/test/paths_test.rb @@ -0,0 +1,68 @@ +require 'abstract_unit' + +module Rails + class Application + class Path + attr_accessor :path, :root #, :glob, :load_once, :eager + + def initialize(path, root = nil) + @children = {} + @path = path + @root = root || self + end + + def method_missing(id, *args) + name = id.to_s + + if name =~ /^(.*)=$/ + @children[$1] = Path.new(args.first, @root) + elsif path = @children[name] + path + else + super + end + end + + def path + @path.index('/') == 0 ? @path : File.join(@root.path, @path) + end + + alias to_s path + end + end +end + +class PathsTest < ActiveSupport::TestCase + + def setup + @root = Rails::Application::Path.new("/foo/bar") + end + + test "the paths object is initialized with the root path" do + root = Rails::Application::Path.new("/fiz/baz") + assert_equal "/fiz/baz", root.to_s + end + + test "creating a root level path" do + @root.app = "/foo/bar" + assert_equal "/foo/bar", @root.app.to_s + end + + test "relative paths are relative to the paths root" do + @root.app = "app" + assert_equal "/foo/bar/app", @root.app.to_s + end + + test "creating a child level path" do + @root.app = "/foo/bar" + @root.app.models = "/foo/bar/baz" + assert_equal "/foo/bar/baz", @root.app.models.to_s + end + + test "child level paths are relative from the root" do + @root.app = "/app" + @root.app.models = "baz" + + assert_equal "/foo/bar/baz", @root.app.models.to_s + end +end
\ No newline at end of file |