aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/paths_test.rb
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-06-26 11:21:17 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-06-26 15:37:52 -0700
commit728e3b4047a55ead0f5fbb3bc57095b2b273352b (patch)
tree70374ac76c55b07a330ffdd8b90b618c8eaa30f7 /railties/test/paths_test.rb
parent2865421f5d77170c1ff39013d9d4efbc98526e74 (diff)
downloadrails-728e3b4047a55ead0f5fbb3bc57095b2b273352b.tar.gz
rails-728e3b4047a55ead0f5fbb3bc57095b2b273352b.tar.bz2
rails-728e3b4047a55ead0f5fbb3bc57095b2b273352b.zip
Simple initial Paths impl
Diffstat (limited to 'railties/test/paths_test.rb')
-rw-r--r--railties/test/paths_test.rb68
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